






















Draco 是 Google 开源的 3D 网格压缩库,作为 glTF 的 KHR_draco_mesh_compression 扩展被广泛采用,能把以几何数据为主的模型大幅减小(对 >1MB 的几何体常见可达几十%到 ~95% 的压缩)。如果模型几何本身很小(<1MB),WASM 解码器的开销可能会抵消压缩收益;另外纹理、动画占多数时应结合纹理压缩/动画优化一起看效果。
提示:
glTF-Transform 是一套面向工程化场景的 glTF / GLB 资源处理工具链,提供了完善的命令行工具和 Node.js API,可对三维模型进行结构优化、几何压缩、纹理压缩与格式转换等操作。
提示:glTF-Transform 将常见的模型优化能力(如去重、合并、焊接、简化、Draco 压缩、纹理压缩等)抽象为可组合的流水线,既适合在命令行中快速处理单个模型,也非常适合集成到构建流程或资产流水线中,用于大规模、自动化的三维资源优化。
首先确保本地有 Node.js 环境,接着执行如下命令全局安装 gltf-transform CLI(核心工具)
npm install -g @gltf-transform/cli

安装额外的压缩插件(纹理/网格压缩必需)
npm install --save @gltf-transform/core @gltf-transform/extensions @gltf-transform/functions
安装成功后,cd到需要转换的模型路径下,(或者直接文件路径栏上执行cmd),压缩前原模型文件大小116300KB

使用如下命令为执行单一几何压缩,即只给 mesh 上 Draco,但纹理没变。该方式常用于临时对比。
gltf-transform draco in.glb out1.glb
可以看到压缩后的文件体积变为 111.77MB

而执行如下命令则会执行一个综合优化的“生产级流水线”,不仅仅是几何压缩,而是包含清理 + 重排 + 压几何 + 压纹理等流水线活动。适用于生产环境。
提示:下面参数表示几何用 Draco 压缩,纹理用 WebP,保留原始几何精度。【模型解构会发生变化,有些节点会被合并】
gltf-transform optimize in.glb out2.glb --compress draco --texture-compress webp --simplify 0
可以看到压缩后的文件体积变为 1.85MB
实际生产可使用下方两种,模型解构不会变,适配optimize参数规则(单压缩类型 + 结构三剑客,零报错保结构)
按 4.3.0 原生规则,--compress仅指定一种几何压缩类型,搭配--no-prune --no-join --no-flatten结构三剑客,彻底禁止层级修改 / 节点合并 / 节点删除,实现 WEBP 纹理压缩 + 单几何压缩,且 100% 保留原始层级 / 节点
选 Meshopt(无损几何压缩,适合需保留动画 / 变形目标)
gltf-transform optimize in.glb out6.glb --texture-compress webp --compress meshopt --no-prune --no-join --no-flatten
选 Draco(极致几何压缩,适合网页 / 移动端,体积更小)
gltf-transform optimize in.glb out6.glb --texture-compress webp --compress draco --no-prune --no-join --no-flatten
我们也可以用 glTF-Transform 把 Draco 压缩的文件解回普通 glb
gltf-transform cp out1.glb out3.glb
可以看到还原后的 GLB 模型体积又变回 117MB

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。