位置: 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代码)

  • 银行电子回单有没有法律效应
  • 缴纳增值税影响损益吗
  • 企业向银行贷款属于融资吗
  • 无形资产摊销的会计科目
  • 未认证的发票如何作废
  • 林业局会计咋样做账
  • 全额计提坏账符合的条件
  • 施工单位购买材料与设计不符
  • 企业出口退税办理流程
  • 怎么去税务局申报个税
  • 通用机打发票税率在哪改
  • 发票丢了还可以重开吗
  • 费用转入本年利润的哪一方
  • 银行增值税免税收入有哪些
  • linux怎么添加命令
  • 电脑的时间不准了怎么调
  • 怎么修改boot启动项
  • 分包方可以简易计税吗
  • 收外汇的账务处理实例
  • 营改增后房租收入怎么交税
  • 销售无形资产增值税税率2022
  • 销货方开具红票,购货方怎么入账
  • 施工方可以向建设单位借款么
  • 商品流通企业的经营过程分为
  • 先买入再卖出
  • php评论盖楼
  • 统计 α
  • super命令linux
  • 零申报的申报表怎么填
  • 结转损益利息收入在哪方
  • 施工单位代建收费合法吗
  • pnpnpn的工作原理
  • 计提税费可以记入成本吗
  • Sqlite 操作类代码
  • 电子承兑汇票的最长期限
  • 置换他行按揭贷款
  • 广告赞助支出能抵扣吗
  • 内帐收入怎么确定
  • 消费税纳税人的具体纳税期限由主管税务机关
  • 有限公司股权转让需要股东会决议吗
  • 预付检测费未收到发票
  • 一般纳税人销售旧货
  • 外币账户结汇至人民币账户
  • 购买金税盘的费用会计分录
  • 投资性房地产与持有待售资产的区别
  • 社会团体收到的会费怎么入账
  • 销售出库和产品入库有什么关系
  • 收到第三方补助怎么做账
  • 现金存入银行是什么凭证
  • 赠送成本的会计分录
  • 应发工资应税工资
  • 现代服务业包括哪些项目
  • 房地产开发企业资质管理规定
  • mysql查询语句优先级
  • sqlserver复制表语句
  • mysql8.0免安装
  • wlltweak.exe
  • WIN10系统怎么清理电脑c盘垃圾怎么清理
  • linux使用su命令出错
  • Mac显示桌面快捷键
  • 电脑操作系统win8
  • make_sock: could not bind to address 0.0.0.0:443
  • es6数组函数
  • pycharm远程调试django
  • cocos2djs
  • javascript中this的用法
  • vue 父子组件通信
  • python动态参数应用
  • jQuery使用$.ajax提交表单完整实例
  • 给shell脚本传参数
  • java教程
  • jqueryw3c
  • 深入理解innodb
  • 纪检委是干什么工作的能管理税务管理局吗
  • 深圳电子税务局税种启用在哪里
  • 全国哪些地区社保比例高
  • 地税局网站查询发票
  • 个人所得税房贷能退多少钱
  • 山东地域分布
  • weverse登录不了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设