Three.js + Vue 处理glb文件过大问题(DRACOLoader加载压缩glb)

起因,three.js editer导出的glb文件过于庞大,导致部署后文件加载过久

解决方法:

第一步(得有个blender),压缩:

导出时把压缩勾选上

这时候我们会得到一个glb文件,但与three.js editer导出不同的的是,这个文件引入代码中会报如下错误

这个警告表明在使用 THREE.GLTFLoader 时,没有提供 DRACOLoader 实例。DRACOLoader 是用于加载 Draco 压缩格式的模型数据的 loader。如果你的模型使用了 Draco 压缩,你需要为 THREE.GLTFLoader 提供一个 DRACOLoader 实例。

第二步,引入:

点击node_modules找到three,复制以下文件夹

粘贴到public目录

第三步,使用:

在three页面引入DRACOLoader

javascript 复制代码
import {DRACOLoader} from 'three/examples/jsm/loaders/DRACOLoader.js'

修改原来的代码为:

javascript 复制代码
const dracoLoader=new DRACOLoader();
      dracoLoader.setDecoderPath('/draco/gltf/');
      // 加载3D模型
      const loader = new GLTFLoader();
      loader.setDRACOLoader(dracoLoader);
      loader.load(this.file, (gltf) => {
//...
})

DRACOLoader能够帮我们解析压缩后的glb,这样就可以解决报错了!

同一模型优化后的结果展示:

相关推荐
dlhto19 分钟前
前端登录验证码组件
前端
@万里挑一21 分钟前
vue中使用虚拟列表,封装虚拟列表
前端·javascript·vue.js
黑臂麒麟25 分钟前
Electron for OpenHarmony 跨平台实战开发:Electron 文件系统操作实战
前端·javascript·electron·openharmony
wordbaby25 分钟前
Tanstack Router 文件命名速查表
前端
用户72278681234430 分钟前
Vue2中能否实现输入中文自动转化为拼音, 且不带音调
vue.js
1024肥宅32 分钟前
工程化工具类:模块化系统全解析与实践
前端·javascript·面试
软件技术NINI33 分钟前
如何学习前端
前端·学习
weixin_4225554234 分钟前
ezuikit-js官网使用示例
前端·javascript·vue·ezuikit-js
鱼鱼块38 分钟前
从零搭一个 Vue 小家:用 Vite + 路由轻松入门现代前端开发
vue.js·面试·前端框架
梓仁沐白44 分钟前
CSAPP-Attacklab
前端