3D模型秒变小体积神器!开源库meshoptimizer压缩+OBJ转GLTF全攻略

2024-10-18 开发技术 476 次阅读 0 次点赞
本文介绍了meshoptimizer开源库,它能显著压缩三维模型大小并支持将OBJ转换为GLTF格式,提升Web加载速度。文章详细说明了使用Visual Studio 2022编译项目的方法,并列举了gltfpack工具的完整参数说明,包括基础参数、纹理压缩、网格简化、顶点精度、动画属性等设置。最后提供了常用命令行示例,如查看帮助和压缩GLB文件,帮助开发者快速上手使用该工具优化三维模型。

在三维开发中,如果模型更小,那么加载速度会更快,极大提高用户体验。meshoptimizer不仅可以极大地压缩模型大小,还可以把obj转换为gltf格式,更适合在web中使用。

开源项目

使网格更小、渲染更快的网格优化库meshoptimizer:https://github.com/zeux/meshoptimizer

编译方法

1、使用Visual Studio 2022打开项目文件夹。

2、右键CMakeLists.txt,选择meshoptimizer的CMake设置。

3、在设置页面、CMake变量和缓存表格中,设置MESHOPT_BASISU_PATH为basis_universal项目根目录:E:/github/basis_universal

4、在设置页面、CMake变量和缓存表格中,勾选MESHOPT_BUILD_GLTFPACK选项。

5、点击工具类全部保存按钮,保存修改的配置。

6、右键CMakeLists.txt,选择生成。

7、在out\build\x64-Debug文件夹会生成可执行文件:gltfpack.exe

使用方法

Usage: gltfpack [options] -i input -o output

基础参数

-i 文件:待处理的输入文件,支持.obj/.gltf/.glb格式

-o 文件:输出文件路径,支持.gltf/.glb格式

-c:压缩gltf/glb文件(使用-cc可生成更高压缩率的文件)

纹理参数

-tc:使用BasisU超级压缩将所有纹理转换为KTX2格式

-tu:编码纹理时使用UASTC格式(高质量、大尺寸)

-tq N:设置纹理编码质量,取值范围1-10,默认值为8

-ts R:按比例R缩放纹理尺寸,取值范围0-1,默认值为1

-tl N:将纹理尺寸限制在N像素以内,默认值0表示无限制

-tp:将纹理尺寸调整为最接近的2的幂,以符合WebGL1的限制

-tfy:在BasisU超级压缩过程中沿Y轴翻转纹理

-tj N:压缩纹理时使用N个线程

-tr:保留原始纹理路径引用,而非复制或嵌入图像

纹理类别参数:

-tc C:对C类纹理使用ETC1S编码

-tu C:对C类纹理使用UASTC编码

-tq C N:对C类纹理设置编码质量为N

(其中C为逗号分隔的类别列表,不含空格,有效值为color、normal、attrib)

简化参数

-si R:按三角形/顶点数量比例R简化网格,取值范围0-1,默认值为1

-se E:限制简化误差为E,取值范围0-1,默认值0.01表示1%偏差

-sa:激进简化至目标比例,忽略质量损失

-sv:简化网格时考虑顶点属性

-slb:简化时锁定边界顶点,避免连接网格出现缝隙

顶点精度参数

-vp N:位置坐标使用N位量化,取值范围1-16,默认值为14

-vt N:纹理坐标使用N位量化,取值范围1-16,默认值为12

-vn N:法线使用N位量化(切线最高8位),取值范围1-16,默认值为8

-vc N:颜色使用N位量化,取值范围1-16,默认值为8

顶点坐标参数

-vpi:位置使用整数属性(默认)

-vpn:位置使用归一化属性

-vpf:位置使用浮点属性

顶点属性参数

-vtf:纹理坐标使用浮点属性

-vnf:法线使用浮点属性

-kv:保留源顶点属性,即使未被使用

动画属性参数

-at N:平移使用N位量化,取值范围1-24,默认值为16

-ar N:旋转使用N位量化,取值范围4-16,默认值为12

-as N:缩放使用N位量化,取值范围1-24,默认值为16

-af N:以N赫兹的频率重采样动画,默认值为30

-ac:保留恒定动画轨道,即使不修改节点变换

场景参数

-kn:保留命名节点及其关联网格,以便外部变换命名节点

-km:保留命名材质,禁用命名材质合并

-ke:保留扩展数据

-mm:尽可能合并相同网格的实例

-mi:序列化多网格实例时使用EXT_mesh_gpu_instancing扩展

杂项参数

-cf:生成压缩的gltf/glb文件,并为不支持的加载器提供回退方案

-noq:禁用量化,生成更大且无扩展的glTF文件

-v:详细输出(单独使用时显示版本信息)

-r 文件:输出JSON格式报告到指定文件

-h:显示帮助信息并退出

常用命令行

1、查看帮助。

.\gltfpack.exe

2、压缩glb文件。

@echo off
set name=文件名
echo 开始转换...
.\gltfpack.exe -i ./old/%name%.glb -o ./new/%name%.glb -cc -tc -kn -km -mm
echo 转换完成
pause
最后更新于24天前
本文由人工编写,AI优化,转载请注明原文地址: 3D模型秒变小体积神器!开源库meshoptimizer压缩+OBJ转GLTF全攻略

评论 (0)

登录 后发表评论

暂无评论,快来发表第一条评论吧!