jointOrientX vs rotateX

Started by
5 comments, last by Darkbouncer4689 12 years, 9 months ago
Hey all,

I'm using collada files and have seen the following come up.

<translate sid="translate">0 6.84326 -0.145007</translate>
<rotate sid="jointOrientZ">0 0 1 90</rotate>
<rotate sid="jointOrientY">0 1 0 84.6854</rotate>
<rotate sid="jointOrientX">1 0 0 90</rotate>
<rotate sid="rotateZ">0 0 1 0</rotate>
<rotate sid="rotateY">0 1 0 -4.56752</rotate>
<rotate sid="rotateX">1 0 0 0</rotate>

I assumed that jointOrient was the same as rotate but now that my model is completely destroyed when rendered I believe this may be wrong. I'm using Collada and I'm not sure if this is a collada only issue, but what is the difference between jointOrient and rotate?

Thanks!
Advertisement
Possibly a pre rotate or a post rotate. I recognise the naming style, might be from 3ds? Anyway, check the specific collada exporter documentation for info might be a place to start.
The sid names are completely arbitrary -- they could be named "jointFooBaz67" and "translateScale", and the model would be unchanged. All you need to do is apply the listed transformations in the specified order, without even looking at the 'sid' field.
Thanks guys. Yeah I have a collada book but it fails to specify what jointOrient does.

So if I simply ignore the SID's and perform the rotations in order from top to bottom it should turn out correct?

That's what I did but my model explodes when I perform skinning. I have two of the same file, one in max and one in maya, the one in max simply has a 4x4 matrix instead of the translation/rotations and I get different values when I do the translation/rotations in order.
So if I simply ignore the SID's and perform the rotations in order from top to bottom it should turn out correct?
I have two of the same file, one in max and one in maya, the one in max simply has a 4x4 matrix instead of the translation/rotations and I get different values when I do the translation/rotations in order.
That sounds like a decent way to check if you've got the transforms right (assuming the max exporter is correct). Could be that you're interpreting values wrong (column vs row major, etc) or that you're performing the matrix multiplies back-to-front (as they're non-commutative).
my model explodes when I perform skinning.[/quote]this could also be because you've missed some other part of the implementation, such as not concatenating each nodes transform onto it's parent's, or not making use of the inverse bind matrices.
I'm using Collada and I'm not sure if this is a collada only issue, but what is the difference between jointOrient and rotate?


joint orient is a pre rotation.

Final Rotation = pre * rotate

You may also find occasions where a post rotate is also present (aka rotate orient, or rotate axes).
Thanks for the pointers guys.

This topic is closed to new replies.

Advertisement