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

  • 间接税和直接税哪个容易转嫁
  • 机动车统一发票税率多少
  • 收到幼儿园园服费怎么做财务处理?
  • 收款和出库哪个借方哪个贷方?
  • 差旅费住宿专票能否抵扣
  • 个体工商户经营范围查询
  • 按季度支付贷款利息权责发生制
  • 单位和职工个人缴费基数如何确定的规定
  • 公司报销费用发票怎么开
  • 咨询费发票怎么入账
  • 电子承兑汇票没开通能接受吗
  • 季度所得税申报表营业收入怎么填
  • 营改增后新开公司如何报地税?
  • 人工费收税吗
  • 《减免所得税优惠明细表》
  • 免税收入的三个条件
  • 2019年水利部
  • 特殊行业会计公司排名
  • 会计费用涉及哪些科目?
  • 企业收购股权要交税吗
  • 一般纳税人增值税及附加税费申报表怎么填
  • 企业所得税免税政策
  • 吸收合并企业的情形
  • 去税局代开开专用发票需要带什么证件?
  • 电脑开机弹出documents文件夹
  • windows7的笔记本有哪些
  • 预付维修费计入入账价值吗
  • 企业自持商品住房定义
  • php options
  • PHP:set_file_buffer()的用法_Filesystem函数
  • 购入增值税税控系统专用设备
  • react-use
  • php不使用内置函数的情况下,输出数组中重复最多的元素
  • cocos creator脚本开发指南
  • 坏账损失的会计分录
  • php写一个函数,对手机号做基础的判断和处理
  • YOLOv8(n/s/m/l/x)&YOLOv7(yolov7-tiny/yolov7/yolov7x)&YOLOv5(n/s/m/l/x)不同模型参数/性能对比(含训练及推理速度)
  • 网页视频不显示画面
  • 公司买的公文包会计怎么做
  • pytorch训练模型计算f1
  • 修的公路是否上固定资产
  • 委托贷款利息收入
  • 消防器材费用
  • 加计扣除所得税处理
  • 收到银行承兑汇票计入什么科目
  • 库存现金账实不符怎么处理
  • 事业单位零余额账户使用流程
  • 运费不支付会怎么样
  • 开红字发票如何调整收入?
  • 管理费用如何冲减
  • 跨月发票作废怎么做会计分录
  • 实收资本印花税税率多少
  • 内部审计人员独立性
  • sqlserver substring函数使用方法小结
  • win8.1使用技巧
  • win2008组策略
  • pascl32.exe - pascl32是什么进程 有什么用
  • 怎么用windows
  • mac nums
  • cocos html
  • opengl 实现
  • javascript教程推荐知乎
  • jquery简单网页
  • python里的set
  • jquery模拟表单提交
  • node.js中的http.request.end方法使用说明
  • android基础知识大全
  • unity怎么加人
  • window.open()参数传递及获取
  • DeviceOne 让你一见钟情的App快速开发平台
  • shell语言的特点
  • js文件被加密
  • javascript的对象
  • 重庆电子税务局网页版登录
  • 如何加强税务系统财务管理工作
  • 上海个体户纳税标准
  • 咨询服务费税率2020小规模
  • 重庆国税电子税务登录
  • 全国税收最高
  • 盘州市税务局党组成员图片
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设