返回 导航

其他

hangge.com

使用Draco对GLB模型进行压缩教程(使用glTF-Transform)

作者:hangge | 2026-01-30 08:51
    在 Web 三维可视化项目中,GLB 模型体积往往直接影响加载速度和交互体验。通过 Draco 几何压缩,可以在几乎不影响视觉效果的前提下,大幅降低模型中几何数据的体积。本文将通过样例介绍如何使用 glTF-TransformGLB 模型进行 Draco 压缩。

1,基本介绍

(1)DracoGoogle 开源的 3D 网格压缩库,作为 glTFKHR_draco_mesh_compression 扩展被广泛采用,能把以几何数据为主的模型大幅减小(对 >1MB 的几何体常见可达几十%到 ~95% 的压缩)。如果模型几何本身很小(<1MB),WASM 解码器的开销可能会抵消压缩收益;另外纹理、动画占多数时应结合纹理压缩/动画优化一起看效果。
提示:
  • 使用 Draco 压缩后的 glTF / GLB 无法用 Windows 自带的 3D 查看器(3D Viewer)打开查看,应为其只认“未压缩几何”的 glTF
  • 如果我们的目标是在 Cesium / Three.js / Babylon.js 这些 Web 项目使用可以放心使用 Draco 压缩。
(2)glTF-Transform 是一套面向工程化场景的 glTF / GLB 资源处理工具链,提供了完善的命令行工具和 Node.js API,可对三维模型进行结构优化、几何压缩、纹理压缩与格式转换等操作。
提示:glTF-Transform 将常见的模型优化能力(如去重、合并、焊接、简化、Draco 压缩、纹理压缩等)抽象为可组合的流水线,既适合在命令行中快速处理单个模型,也非常适合集成到构建流程或资产流水线中,用于大规模、自动化的三维资源优化。

2,安装 glTF-Transform

(1)首先确保本地有 Node.js 环境,Windows 系统到官网上下载安装最新的 msi 即可。

(2)接着执行如下命令全局安装 glTF-Transform
npm install -g @gltf-transform/cli

3,压缩 GLB 模型

(1)假设我们有一个名为 in.glb 的模型需要压缩,压缩前体积为 200MB

(2)使用如下命令为执行单一几何压缩,即只给 meshDraco,但纹理没变。该方式常用于临时对比。
gltf-transform draco in.glb out1.glb

(3)而执行如下命令则会执行一个综合优化的“生产级流水线”,不仅仅是几何压缩,而是包含清理 + 重排 + 压几何 + 压纹理等流水线活动。适用于生产环境。
提示:下面参数表示几何用 Draco 压缩,纹理用 WebP,保留原始几何精度。
gltf-transform optimize in.glb out2.glb  --compress draco  --texture-compress webp  --simplify 0

附:回退/解压成普通 GLB 模型

(1)我们也可以用 glTF-TransformDraco 压缩的文件解回普通 glb
gltf-transform cp out1.glb out3.glb

(2)可以看到还原后的 GLB 模型体积又变回 200MB
评论

全部评论(0)

回到顶部