为什么 GLB 优化后反而更大

输出变大不一定是处理失败。新设置可能选择了另一种格式或精度,原文件也可能已经压缩过。先对照输入、输出扩展和实际命令,再决定调整哪个参数。

检查是否没有重新启用几何压缩

“保守优化”不会主动启用 Meshopt。如果输入本来已经使用 Meshopt,再以关闭压缩的设置处理,即使三角面数量不变,也可能变大。需要在输出中继续使用 Meshopt,且应用支持时,可选“更小文件”预设。

波纹示例测试大小(字节)三角面
已使用 Meshopt 的输入39,2488,192
关闭压缩后重新处理119,1208,192

这次原生 gltfpack 1.3 测试把已经优化的 CC0 示例再次送入处理。输出设置变了,文件随之变大,并没有增加三角面。因此,多处理一遍并不保证再缩小一圈。

检查纹理编码与精度变化

UASTC 可能比 ETC1S 大得多,它侧重画质,并不是最小体积选项。关闭几何量化或提高精度,也可能增加数据量。请将这些选项与原文件生成时的设置对照。

很小的模型或纹理还可能增加一些元数据、容器开销,超过节省下来的部分。压缩没有通用的最低收益保证。如果新格式对应用没有实际帮助,保留原文件即可。

前后要比较同一种大小

应当用下载后的文件大小对比下载后的文件大小。浏览器网络面板可能显示经过 HTTP 压缩的传输量,而文件管理器显示的是磁盘上的 GLB 大小。这两个数字也都不直接等于加载后的纹理显存占用。

只改一个设置再试

回到原始输入,先检查压缩选择,再检查纹理编码和精度。把每次命令和结果一起保存,找到体积增加发生在哪一步。不要因为编码变化导致文件变大,就立即用更多减面来补偿。

比较 ETC1S、UASTC 与 WebP →

按步骤比较文件体积 →

引擎参考: gltfpack

打开优化工具 ↗