Results 1 to 4 of 4

Thread: Question about identifying the 'root' of a skeleton in a...

  1. #1
    Junior Member
    Join Date
    Nov 2010
    Posts
    12

    Question about identifying the 'root' of a skeleton in a...

    ...COLLADA file that only has one skeleton in it.

    I've read a tutorial that states it is the first item listed in a <skeleton> element, but that doesn't seem to be the case (OpenCOLLADA exporting from Maya simply lists skin affecting bones alphabetically...)

    What is currently the accepted method of identifying the root bone of a skeleton - is it the first SID found in the joint name array? (Seems usable in the sample files I have seen and am able to generate, but doesn't seem to be something 100% reliable.)

    Thanks,

    WTH

  2. #2
    Senior Member
    Join Date
    Aug 2004
    Location
    California
    Posts
    771

    Re: Question about identifying the 'root' of a skeleton in a

    Roots can be any node from the (set of) JOINT inputs. It can be indicated by id, sid, or name attributes, e.g. sid="Root", or positionally as the base node of each independent node hierarchy that comprises the total skeleton.

  3. #3
    Junior Member
    Join Date
    Nov 2010
    Posts
    12

    Re: Question about identifying the 'root' of a skeleton in a

    Quote Originally Posted by marcus
    ...or positionally as the base node of each independent node hierarchy that comprises the total skeleton.
    That was what I expected except that in COLLADA's own sample files, astroboy_walk.dae, the skeleton base node is named "deformation_rig" and the immediate child of that node is named "root" - so initially I had figured it was just a joint of type 'NODE' instead of type 'JOINT" and didn't affect the skin; however, it didn't contain translation information, just orientation data (unlike all the other joints of type 'NODE' or type 'JOINT') so it seems to be a special case.

    Am I supposed to treat "deformation_rig" as the root node of the skeleton (even though its child is named "root") and compute its inverse bind pose matrix...?

    It's confusing that the joints in the skeleton affecting the skin have inverse bind pose data, but the joints that make up the hierarchy that don't affect the skin don't, but they have to have that data anyhow so presumably we calculate it ourselves...

    Is this something that was addressed in 1.5 COLLADA? All joints in the hierarchy must have inverse bind pose data whether they affect the skin or not?

    WTH

  4. #4
    Senior Member
    Join Date
    Aug 2004
    Location
    California
    Posts
    771

    Re: Question about identifying the 'root' of a skeleton in a

    Quote Originally Posted by WTH
    That was what I expected except that in COLLADA's own sample files, astroboy_walk.dae, the skeleton base node is named "deformation_rig" and the immediate child of that node is named "root" - so initially I had figured it was just a joint of type 'NODE' instead of type 'JOINT" and didn't affect the skin; however, it didn't contain translation information, just orientation data (unlike all the other joints of type 'NODE' or type 'JOINT') so it seems to be a special case.
    There are no special cases for <node> elements.
    Quote Originally Posted by WTH
    Am I supposed to treat "deformation_rig" as the root node of the skeleton (even though its child is named "root") and compute its inverse bind pose matrix...?
    No. If a node is not referenced by the skin controller as a joint, then it's not an influence on the skin.
    Quote Originally Posted by WTH
    It's confusing that the joints in the skeleton affecting the skin have inverse bind pose data, but the joints that make up the hierarchy that don't affect the skin don't, but they have to have that data anyhow so presumably we calculate it ourselves...
    All node transforms are local so it doesn't matter if the parent node is an influence on the skin or if its in its bind pose or not. I think the confusion is regarding the local coordinate systems of COLLADA nodes vs world space skinning. The specifications try to explain this (e.g. pg 39 in the 1.5 spec) topic.
    Quote Originally Posted by WTH
    Is this something that was addressed in 1.5 COLLADA? All joints in the hierarchy must have inverse bind pose data whether they affect the skin or not?
    No, it's the same. Why do you make that last assertion?

Posting Permissions

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