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

  • 不含税的金额
  • 房地产印章图片
  • 息税前利润增长率与财务杠杆系数
  • 预提费用
  • 开票系统里红字发票怎么开
  • 疫苗接种防疫站
  • 代理记账有什么风险吗
  • 销售额负数 如何填报报表
  • 个人工资怎么缴纳个人所得税
  • 从公司账户转给个人账户取出来发给员工做过节费
  • 外购产品赠送他人合法吗
  • 汽油税种
  • 接收虚开增值税专用发票要判刑吗
  • 重置申报清册是什么意思
  • 当前中国有什么企业在国外
  • 物业会计科目设置
  • 开个人发票需要身份证号码吗
  • 贴现扣的钱叫什么
  • 电子发票可以开专票吗
  • 非营利组织怎么申请
  • 当月进项留抵如何做账
  • 小规模餐饮企业增值税申报表填写
  • 企业存款利息收入要交哪些税
  • 企业接到银行收账通知
  • Thinkphp5+PHPExcel实现批量上传表格数据功能
  • php实现上传图片功能
  • 代扣个人缴纳社保费
  • 怎么给文件添加属性
  • os线程是什么
  • win11系统怎么进入运行界面
  • deepin 终端命令
  • 同一控制下的控股合并中,合并方个别财务报表
  • 运行安装程序时发生错误
  • 购销合同印花税计算方法
  • 月底资产负债表不平怎么找原因
  • php中preg_replace_callback函数简单用法示例
  • 公司购进软件的账务处理
  • mysql是自动提交的吗
  • 长期待摊费用账务处理包括哪两部分
  • 小规模纳税人1%税率优惠政策
  • 低值易耗品指的价格
  • 固定资产一次性折旧政策2023
  • 金税四期查到了怎么办
  • 以前年度损益调整结转到本年利润吗
  • 关于sql的问题
  • 增值税进项发票抵扣期限是多少天?
  • 企业储蓄存款如何做账
  • 专利技术会计分录怎么做
  • 无奖有票是什么意思
  • 支付广告费是什么活动
  • 一个会计每个月平均有多少钱
  • 租赁办公楼
  • 明细分类账的记账
  • c# mysql实例
  • sql参数化是什么意思
  • sqlserver解锁用户命令
  • select into 和 insert into select 两种表复制语句
  • Mac OS10.11下mysql5.7.12 安装配置方法图文教程
  • macOS 10.12.2下PDF崩溃严重怎么回事 macOS 10.12.2下PDF崩溃的原因以及解决办法
  • thinkpad x230笔记本电脑
  • ubuntu服务器安装matlab2014a环境配置
  • 手机找回删除的文件
  • win7电脑连不上wifi怎么解决
  • linux 桌面系统
  • apache禁用trace方法
  • win8的ie浏览器在哪里
  • win7自动更新在哪
  • win8的运行在哪里打开
  • win10 mobile 1709
  • linux系统的配置
  • windows10玩lol
  • jquery 动态加载js
  • 批量压缩命令
  • python如何自动化
  • 面向对象的知识
  • javascript面向过程
  • 机打发票教程视频
  • 企业吸收合并资质转移办理
  • 杭州市各区面积人口排名
  • 个人所得税年申报与月申报区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设