GLB 优化器
让 GLB 或 glTF 文件更小、渲染成本更低。拖入文件,然后选择要执行的操作:清除未被引用的数据、焊接和简化几何体、合并网格以减少绘制调用、缩放并重新编码纹理,以及使用 Meshopt 压缩整个文件。每一步处理后都会显示文件大小,你可以在确认前预览结果,而且文件不会被上传。优化和预览免费;下载结果包含在 Standard 和 Pro 方案中。
只发布很小一部分体积。
剔除没有被引用的内容,合并并简化几何体,重新编码纹理,最后用 Meshopt 打包。每一步都会给出体积数字,下载前还能预览结果。
84% smaller. Our sample character with 10 clips baked in.
Meshopt、量化,以及为什么这里没有 Draco
Meshopt(EXT_meshopt_compression)是默认选项,也是所有浏览器运行内容的正确选择。它能达到与 Draco 相近的文件大小,而解码速度快数倍。这一点很重要,因为玩家盯着加载画面时,解码工作正在同时进行。three.js、Babylon.js 和 PlayCanvas 都支持它,而且解码器足够小,几乎无需考虑其额外开销。
量化完全不需要扩展。它使用更小的数值类型存储位置、法线和 UV,任何 glTF 加载器都能直接读取,无需解码器。节省的空间较为有限,但文件仍是普通 glTF;如果要把文件交给不受你控制的处理管线,这是最稳妥的选择。
Draco 文件可以在这里正常打开,因此你可以解压 Draco 文件,或将它转换为 Meshopt。写入 Draco 则是另一回事,本工具不支持。唯一能在浏览器中运行的 Draco 编码器是 asm.js 构建版本,仅初始化就需要数分钟,而仍在维护的软件包只提供 Node 构建版本。提供一个会让浏览器标签页卡死的按钮,还不如不提供。如果你明确需要输出 Draco,可以在自己的电脑上使用 glTF-Transform CLI,一条命令即可完成:
npx @gltf-transform/cli draco input.glb output.glb每个步骤实际会做什么
移除未使用的数据会执行 prune 和 dedup。导出工具经常留下完全未被使用的材质、以两个不同名称保存的重复纹理,以及空节点。对于经过两三个工具处理的文件,仅此一步往往就能明显减小文件,而且不会改变模型的外观。
焊接顶点会合并位置和法线相同的顶点,将三角形集合转换为索引网格。大多数导出工具已经会这样做;没有这样做的工具会让每个共享顶点都产生三份数据开销。
按材质合并网格用于解决绘制调用问题。如果模型由两百个独立对象组成,而它们都使用同一种材质,GPU 就要执行两百次操作,而不是一次。合并会展平层级结构,因此该功能默认关闭:如果游戏需要移动各个独立部件,或者模型使用了骨骼绑定,你就需要保留这个层级结构。
简化几何体使用 Meshopt 简化器对网格进行减面,并以你设置的三角形百分比为目标。对于包含数十万无用三角形的扫描模型或 CAD 模型,这是最合适的调节手段。降到大约 40% 以下时,有机形状上会开始出现明显变化,而硬表面模型受到的影响较小。
精简动画关键帧会重新采样动画轨道,并删除位于相邻关键帧之间直线上的关键帧。对于从工具中以 60fps 导出且每一帧都经过烘焙的动画片段,这部分数据可能占据文件的大部分空间。
纹理步骤会缩放并重新编码纹理。WebP 的大小大约是同等 PNG 的三分之一,并且所有现代浏览器都支持。将最大尺寸限制为 1024,通常不会在游戏模型上产生可见差异,而且这往往是减小下载体积最有效的单项操作。
下载大小不等于内存占用
压缩会缩小文件,但不会减少纹理上传后占用的显存,因为 JPEG、PNG 和 WebP 在 GPU 上都会展开为原始像素。一张 2048×2048 的纹理大约占用 22 MB 显存,无论其下载文件是 4 MB 还是 200 KB。
如果 GLB 查看器显示问题来自纹理内存而非文件大小,解决方案是使用 KTX2。KTX2 在进入内存后仍保持 GPU 压缩状态。两者相辅相成:KTX2 用于减少 GPU 存储的数据,而 Meshopt 用于减少网络传输的数据。
常见问题
如何压缩 GLB 文件?
将文件拖到上方,保留默认设置,然后点击“优化”。默认设置会清理未使用的数据、焊接顶点并应用 Meshopt 压缩,这是 Web 游戏的稳妥组合。分步骤列表会显示文件大小具体是在哪一步得到缩减的。
我的文件能缩小多少?
这完全取决于文件中的内容。未经过压缩、以网格数据为主的模型,使用 Meshopt 后通常能缩小 60% 到 80%。主要由 PNG 纹理组成的文件,在将纹理转换为 WebP 之前几乎不会变小。主要由动画数据组成的文件只会对关键帧精简有明显反应。分步骤明细会告诉你属于哪种情况。
优化会损坏模型吗?
移除未使用的数据、焊接、关键帧精简和 Meshopt 压缩在外观上都是无损的。简化则不是:它会移除三角形,在激进设置下会产生明显变化。纹理缩放和 JPEG 转换同样有损。预览会显示实际输出结果,方便你在下载前检查。
Unity 或 Godot 能打开处理后的文件吗?
Meshopt 支持取决于导入器及其版本,因此如果文件需要导入游戏引擎而不是浏览器,请选择“量化”。量化不需要扩展,并且可以在任何环境中使用。如果目标是网页,Meshopt 是更好的选择。
能打开已经压缩的文件吗?
可以。加载时会解码 Draco 和 Meshopt 压缩的输入文件,因此你可以解压 Draco 文件、将其转换为 Meshopt,或使用不同设置重新压缩。
我的模型会被上传吗?
不会。整个处理管线(包括编码器)都在浏览器的 Web Worker 中运行。页面加载完成后,即使离线也能使用。