用途:以编程方式压缩 GLB/glTF 3D 模型。库通过 compress() 运行完整六阶段流水线:清理去重、几何简化、GPU 实例化与稀疏编码、动画关键帧重采样、纹理压缩为 WebP(最大 1024x1024)、最终由 gltfpack 优先或 meshopt WASM 回退处理。
主要能力:init() 预热 Draco 与 Meshopt WASM,可消除冷启动延迟;compress(input, options?) 接收原始 GLB 字节并返回 buffer、method(gltfpack 或 meshopt)及 originalSize。选项包括 preset(default/balanced/aggressive/max)、simplifyRatio、onLog、quiet、keepNodes。getHasGltfpack() 可查询 gltfpack 是否可用。检测到蒙皮时会自动跳过 flatten、join、weld、mergeByDistance、reorder、quantize 与自动减面等破坏性变换,避免骨骼损坏和权重异常。预设区分蒙皮与静态模型参数,例如 default 蒙皮使用 -vp 20 -kn,静态使用 -vp 16;aggressive 与 max 进一步强化量化、超级压缩与简化。
使用方式:从 glb-compressor 导入 compress、init 与 PRESETS,先 await init(),再读取 GLB 字节并调用 await compress(glbBytes, { preset: 'aggressive' }),最后写入结果 buffer。包还提供 glb-compressor/server 与 glb-compressor/cli 导出,并针对 Bun 与 Node.js 提供条件导出。
适用场景:需要在构建流程或服务端批量处理 GLB/glTF 资产、希望按预设控制压缩强度、并保留蒙皮模型动画完整性的项目。
限制:蒙皮模型会跳过部分变换,压缩率可能低于静态模型。不要从 cli/ 或 server/ 导入,库以 lib 为依赖根。不要在蒙皮模型上手动执行 flatten/join/weld/quantize。新增公共 API 不应绕过 mod.ts 桶文件。实际压缩效果、平台兼容性与收费信息暂未提供。