位置: IT常识 - 正文

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

发布时间:2024-01-17
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代码)

  • 个税可以作废重新换电脑申报吗
  • 需要考虑的税务问题
  • 季度不满30万免增值税如何结转
  • 带息负债融资成本
  • 微企怎么申请补贴
  • 增加税收的方法有哪些
  • 金蝶专业版怎么导入备份账套
  • 土地使用权计入存货吗
  • 广告费怎么入账
  • 业务招待费的进项怎么算
  • 外贸企业人民币结算
  • 取得建安类专用发票能抵扣进项税吗
  • 收到对方的预付款,需要多久开发票
  • 对外支付增值税扣缴义务发生时间
  • 核定征收的企业需要汇算清缴吗
  • 开票码是什么意思
  • 企业收购股权要交税吗
  • 包工不包料都包括什么
  • 2018增值税暂行条例
  • windows11下载后怎么安装
  • 腾讯管家游戏加速怎么开
  • windos10不显示桌面
  • 受托加工物资入库流程
  • 外贸 代理
  • 应付工资薪酬期末应该为0吗
  • 个税系统添加人员出现证件号码不符合一般规则
  • iphone系统推送
  • php常用的优化方式
  • win7bios网络启动
  • php设计模式及使用场景
  • 累计盈余科目怎么填
  • 金融公司呆账对当事人有什么影响
  • mxnet github
  • 收到税务局退回的企业所得税分录
  • svc语法
  • 一般纳税人公司出售旧车怎么开票
  • js面试2021
  • 所有者权益总计怎么算沙盘
  • 收到合同预付款怎么处理
  • 包装物押金属于应税货物吗
  • 织梦怎么建站
  • 织梦是什么框架开发的
  • 高效刷题app
  • 长期资产包含哪些
  • 小规模劳务派遣公司税率
  • 对账小技巧
  • mysql大分页优化
  • 坏账核销的会计规定
  • 税务上减免两费是什么
  • 委托代销确认销售收入
  • 小规模购买税控盘分录怎么写
  • 调整去年管理费用怎么做分录
  • 购进销售产品的会计分录
  • 记账凭证如何填写明细科目
  • 帐簿的保管期限
  • mysql内网访问
  • 科普知识手抄报简单又漂亮
  • vmware安装redhat6.5
  • 你不知道的关于现代主义的故事
  • win2008远程桌面
  • suse linux教程
  • win10 ie浏览器双击没有反应
  • react组件写法
  • html模板 js
  • IE hack条件写法
  • 怎么申请返回
  • 文件夹右键菜单管理
  • nodejs实战
  • 利用ctypes提高Python的执行速度
  • pythen开发环境
  • js实现的倒计时怎么用
  • bootstrap学习
  • 安卓万能插件
  • 网上申领的电子发票如何读入金税盘
  • 北京定额发票查验
  • 国际税收对经济活动的影响
  • 企业内部清欠的措施和做法
  • 出口退税函调管理办法
  • 合肥高新公共事务管理有限公司
  • 纳税服务存在的不足之处
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号