Joint Orientation in Maya

I have started to notice something strange with the joint orientations in maya.

I if manually rotate the axis of a joint in component mode, or through script (rotate -r -os 0 0 1;)

the axis will rotate but the translation manipulator doesn’t update with the new position, the only way that i am able to change the orientation of the translation manipulator is by running orient joint.

The reason i bring this up is because our collada exporter seems to take the orientation that the translation manipulator is using rather than the axis of the joint.

Does anyone know what is going on here, and how i can put custom rotations in the axis instead of having to orient the joint everytime?

I attached an image showing the two.

That is actually a good question. :open_mouth:

Rotating your joint axis using component mode or the command as you specified is setting a value in the jointOrient attribute and negating it in the rotateAxis attribute. The problem concerns how your final transformation matrix is composited in Maya, as this is what your exporter is looking at. I suggest reading this page in the documentation: Maya API: MTransformationMatrix Class Reference. Joints have the added complication of the jointOrient attribute, which lets you “zero” out your rotation values, but it is an additional pretransformation.

You basically need to be setting one attribute or the other, but not both (probably want to be setting jointOrient because it will be less visually confusing). Although this has the minor inconvenience of requiring you either a) use the orientJoint command or b) temporarily unparent children if you don’t want the transformation to cascade down the hierarchy, it will achieve the desired result

eyes glaze over thanks for the link, i had a feeling it was going to be a complex answer, but it makes sense.

I still dont quite understand how matrices work, one of these days i will be able to sit down and give them a look over…

Thanks for the info!