为什么 GLB 优化后反而更大
输出变大不一定是处理失败。新设置可能选择了另一种格式或精度,原文件也可能已经压缩过。先对照输入、输出扩展和实际命令,再决定调整哪个参数。
检查是否没有重新启用几何压缩
“保守优化”不会主动启用 Meshopt。如果输入本来已经使用 Meshopt,再以关闭压缩的设置处理,即使三角面数量不变,也可能变大。需要在输出中继续使用 Meshopt,且应用支持时,可选“更小文件”预设。
| 波纹示例测试 | 大小(字节) | 三角面 |
|---|---|---|
| 已使用 Meshopt 的输入 | 39,248 | 8,192 |
| 关闭压缩后重新处理 | 119,120 | 8,192 |
这次原生 gltfpack 1.3 测试把已经优化的 CC0 示例再次送入处理。输出设置变了,文件随之变大,并没有增加三角面。因此,多处理一遍并不保证再缩小一圈。
检查纹理编码与精度变化
UASTC 可能比 ETC1S 大得多,它侧重画质,并不是最小体积选项。关闭几何量化或提高精度,也可能增加数据量。请将这些选项与原文件生成时的设置对照。
很小的模型或纹理还可能增加一些元数据、容器开销,超过节省下来的部分。压缩没有通用的最低收益保证。如果新格式对应用没有实际帮助,保留原文件即可。
前后要比较同一种大小
应当用下载后的文件大小对比下载后的文件大小。浏览器网络面板可能显示经过 HTTP 压缩的传输量,而文件管理器显示的是磁盘上的 GLB 大小。这两个数字也都不直接等于加载后的纹理显存占用。
只改一个设置再试
回到原始输入,先检查压缩选择,再检查纹理编码和精度。把每次命令和结果一起保存,找到体积增加发生在哪一步。不要因为编码变化导致文件变大,就立即用更多减面来补偿。
引擎参考: gltfpack
打开优化工具 ↗