天天看点

three.js 性能优化之gltf转化与压缩

在vue中利用three.js,搭建3d智慧配电房监测系统,其中发现设计师给的模型太大了最大的一个模型有6mb之大,以至于后面模型加载的时候页面速度变得超级的慢,所以需要将模型进行优化,将其变小;

设计师给我的模型类型是obj的,还带有素材mtl。通过百度发现浏览器对gltf格式的模型支持是比较友好的。所以现将ob模型转化成gltf格式的。

首先安装​​obj2gltf​​;该插件的作用是把obj格式转为gltf格式。下面开始安装,建议全局安装,这样下次在其他文件夹或者目录下都可以用命令行来实现格式转换。

接着安装​​gltf-pipeline​​;该插件的作用是把现有的gltf格式模型进行压缩,跟图片压缩一样。减少大小,更快的加载。

首先对obj进行模型转化,将其变成gltf模型;输入命令:(参数:-i 是输入路径,-o 是输出路径,其他参数可参考插件官方文档,根据自己的需要添加即可,输入输出的路径一定要正确,不然会报找不到directory之类的错误);注意:在这个过程中,obj和mtl名字最好对应,而且最好放在统一目录下面,要不然命令会报错,说找不到xx.mtl文件。

three.js 性能优化之gltf转化与压缩

将文件转换好格式,你会得到对应的gltf文件。

three.js 性能优化之gltf转化与压缩
three.js 性能优化之gltf转化与压缩

执行下面命令行,通过draco压缩算法对gltf模型进行压缩;(-d 就是draco算法)

three.js 性能优化之gltf转化与压缩

因为three.js中基本上包含了所有three的资源,所以就直接引用gltf和压缩算法的解析器;

three.js 性能优化之gltf转化与压缩

引入draco算法文件

chrome 加载gltf模型时控制台报错:devtools was disconnected from the page以及rangeerror: webassembly.memory(): could not allocate memory;解决方案:将浏览器升级到最新版本;

将obj模型转化gltf过程中,如果报错说没有找到xx.mtl文件时;解决方案:确定mtl和obj文件是否相同,其次mtl和obj文件放在同一录下面。

如果需要转化的模型太多或者需要压缩的模型太多了,可以使用windows bat脚本批处理。新建一个txt文本,输入下图代码,将后缀改成.bat将文件放到项目根目录文件,双击就可以执行11条压缩命令了。

three.js 开发之加载外部gltf模型和压缩(一)

继续阅读