Representing single vertices being unaffected by skinning
I don't see a simple way to represent single vertices being unaffected by skinning (static vertices in an otherwise animated mesh). What I have considered:
- All zero
JOINTS_nandWEIGHTS_nattributes for the unaffected vertices. This does not work since the spec mandates a normalized weight sum of exactly 1 (plus/minus a minimal error) - see e.g. https://github.com/KhronosGroup/glTF/issues/1929. - A separate, unskinned primitive. This would probably work for most models in practice, but it doesn't work if I have e.g. a triangle where only a single vertex is unaffected by skinning but the other two are.
- Introducing no-op bones. This would work, but it feels dirty and presumably makes the models harder to edit if imported into e.g. Blender.
Background: I'm writing a b3d (Blitz3D) to glTF converter. The Blitz3d model format turns the lookup around: Rather than each vertex having affecting joints & weights as attributes, each joint has a map of vertices to weights. This allows vertices to be completely unaffected by skinning; they simply don't appear in these map(s), or they appear only with zero weights.
I would probably copy the Blender solution of:
Introducing no-op bones. This would work, but it feels dirty and presumably makes the models harder to edit if imported into e.g. Blender.
Reference:
https://github.com/KhronosGroup/glTF-Blender-IO/issues/1151