Jump to content

  • Log In with Google      Sign In   
  • Create Account

#Actualjchmack

Posted 05 February 2013 - 12:35 AM

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:

 

spine lower
1 //This is a joint index
0 1.06035 -0.00128843

 

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 =).  


#6jchmack

Posted 05 February 2013 - 12:31 AM

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:

 

spine lower
1 //This is a joint index
0 1.06035 -0.00128843

 

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?


#5jchmack

Posted 04 February 2013 - 08:35 PM

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:

 

spine lower
1 //This is a joint index
0 1.06035 -0.00128843

 

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)?

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?


#4jchmack

Posted 04 February 2013 - 08:32 PM

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:

 

spine lower
1 //This is a joint index
0 1.06035 -0.00128843

 

In formats where there is only a position when they are imported into Max/Maya/Motionbuilder they still have 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)?

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?


#3jchmack

Posted 04 February 2013 - 08:31 PM

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:

 

spine lower
1 //This is a joint index
0 1.06035 -0.00128843

 

In formats where there is only a position when they are imported into Max/Maya/Motionbuilder they still have 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)?

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.


#2jchmack

Posted 04 February 2013 - 08:30 PM

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:

 

spine lower
1 //This is a joint index
0 1.06035 -0.00128843

 

In formats where there is only a position when they are imported into Max/Maya/Motionbuilder they still have 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)?

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.

D) Does the initial orientation even matter?  From what I can tell as long as you have an inverse bind pose correct the model will look fine.  I could see floating point differences but I can live with that.


PARTNERS