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

  • oppo智能语音助手怎么唤醒(oppo智能语音助手怎么开启)

    oppo智能语音助手怎么唤醒(oppo智能语音助手怎么开启)

  • 苹果12自动调节亮度在哪(苹果12自动调节亮度打开好还是关闭好)

    苹果12自动调节亮度在哪(苹果12自动调节亮度打开好还是关闭好)

  • 华硕电脑字体大小怎么设置(华硕电脑字体大小在哪调整啊)

    华硕电脑字体大小怎么设置(华硕电脑字体大小在哪调整啊)

  • 苹果7能更新iOS12.4吗(苹果7能更新iOS16吗)

    苹果7能更新iOS12.4吗(苹果7能更新iOS16吗)

  • 华为所有相册和相机照片重复(华为相册和微信照片为什么不同步)

    华为所有相册和相机照片重复(华为相册和微信照片为什么不同步)

  • 华为解除管控后打不开(华为解除管控后打不开软件)

    华为解除管控后打不开(华为解除管控后打不开软件)

  • qq邮箱登录入口在哪里(qq邮箱登录入口官网手机登录)

    qq邮箱登录入口在哪里(qq邮箱登录入口官网手机登录)

  • iphone怎么录屏视频有声音(苹果手机录屏怎么录视频)

    iphone怎么录屏视频有声音(苹果手机录屏怎么录视频)

  • 拉黑对方对方还有聊天记录吗(拉黑对方对方还能看到我的微信号吗)

    拉黑对方对方还有聊天记录吗(拉黑对方对方还能看到我的微信号吗)

  • 抖音上的作品怎么突然为0(抖音上的作品怎么发微信朋友圈)

    抖音上的作品怎么突然为0(抖音上的作品怎么发微信朋友圈)

  • 华为hmscore是什么(华为hmscore是什么意思可以关闭吗)

    华为hmscore是什么(华为hmscore是什么意思可以关闭吗)

  • 苹果11下面两个喇叭为什么只会响一个(苹果11下面两个喇叭没有声音)

    苹果11下面两个喇叭为什么只会响一个(苹果11下面两个喇叭没有声音)

  • 手机电池健康度多少算正常(手机电池健康度多久掉一点)

    手机电池健康度多少算正常(手机电池健康度多久掉一点)

  • 蓝牙耳机充电7天忘拔(蓝牙耳机充电7小时候一直亮红灯)

    蓝牙耳机充电7天忘拔(蓝牙耳机充电7小时候一直亮红灯)

  • qq友谊的小船能有几个(QQ友谊的小船能获得几个)

    qq友谊的小船能有几个(QQ友谊的小船能获得几个)

  • 抖音发不出去视频怎么回事(抖音视频发不出去)

    抖音发不出去视频怎么回事(抖音视频发不出去)

  • 拼多多类目可以改吗(拼多多类目怎么选择)

    拼多多类目可以改吗(拼多多类目怎么选择)

  • 乐视手机怎么截屏(乐视手机怎么截屏视频)

    乐视手机怎么截屏(乐视手机怎么截屏视频)

  • 手机淘宝小二在哪里找(手机淘宝的淘宝小二在哪里)

    手机淘宝小二在哪里找(手机淘宝的淘宝小二在哪里)

  • 无法找到入口无法定位程序输入点(无法找到入口无法定位程序输入点kernel32.dll)

    无法找到入口无法定位程序输入点(无法找到入口无法定位程序输入点kernel32.dll)

  • word奇偶页不同怎么设置(word奇偶页不同的页眉页脚如何设置)

    word奇偶页不同怎么设置(word奇偶页不同的页眉页脚如何设置)

  • 小米8隐藏的视频怎么看(小米手机隐藏的视频怎么打开)

    小米8隐藏的视频怎么看(小米手机隐藏的视频怎么打开)

  • 图片格式有什么区别(图片格式有什么等格式)

    图片格式有什么区别(图片格式有什么等格式)

  • 魅族怎么打开OTG(魅族怎么打开地震预警)

    魅族怎么打开OTG(魅族怎么打开地震预警)

  • 苹果设置壁纸缩小方法(苹果壁纸怎么缩)

    苹果设置壁纸缩小方法(苹果壁纸怎么缩)

  • 手机wps怎么分成两栏(手机wps怎么分成两个窗口)

    手机wps怎么分成两栏(手机wps怎么分成两个窗口)

  • GPT-4 免费体验方法

    GPT-4 免费体验方法

  • 一般纳税人开普票税率是3%还是13%
  • 应交代扣利息税
  • 发票章是否需要到税务局备案
  • 季报利润表本月金额和本年累计金额
  • 小规模超过10万是全额交税吗
  • 贷款受托支付可以给股东吗
  • 房地产企业如何预缴土地增值税
  • 个人所得税税前扣除是什么意思
  • 销售收入打折后怎么算
  • 高危职业人身意外险
  • 发放股票股利要考虑时间权重吗
  • 购进半成品怎样做分录
  • 公司培训餐费计入什么费用
  • 卫生许可证为什么需要两个健康证
  • 销售单怎么设置打几行
  • 生产性生物资产是什么意思
  • 当月已认证的可抵扣增值税
  • 少交的增值税如何记账
  • safedownloader是什么
  • 进项已抵扣发票作废账务处理
  • win8.1怎么用
  • 收到发票如何写摘要
  • RAVMOND.exe - RAVMOND是什么进程.有什么作用
  • 出卖固定资产企业处罚
  • 报销费用多付会计分录
  • 在win7系统中文件属性有哪些
  • html页面中利用______标签可引入jquery库
  • 苹果手机连接电脑
  • 短缺的材料算不算入账价值
  • 跨平台桌面程序
  • 招标单位收取标书费多少钱
  • 工业企业成本核算流程
  • 增值税专用发票的税率是多少啊
  • uniapp获取当前url
  • php db2
  • 建安企业开具增值税专用发票要求
  • 现金流量表中如何考虑折旧费
  • 税务文书送达回证企业要盖章吗
  • 2023版最新最全React面试题
  • PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
  • 详解php归并排序数据
  • 上月购进固定资产次月退货已开具红字发票如何入账
  • 发票内容类型怎么填
  • 工程施工预缴增值税
  • 帝国cms使用手册
  • 开始送加盟费
  • 材料报废属于正常损失吗
  • 企业收入总额是营业额吗
  • 自然人扣缴客户端恢复数据
  • 所得税的汇算清缴日在资产负债表日后期间
  • 电子承兑汇票到期怎么兑现
  • 委托代销受托方会计分录
  • 行政拨款给工会的账务处理
  • 投标保证金如何规定
  • 购入库存商品会计摘要怎么写
  • 用友t3计提折旧了没有生成凭证
  • 营业执照以外的算无证经营吗
  • 契税发票错了能作废吗
  • 土地出让合同的签订主体
  • 外贸企业出口退税账务处理
  • innodb.trx
  • xpkw
  • windows7开机启动
  • win7系统如何关闭开机自动启动软件
  • office进程
  • win10系统怎么回滚
  • win8系统的应用程序在哪里
  • 关于dns的说法错误的是
  • ugui scrollview
  • unity编译原理
  • pygame csdn
  • nodejs的流处理模块
  • javascript内置对象window
  • javascript基础笔记
  • jQuery Ajax 上传文件处理方式介绍(推荐)
  • python 下载一个网站上的所有文档
  • 河北税务官网电子税务局
  • 税务部门客服
  • 河南地税网上个税怎么交
  • 2020北京国税局的待遇
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设