Collada 1.4.0: pb with skinning (where R bones bindpos mtx?)

Hello,
In Collada 1.3, I used to read the vertices’ positions in the bind pose, and to get the bones’ matrix in the same bind position.

In Collada 1.4.0, the vertices I read are in the bind pos here :

  <library_geometries>
    <geometry id="Player_Heavy_Shorts01_Tshirt02_CharMainCtrlShape-lib" name="Player_Heavy_Shorts01_Tshirt02_CharMainCtrlShape">
      <spline closed="true">
        <source id="Player_Heavy_Shorts01_Tshirt02_CharMainCtrlShape-lib-Position">
          <float_array count="33" id="Player_Heavy_Shorts01_Tshirt02_CharMainCtrlShape-lib-Position-array">
                     [X Y Z X Y Z X Y Z in bind pos]

while I cannot found where the bones’ matrices in the bind position are stored. The only matrices I found are :

  • these bones matrices, which I don’t know what they mean (are they the bind_pos bone positions, or their inverses?)
<library_controllers>
    <controller id="skinCluster5">
      <skin source="#Player_Heavy_Shorts01_Tshirt0Shape2-lib">
        <bind_shape_matrix>1.000000 0 0 0 0 1.000000 0 0 0 0 1.000000 0 0 0 0 1.000000</bind_shape_matrix>
        <source id="...">
          <float_array count="1008" id="...">[several matrices]
  • and these ones, which are the bones’ matrices in the animation first key :
<library_visual_scenes>
    <visual_scene id=...>
      <node id="...>
        <matrix sid="transform">...</matrix>

In Collada 1.3.0 the vertices positions were also given in the animation first key position, while these positions seem to have disappeared in Collada 1.4.0
Can anyone point me at where I can find the bones matrices in the bind pos, and how I can use them?
Thanks.

I will answer myself. This part of the Collada file :

<library_controllers> 
    <controller id="skinCluster5"> 
      <skin source="#Player_Heavy_Shorts01_Tshirt0Shape2-lib"> 
        <bind_shape_matrix>1.000000 0 0 0 0 1.000000 0 0 0 0 1.000000 0 0 0 0 1.000000</bind_shape_matrix> 
        <source id="..."> 
          <float_array count="1008" id="...">[several matrices]

seems to store the inverse world matrix of the bones in the base pos.

In the skin controller, you’ll find a source with the bind-poses of the bones. The <joints> elements has two valid input semantics, “JOINT” and “INV_BIND_MATRIX”. The “JOINT” source contains the list of scene nodes that are the bones of the skin and the “INV_BIND_MATRIX” source contains the list of transformation matrices, inverted, of these bones, when they were bound to the skin…

The <bind_shape_matrix> element contains the transformation matrix for the mesh when it was bound. In COLLADA 1.3, this matrix was baked into the mesh to generate the bind-positions and bind-normals. For most applications, this matrix should be baked into the mesh.

Sincerely,