Results 1 to 3 of 3

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

  1. #1
    Junior Member
    Join Date
    Oct 2005
    Location
    Paris, France
    Posts
    3

    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 :
    Code :
      <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?)
    Code :
    <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 :
    Code :
    <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.

  2. #2
    Junior Member
    Join Date
    Oct 2005
    Location
    Paris, France
    Posts
    3
    I will answer myself. This part of the Collada file :
    Code :
    <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.

  3. #3
    Senior Member
    Join Date
    Apr 2005
    Location
    Feeling Software, Montreal, Quebec
    Posts
    111
    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,
    Guillaume Laforte
    Feeling Software Inc
    http://www.feelingsoftware.com

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •