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

  • 两个字中间的圆点怎么打出来(两个字中间的圆点复制)

    两个字中间的圆点怎么打出来(两个字中间的圆点复制)

  • 华为手表时间不准了怎么调(华为手表时间不对了怎么办)

    华为手表时间不准了怎么调(华为手表时间不对了怎么办)

  • 常驻通知有什么用(常驻通知有没有必要开着)

    常驻通知有什么用(常驻通知有没有必要开着)

  • 手机号被定位怎么解除(手机号被定位怎么查)

    手机号被定位怎么解除(手机号被定位怎么查)

  • 硒鼓错误将蓝色滑块来回滑动怎么解决(硒鼓错误将蓝色滑块来回滑动怎么解决一打印就卡纸)

    硒鼓错误将蓝色滑块来回滑动怎么解决(硒鼓错误将蓝色滑块来回滑动怎么解决一打印就卡纸)

  • 手机12g运行和8g运行差别大吗(手机12g运行和8+4运行哪个好)

    手机12g运行和8g运行差别大吗(手机12g运行和8+4运行哪个好)

  • 2016年超级计算机叫什么(2016年超级计算机)

    2016年超级计算机叫什么(2016年超级计算机)

  • prtscsysrq键按了没反应(按prtscr键没反应)

    prtscsysrq键按了没反应(按prtscr键没反应)

  • ppu是什么意思(ppu是什么材料)

    ppu是什么意思(ppu是什么材料)

  • qq空间永久封禁还能解开吗(qq空间永久封禁解封)

    qq空间永久封禁还能解开吗(qq空间永久封禁解封)

  • mate30 6+128和8+128区别

    mate30 6+128和8+128区别

  • 微信删除重新下载后还能恢复聊天记录吗(微信删除重新下载聊天记录还在不在)

    微信删除重新下载后还能恢复聊天记录吗(微信删除重新下载聊天记录还在不在)

  • 快手可以特别关注几个(快手特别关注发说说会通知吗)

    快手可以特别关注几个(快手特别关注发说说会通知吗)

  • 为什么淘宝代付不了(为什么淘宝代付是灰色的)

    为什么淘宝代付不了(为什么淘宝代付是灰色的)

  • 手机下方按键失灵怎么办(手机下方按键失灵修复小技巧)

    手机下方按键失灵怎么办(手机下方按键失灵修复小技巧)

  • realme Q机身厚度多少(realmeq机身长度)

    realme Q机身厚度多少(realmeq机身长度)

  • ios13如何修改微信声音(苹果ios13怎么改微信提示音)

    ios13如何修改微信声音(苹果ios13怎么改微信提示音)

  • 苹果手机怎么截屏(苹果手机怎么截长图)

    苹果手机怎么截屏(苹果手机怎么截长图)

  • z5x手机有美颜视频通话吗(z1视频美颜)

    z5x手机有美颜视频通话吗(z1视频美颜)

  • 小米服务框架可以关吗(小米服务框架可以结束运行吗)

    小米服务框架可以关吗(小米服务框架可以结束运行吗)

  • 华为5g手机有什么优势(华为5g手机有什么新功能)

    华为5g手机有什么优势(华为5g手机有什么新功能)

  • 抖音上撤回消息对方能看到吗(抖音撤回消息有提示吗)

    抖音上撤回消息对方能看到吗(抖音撤回消息有提示吗)

  • 耳机漏音是什么意思(耳机漏音是什么声音)

    耳机漏音是什么意思(耳机漏音是什么声音)

  • 手机淘宝投诉在哪里(手机淘宝投诉在哪个地方?)

    手机淘宝投诉在哪里(手机淘宝投诉在哪个地方?)

  • 苹果手机备份占内存吗(苹果手机备份占了icloud很大的空间)

    苹果手机备份占内存吗(苹果手机备份占了icloud很大的空间)

  • 全民k歌动态删除怎么恢复(全民k歌动态删了以后)

    全民k歌动态删除怎么恢复(全民k歌动态删了以后)

  • 华为blnal20是什么型号(华为bla_l29是什么手机)

    华为blnal20是什么型号(华为bla_l29是什么手机)

  • v15是什么手机(v15是5g手机吗)

    v15是什么手机(v15是5g手机吗)

  • web渗透测试学习路线(什么叫web渗透测试)

    web渗透测试学习路线(什么叫web渗透测试)

  • 中国姓氏的英文翻译,你的姓怎么译~(中国姓氏英文写法)

    中国姓氏的英文翻译,你的姓怎么译~(中国姓氏英文写法)

  • 发票没有申报能开票吗
  • 六大行业房产税土地使用税减免
  • 企业所得税季度预缴
  • 工程公司的材料员在哪里考试
  • 客户维护费计入什么科目
  • 三方协议缴款账户状态错
  • 加计抵扣进项税额会计分录
  • 外贸企业申报出口退税时的会计分录
  • 股息收入所得税率
  • 赠送给客户的产品发货单要填写单价?
  • 简易征收可以抵扣进项吗
  • 当期未开票过收入,以后开票怎么做会计分录
  • 无形资产土地的入账价值包括哪些
  • 期末余额全部转出的有哪些
  • 企业所得税汇算清缴网上申报流程
  • 筹备费用怎么扣税的
  • 土地增值税纳税地点
  • 一般纳税人小型微利企业印花税
  • 有限合伙人企业人数
  • 建筑业预缴个人所得税税率
  • 律师事务所的会计账务处理
  • 二千万注册资金是多少
  • 机打发票验旧是什么意思
  • 主营业务成本计入成本类账户吗
  • 系统之家有没有官网
  • linux安装方式有
  • win11wifi功能消失了
  • 永久性差异会计分录
  • 房产自用改出租房产税如何申报
  • 长期应收款属于流动资产吗
  • 销售方红字发票账务处理?
  • 房地产开发企业分为几个等级
  • 劳务公司成本票不够怎么办
  • 工会经费免征三年的文件山东
  • php实现自动识别的方法
  • java web中的转发和重定向
  • iis搭建网站教程win10
  • php swoft
  • 滞纳金的计算公式为
  • 商贸公司库存商品怎么做分录
  • python多线程处理excel
  • 申报个税工资报少了怎么更改
  • 制造费用分配后总账月末余额在哪方?
  • 房地产企业所得税预缴毛利率
  • 现金流量表季度期初现金余额怎么填
  • 结转以后年度抵免的境外所得税怎么进行会计处理
  • 打样费入什么科目
  • 预缴的增值税放哪个科目
  • 不抵扣的进项发票需要在电子税务局操作么
  • 私车公用税务处理
  • 滞纳金是罚款支出吗
  • 外商投资企业的中国投资者
  • 出口未报关收到外汇怎样处理
  • 企业支付的技术转让费计入管理费用吗
  • 选择mysql数据库为当前数据库
  • centos怎么设置
  • 为什么windows手机失败了
  • win2003安装
  • linux管理工具有哪些
  • win10一天更新几次
  • autorun.inf在win10
  • 如何查看win7激活码能重复使用
  • windows中alt+tab
  • mac如何自行检测硬盘信息
  • mce文件是什么软件
  • ubuntu操作
  • windows识别码
  • unity3d协程的作用
  • unity g
  • nodejs模块有哪些
  • linux rsync命令详解
  • java教程 视
  • 实现断点续传的工具软件
  • android动画实现方式
  • 安卓 存储权限 访问的地方是哪里
  • 辽宁新农合怎么停保
  • 国家税务总局全国增值税发票查验平台
  • 如果我中了双色球
  • 税收分类分级管理后如何开展风险管理
  • 电信宽带欠费滞纳金最多减免多少?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设