title: glTF Are bone matrices specified in local or model space?
body: <p>So the official documentation says:</p>
  <blockquote>
  <p>Note that the node transform is the local transform of the node relative to the joint, like any other node in the glTF node hierarchy as described in the Transformation section.</p>
  </blockquote>
  <p>I am a bit fuzzy as to what exactly the distinction is between node and joint here.</p>
  <p>Assuming I can conflate the 2, go to the <code>SimpleSkin</code> exmaple int the <a href="https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0" rel="nofollow noreferrer">models</a> And look at the json:</p>
  <pre><code> &quot;nodes&quot; : [ {
      &quot;skin&quot; : 0,
      &quot;mesh&quot; : 0
    }, {
      &quot;children&quot; : [ 2 ],
      &quot;translation&quot; : [ 0.0, 1.0, 0.0 ]
    }, {
      &quot;rotation&quot; : [ 0.0, 0.0, 0.0, 1.0 ]
    } ],
  
    &quot;skins&quot; : [ {
      &quot;inverseBindMatrices&quot; : 4,
      &quot;joints&quot; : [ 1, 2 ]
    } ],
  </code></pre>
  <p>joint 1 is the parent of joint 2. So if I treat that hierarchy like any other node hierarchy, the transform of node1 is to be applied to node 2 as well, given the values, at rest node 1 and node 2 rest in the same position.</p>
  <p>But when you look at the diagrams for that example:</p>
  <p><a href="https://i.stack.imgur.com/JxQtI.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/JxQtI.png" alt="enter image description here" /></a></p>
  <p>They are not in the same position. If, however you consider that the transforms are independent of each other (i.e that the transform of joint 1 does not affect joint 2), then joint 1 sits above joint 2, which is at minimum consistent with what the diagrams show (although not consistent with what the animation describes, since it's the top bone that should rotate and in this configuration it's the bottom one that will).</p>