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

  • 荣耀30pro有微距拍摄功能吗(荣耀30pro有微距吗)

    荣耀30pro有微距拍摄功能吗(荣耀30pro有微距吗)

  • 荣耀30为什么没有取消VoLTE功能的选项(荣耀30为什么没有无线调试)

    荣耀30为什么没有取消VoLTE功能的选项(荣耀30为什么没有无线调试)

  • 华为荣耀9x上有没有人脸识别(华为荣耀9x有红外功能吗)

    华为荣耀9x上有没有人脸识别(华为荣耀9x有红外功能吗)

  • 苹果截图设置在哪里(苹果截图在哪里设置?)

    苹果截图设置在哪里(苹果截图在哪里设置?)

  • 苹果tv中国为啥不能用(苹果tv为什么国内用不了)

    苹果tv中国为啥不能用(苹果tv为什么国内用不了)

  • 单片机是什么专业的(单片机是干什么)

    单片机是什么专业的(单片机是干什么)

  • 华为nova5pro悬浮球怎么设置(华为nova5pro悬浮球怎么关闭)

    华为nova5pro悬浮球怎么设置(华为nova5pro悬浮球怎么关闭)

  • 淘宝二次申请退款在哪里找(淘宝二次申请退款步骤)

    淘宝二次申请退款在哪里找(淘宝二次申请退款步骤)

  • 抖音里收藏的音乐怎么删掉(抖音里收藏的音乐在剪映里怎么找不到)

    抖音里收藏的音乐怎么删掉(抖音里收藏的音乐在剪映里怎么找不到)

  • airpods嘟嘟两声是没电了吗(airpods嘟嘟响两下)

    airpods嘟嘟两声是没电了吗(airpods嘟嘟响两下)

  • pdf转换成word后不能编辑怎么办(pdf转换成word后格式怎么调整)

    pdf转换成word后不能编辑怎么办(pdf转换成word后格式怎么调整)

  • wpa密钥是什么意思(网络wpa密钥是什么)

    wpa密钥是什么意思(网络wpa密钥是什么)

  • iPhone8扬声器孔清理(iphone 8扬声器)

    iPhone8扬声器孔清理(iphone 8扬声器)

  • 华为mate30语音助手在哪里(华为mate30语音助手怎么打开)

    华为mate30语音助手在哪里(华为mate30语音助手怎么打开)

  • 换电池对手机有影响吗(换电池对手机有损害吗)

    换电池对手机有影响吗(换电池对手机有损害吗)

  • vivox23与vivox21区别(vivox23与vivox21对比)

    vivox23与vivox21区别(vivox23与vivox21对比)

  • 光驱是多媒体信息吗(光驱是多媒体信号吗)

    光驱是多媒体信息吗(光驱是多媒体信号吗)

  • 微信位置共享能说话吗(微信位置共享能改吗)

    微信位置共享能说话吗(微信位置共享能改吗)

  • 写字板和记事本的异同(写字板和记事本都是文字处理程序)

    写字板和记事本的异同(写字板和记事本都是文字处理程序)

  • 洗衣机能效等级是什么意思(洗衣机能效等级划分标准)

    洗衣机能效等级是什么意思(洗衣机能效等级划分标准)

  • 淘宝的东西可以发国外吗(淘宝的东西可以寄到国外吗)

    淘宝的东西可以发国外吗(淘宝的东西可以寄到国外吗)

  • 苹果怎么关掉拍照声音(苹果怎么关掉拍照咔嚓声)

    苹果怎么关掉拍照声音(苹果怎么关掉拍照咔嚓声)

  • v1813ba是什么型号(v1813a是新款吗)

    v1813ba是什么型号(v1813a是新款吗)

  • 抖音视频怎么删(抖音视频怎么删掉)

    抖音视频怎么删(抖音视频怎么删掉)

  • 动感影集怎么制作(动感影集怎么制作写在本子上)

    动感影集怎么制作(动感影集怎么制作写在本子上)

  • 金税盘开票软件服务电话
  • 北京外贸进出口公司
  • 个体工商户个人经营所得税优惠政策
  • 土地出让金会涨价吗
  • 社保缴费基数怎么算出来的啊
  • 怎么找回丢失的手机号
  • 个税中房屋租赁日期写长跟写短
  • 企业支付宝要交哪些税
  • 小微企业季度不超过30万怎么报增值税
  • 等额本息还款的特点
  • 劳务公司一般纳税人开票几个点
  • 代开运输发票会不会造成重复征税
  • 安全费用中的固定资产如何写会计分录?
  • 专利费代缴
  • 收到备付金怎么做分录
  • 企业为员工承担个人所得税
  • 实际缴纳增值税税额是什么意思
  • 管理费用中的水费电费在纳税申报表A104000
  • 房产税入哪个科目
  • 代扣款怎么做账
  • 外包服务费税率是多少
  • 公司增资需要什么
  • 典当行的账务处理会计分录大全
  • 银行存款利息的计算方法
  • 华为手机麦克风在哪里
  • 收到厂家返利怎么做分录
  • 筹建期间费用计什么科目
  • win10提示病毒
  • 什么是增值税进项税额和销项税额
  • 营改增后房租收入怎么交税
  • 拍卖土地印花税
  • hotkey osd driver可以卸载吗
  • vue怎么拿到后端数据
  • 怎么开通公众号微信公众平台
  • PHP:zip_entry_open()的用法_Zip函数
  • php copy函数
  • 应交消费税涉及哪些情况
  • framework4.0怎么打开
  • php使用( )关键字来创建对象
  • 发票认证相符什么意思
  • 预付卡怎么开票
  • 转让旧机器的会计分录
  • javascrapt
  • 帝国cms源码
  • 小规模附加税减免政策2023
  • 科目余额表数据包括
  • 专用发票跨月冲红流程
  • 资产负债表的累计折旧
  • 资产负债表第二年怎么填
  • 公司注销了就可以不发工资么
  • 营改增后企业的税负控制
  • 劳务公司的账务处理会计分录
  • 电商平台收入何时到账
  • 收到土地使用权的租金
  • 装潢装修费用属于营改增
  • 宣传费税前扣除什么意思
  • 融资手续费计入什么成本
  • 长期待摊费用摊完了之后怎么处理
  • 废料卖出算哪种收入
  • 鉴证咨询公司
  • 事业单位工会经费账务处理
  • 专家咨询费支付标准
  • 公司为员工租房应注意
  • 请问购买
  • 编写sql需要注意什么
  • mysql常见报错
  • wsinspector.exe是什么进程
  • win7系统如何卸载流氓软件
  • iphone制造成本
  • os x 10.10.5
  • 联想y485p升级无线网卡
  • win10 ug
  • opencv人脸识别模型训练
  • jquery控制滚动条位置
  • 交互式shell是什么意思
  • node. js教程
  • js画矩形
  • jquery easyui从零开始学pdf
  • 发布python程序
  • 电子税务局网上实名认证流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设