文件体积不等于性能
一个2 MB的GLB只跑12 fps,而一个20 MB的GLB跑满60 fps——两种情况都完全可能。压缩解决的是下载时间,这个工具解决的是帧时间,两个问题几乎毫不相干。
真正让您掉帧的是绘制调用。每一个独立的网格图元都是CPU必须发给GPU的一条命令,还伴随着状态切换。一个从CAD导出、被拆成400个零件的家具模型,每帧就会产生400次绘制调用,再狠的Draco压缩也救不了。
每个步骤做什么
合并网格 — 把材质和属性布局相同的图元合并为一个。这是实时性能上收益最大的一步,常常让一个场景从几百次绘制调用降到个位数。
GPU实例化 — 当同一个网格重复出现很多次(螺栓、椅子、树木)时,将其转换为 EXT_mesh_gpu_instancing,让GPU用一次调用画完所有副本。
材质调色板 — 把仅基础色不同的材质合并为一个带图集的材质,从而解锁原本无法合并的网格。
去重 — 导出器经常把同一个访问器、贴图或材质写两遍。合并它们既省内存,也为后续合并创造条件。
剔除 — 删除没有任何引用的节点、材质、贴图和访问器。纯赚,绝不改变外观。
焊接 — 合并位置重合的重复顶点,缩小索引缓冲并改善缓存表现。
压平 — 折叠那些唯一作用就是承载一个变换的嵌套节点。
重排 — 重新排列索引与顶点,让GPU的变换后顶点缓存命中率大幅提高。通常能白得5%–15%的GPU侧提升。
稀疏访问器 — 把大部分为零的数据(变形目标中很常见)以紧凑方式存储。
法线 — 在导出器忘记写入法线时补充生成顶点法线,这正是某些模型显示为硬边或全黑的原因。
顺序很关键
这些步骤并不彼此独立。焊接必须在合并之前,否则合并后的网格会带着重复顶点。实例化必须在压平之前,因为压平会破坏实例化赖以识别的重复结构。重排必须放在最后,等最终索引缓冲生成之后。工具会强制执行这个顺序——开关只决定哪些步骤参与。
两个预设
- 实时 — 全部开启。为网页查看器或引擎准备资源时使用。
- 安全 — 仅执行去重、剔除、焊接和重排。不做任何结构性改动,节点名称与层级完整保留。
如果您的应用按名称查找对象,或对特定节点做动画,请选择安全。合并和压平会破坏这些。
它做不到什么
合并只针对材质相同的网格。一个真正拥有40种不同材质的模型,仍然至少需要40次绘制调用——那种情况的解法是贴图图集,属于建模工作,无法自动完成。逐步结果表会如实告诉您每一步实际达成了多少。
隐私
所有变换都在您的浏览器本地运行。不上传、不存储、不记录任何内容。
Tiny Online Tools







