位置: IT常识 - 正文

Three.js一学就会系列:05 加载3D模型(three.js入门指南)

编辑:rootadmin
Three.js一学就会系列:05 加载3D模型 系列文章目录

推荐整理分享Three.js一学就会系列:05 加载3D模型(three.js入门指南),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:three.js bim,three.js 教程,three.js中文教程,three.js webgl,three.js入门指南,three.js 教程,three.js入门指南,three.js入门指南,内容如对您有帮助,希望把文章链接给更多的朋友!

Three.js一学就会系列:01 第一个3D网站 Three.js一学就会系列:02 画线 Three.js一学就会系列:03 炫酷3D划线 Three.js一学就会系列:04 炫酷3D文字

文章目录系列文章目录前言一、核心代码讲解引入插件轨道控制器加载3D文件完整代码效果二、3D模型资源总结前言

最近开始入坑前端3D建站,跟大家一起慢慢深入three.js做网站3D

这篇文章给大家讲下 如何加载一个3D模型

一、核心代码讲解引入插件 import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'Three.js一学就会系列:05 加载3D模型(three.js入门指南)

GLTFLoader : 加载GLTF加载器,glTF(gl传输格式)是一种开放格式的规范 (open format specification), 用于更高效地传输、加载3D内容。该类文件以JSON(.gltf)格式或二进制(.glb)格式提供, 外部文件存储贴图(.jpg、.png)和额外的二进制数据(.bin) OrbitControls : 轨道控制器(OrbitControls)Orbit controls(轨道控制器)可以使得相机围绕目标进行轨道运动。 DRACOLoader : 一个加载器的几何压缩与Draco库。Draco是一个开源库,用于压缩和解压缩3D网格和点云。压缩后的几何图形可以显著变小,代价是在客户端设备上花费额外的解码时间。

轨道控制器this.controls = new OrbitControls(camera, renderer.domElement)this.controls.target = new THREE.Vector3(0, 0, 0)

controls.target:设置控制器的焦点,.object的轨道围绕它运行

加载3D文件const loader = new GLTFLoader()const dracoLoader = new DRACOLoader()dracoLoader.setDecoderPath('https://threejs.org/examples/jsm/libs/draco/')dracoLoader.preload()loader.setDRACOLoader(dracoLoader)loader.load('https://threejs.org/examples/models/gltf/LittlestTokyo.glb', (gltf) => { scene.add(gltf.scene) renderer.render(scene, camera)}, (xhr) => { console.log((xhr.loaded / xhr.total) * 100 + '% loaded')}, (error) => { console.error(error)})

setDecoderPath:设置draco文件地址 loader.load(‘https://threejs.org/examples/models/gltf/LittlestTokyo.glb’) 加载3D模型

完整代码<template> <section> <section id="container"></section> </section></template><script> import * as THREE from 'three' import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader' let camera, scene, renderer export default { data() { return { } }, mounted() { this.init() this.animate() }, methods: { init() { const container = document.getElementById('container') camera = new THREE.PerspectiveCamera(90, container.clientWidth / container.clientHeight, 0.1, 10000) renderer = new THREE.WebGLRenderer({ antialias: true }) camera.position.set(50, 200, 500) scene = new THREE.Scene() renderer.setClearColor(new THREE.Color(0xF7F2F1)) renderer.setSize(container.clientWidth, container.clientHeight) renderer.shadowMap.enabled = true container.appendChild(renderer.domElement) this.controls = new OrbitControls(camera, renderer.domElement) this.controls.target = new THREE.Vector3(0, 0, 0) this.loadLight() this.load3D() }, load3D() { const loader = new GLTFLoader() const dracoLoader = new DRACOLoader() dracoLoader.setDecoderPath('https://threejs.org/examples/jsm/libs/draco/') dracoLoader.preload() loader.setDRACOLoader(dracoLoader) loader.load('https://threejs.org/examples/models/gltf/LittlestTokyo.glb', (gltf) => { scene.add(gltf.scene) renderer.render(scene, camera) }, (xhr) => { console.log((xhr.loaded / xhr.total) * 100 + '% loaded') }, (error) => { console.error(error) }) }, loadLight() { // 环境光 const ambient = new THREE.AmbientLight(0xFFFFFF) scene.add(ambient) const pointLight = new THREE.PointLight( 0xffffff, 0.5 ); pointLight.position.set( 100, 200, 500 ); pointLight.color.setHSL( 255, 255, 255 ); scene.add( pointLight ); }, animate() { requestAnimationFrame(this.animate) renderer.render(scene, camera) } } }</script><style>body,html { padding: 0; margin: 0;}</style><style scoped> #container { width: 100%; height: calc(100vh); }</style>效果

二、3D模型资源

公共领域的glTF文件可以在网上找到,例如 Sketchfab,或者很多工具包含了glTF的导出功能: Blender by the Blender Foundation Substance Painter by Allegorithmic Modo by Foundry Toolbag by Marmoset Houdini by SideFX Cinema 4D by MAXON COLLADA2GLTF by the Khronos Group FBX2GLTF by Facebook OBJ2GLTF by Analytical Graphics Inc

更多请参考:https://threejs.org/docs/index.html#manual/zh/introduction/Loading-3D-models

总结

以上就是今天要讲的内容,本文仅仅简单介绍了three.js的加载3D模型,而three.js提供了非常多的3D显示功能,后续文章,我将带大家慢慢深入了解。

如果觉得有用欢迎点赞关注 有问题私信我!!~~

本文链接地址:https://www.jiuchutong.com/zhishi/300390.html 转载请保留说明!

上一篇:深度学习之快速实现数据集增强的方法

下一篇:DEFORMABLE DETR详解(deformable detr代码)

  • 小天才电话手表怎么关闭睡眠模式(小天才电话手表怎么恢复出厂设置)

    小天才电话手表怎么关闭睡眠模式(小天才电话手表怎么恢复出厂设置)

  • 华为手机如何隐藏微信通话悬浮窗(华为手机如何隐藏微信图标)

    华为手机如何隐藏微信通话悬浮窗(华为手机如何隐藏微信图标)

  • 户户通高频头坏了是什么症状(户户通高频头坏了换一个新的行吗)

    户户通高频头坏了是什么症状(户户通高频头坏了换一个新的行吗)

  • kirin820是什么处理器(kirin820是什么处理器相当于骁龙多少)

    kirin820是什么处理器(kirin820是什么处理器相当于骁龙多少)

  • 夏普遥控器闪蓝光不能用(夏普遥控器闪蓝光怎么办)

    夏普遥控器闪蓝光不能用(夏普遥控器闪蓝光怎么办)

  • 魅族17防水吗(魅族17防不防水)

    魅族17防水吗(魅族17防不防水)

  • 快手是谁创建的属于哪个公司(快手是谁创建的宿华)

    快手是谁创建的属于哪个公司(快手是谁创建的宿华)

  • 订单已关闭是什么意思(订单已经关闭)

    订单已关闭是什么意思(订单已经关闭)

  • a1954是什么型号(平板A1954是什么型号)

    a1954是什么型号(平板A1954是什么型号)

  • 华为nce-al10什么型号(华为nceal10是什么机子)

    华为nce-al10什么型号(华为nceal10是什么机子)

  • opporeno3屏幕多大(opporeno3pro手机屏幕多大)

    opporeno3屏幕多大(opporeno3pro手机屏幕多大)

  • 如何更改airdrop头像(如何更改airdrop的名字)

    如何更改airdrop头像(如何更改airdrop的名字)

  • 苹果6s有带nfc功能吗(苹果6s有nfc?)

    苹果6s有带nfc功能吗(苹果6s有nfc?)

  • 苹果xsmax没有指纹吗(iphone xs max 为什么没有指纹解锁)

    苹果xsmax没有指纹吗(iphone xs max 为什么没有指纹解锁)

  • 苹果11怎么换号发短信(苹果11怎么换号码发短信)

    苹果11怎么换号发短信(苹果11怎么换号码发短信)

  • 滴滴不出车报备功能在哪里(滴滴不出车报备在哪里)

    滴滴不出车报备功能在哪里(滴滴不出车报备在哪里)

  • 手机号怎么知道对方位置(手机号怎么知道用了几年)

    手机号怎么知道对方位置(手机号怎么知道用了几年)

  • 苹果x原装充电器多少w(苹果X原装充电器规格)

    苹果x原装充电器多少w(苹果X原装充电器规格)

  • 快手新用户多久可以开直播(快手新用户多久失效?)

    快手新用户多久可以开直播(快手新用户多久失效?)

  • qq安全中心怎么看举报自己的人(qq安全中心怎么改不了密码了)

    qq安全中心怎么看举报自己的人(qq安全中心怎么改不了密码了)

  • 红米note7pro和红米note7外观一模一样吗?(红米note7pro和红米note8pro哪个好)

    红米note7pro和红米note7外观一模一样吗?(红米note7pro和红米note8pro哪个好)

  • 落日时分的香巴拉过山车剪影,西班牙塔拉戈纳萨洛 (© Joaquim F. P./Getty Images)(落日时光)

    落日时分的香巴拉过山车剪影,西班牙塔拉戈纳萨洛 (© Joaquim F. P./Getty Images)(落日时光)

  • Copilot 初体验(pilot coat)

    Copilot 初体验(pilot coat)

  • 表见代理通俗
  • 收到发票未收到款
  • 出口退税中哪些是免税的
  • 投资性房地产转为非投资性房地产
  • 进项税的现金流量项目
  • 企业购买的雇主责任险
  • 外商投资企业土地使用税什么时候交
  • 转出上年的进项税额怎么做分录
  • 伙食支出设立的明细
  • 企业购买硬件与软件该如何做账?
  • 企业所得税如何申报操作
  • 未开票增值税怎么申报
  • 餐饮定额发票怎么征税
  • 用于在建工程的固定资产是否可以计提折旧
  • 什么样的发票需要交税
  • 网络唤醒的原理
  • 农业公司收到项目资金
  • 销售差异计算公式
  • 结转本月各项损益
  • 进口关税增值税计算公式
  • 企业预收账款缴哪些税
  • linux root没有权限
  • win11笔记本如何让电池充电到100%
  • php环境配置教程Apace
  • 苹果电脑双系统好不好
  • csinject.exe是什么程序的进程 csinject进程是安全的吗
  • 罗汉松的养殖方法剪枝视频
  • 政府会计公共基础设施的概念和内容
  • 园林绿化工程公司简介范文
  • 交易性金融资产属于流动资产
  • 企业改制土地增值税政策
  • 时间序列转换
  • 土地出让金返还的税务处理
  • unipoint
  • 简易html代码
  • 手撕代码题目集锦
  • elementui怎么样
  • 应付账款调整为其他应付款
  • 其他科技推广服务业可以加计扣除吗
  • 极速开票怎么打不开
  • 在建工程发生的非正常损失计入哪
  • 注册公司行业分类有多少种
  • 民营医疗机构是指哪些
  • 数字黑洞有哪些
  • 金税盘一天可以开多少张发票
  • 增值税一般纳税人是什么意思
  • 企业出售自用房产开具增值税
  • 收取的承包费交什么税
  • 负数发票作废后对原发票有影响吗
  • 税前扣除的职工福利费支出怎么算
  • 公司利润如何
  • 建设期收到罚单怎么处罚
  • 工厂宿舍水电费怎么扣
  • 收到红字发票怎么做账怎么做进项税额转出
  • 微信怎么帮别人代缴社保
  • 建账时都要建哪些科目
  • 哪些单位需要缴纳残疾人保障金
  • MySQL删除重复数据只保留一条
  • ubuntu没有wlan0
  • CentOS EXT4文件系统的详解
  • 戴尔电脑u盘快速启动
  • vsftpd配置用户登录目录
  • jquery邮箱正则表达式
  • unity+
  • jquery-easyui
  • 安卓开发依赖文件添加在哪
  • iphone触控手势
  • 举例说明json数据格式的语法
  • android实现一个闹钟程序
  • 施工费税费
  • 河南税务报到
  • 成都国家税务局每个月交全民付的钱是什么
  • 江苏电子税务局网站官网
  • 电子发票怎么看有没有重复报销
  • 自用的房产怎么交房产土地税
  • 青海的医疗保险费是多少钱
  • 2023浙江高考首考状元
  • 电信电普
  • 税务负责人
  • 地税完税证明是什么样子
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设