Relationship between joint nodes and scene nodes

I’d like to make sure I’m thinking about the node hierarchy in the correct manner.

I’ve read through the spec and the tutorials a few times, though it’s late and I’m not focussing as well as I should be.

I’m trying to understand the relationship between scene nodes and joint nodes.

In particular, I’m curious to know…

Can a joint node also be a child of a regular scene node?

Is it safe to say that a joint node will only ever be directly referenced by:

a) skin-joints array
b) as a child of another joint node
c) never as a child of a non-joint node

Thanks in advance

This section of the spec may be what you’re looking for:

“The joint hierarchy used for controlling skinned mesh pose is simply the glTF node hierarchy, with each node designated as a joint. Each skin’s joints must have a common root, which may or may not be a joint node itself. When a skin is referenced by a node within a scene, the common root must belong to the same scene.”

Notably, all joint nodes must be descendants of the scene in which they are used. This could happen in either of two ways: a joint could be a child of the scene directly, or a child of a node descended from the scene.

The exception would be if the skin (and therefore its joints) are never instantiated by any mesh node, in which case they do not need to be part of a scene.

Thanks @donmccurdy, very helpful.
I’ve worked through a few examples now and pretty much have a handle on it. All the rigged and animated samples from the glTF-Sample-Models repository seem to be working well.

1 Like