I am currently adding the option to import many 3D file formats into our engine. Collada/FBX/etc. Some formats like Collada explicitly give a bone Matrix/Orientation like so:
<node name="leg_left_toes" id="leg_left_toes" sid="leg_left_toes" type="JOINT">
<matrix sid="matrix">1.000000 0.000000 -0.000000 0.135309 -0.000000 1.000000 0.000000 0.000000 0.000000 -0.000000 1.000000 -0.000000 0.000000 0.000000 0.000000 1.000000</matrix>
While others only give a position and then just give xyz translation for each bone:
In formats where there is only a position when they are imported into Max/Maya/Motionbuilder they somehow recalculate the same orientations.
A) How can you get the bone orientations from a list of positions?
B) From what I can tell it looks like it has to do with their children bones with a single child simply point their X-Axis to their child, but what about bones with multiple children (Like the Hips in most skeletons)? Or no children (Like fingertips)?
C) Why do all of these toolsets choose to face the X axis to the child/children? I would figure Z would be the most natural choice. Easy mirroring perhaps?
Thank you in advance to all who help =).
Edited by jchmack, 05 February 2013 - 12:35 AM.