Renames, not churn
Objects are matched by name, then by content hash, then by similarity, the
same three-tier strategy git uses for file renames. An exporter that
renumbers Mesh.001 reads as a rename, not as a rewrite.
A checksum says two files differ. It cannot tell a lossless recompression from a
rig that quietly lost three finger joints, and only one of those takes your
avatar off the screen. Drop a .glb on each side and get the change
set: geometry, materials, textures, skeletons, and clips, with renames and moves
detected the way git detects them.
Objects are matched by name, then by content hash, then by similarity, the
same three-tier strategy git uses for file renames. An exporter that
renumbers Mesh.001 reads as a rename, not as a rewrite.
Vertex data is compared at a quantum of 1e-4 units, so the float drift a re-export or a Draco round trip introduces does not register while a genuine edit does.
none, cosmetic, minor,
major, breaking. Breaking means something a
consumer references by name is gone: a clip, a joint, a mesh. That is the
failure that renders fine and never moves.
This page, the glb-diff CLI, and
the free API all run
@axis/glb-diff,
so a verdict in CI can never disagree with what you see here.