View Full Version : rotate, rotate axis, and joint orient

10 October 2005, 01:44 AM
hello all,

i am trying to work on my rigging skills, and develop some better habits of setting things up.

recently, i was on a project that used mocap and i set up the rig. i thought that the rig was clean, i set it up, made sure all of the transform rotates of each joint was 0,0,0 - and sent it off to be used.

because of the way the mocap place was inporting the data, my rig had a lot of flaws.

the biggest problem was that i had non-zero numbers in the 'rotate axis' (under the transform menu in the attribute editor). i also had non-zero numbers in the 'joint orient' (under the joint menu in the attribute editor). the mocap people told me it was okay to have non-zero numbers in the joint orient, but that the rotate axis MUST be zero.

i guess this is a fairly common practice. so i notice that if i go into component mode of a joint and rotate the axis around it messes up the 'rotate axis'. also when i move joints around to arrange them, and then zero out the rotates in the transorm node, this does not do anything to fix problems with the rotate axis.

the solution the mocap place gave me, was just to add the numbers in the rotate axis and joint orient and then put that number in the joint orient and put the rotate axis back to zero. so i got the work done, but i guess my question is:

can somebody maybe explain to me a bit the difference between the transform rotate, the rotate axis, and the joint orient? i really cannot find much anywhere and i am hoping some seasoned pro could explain things a bit.

in any case, i am starting to pay a lot more attention what is happening to the rotate axis while i am changing joints around.

10 October 2005, 03:39 AM
hmmm, this is bad luck, nobody has replied to my thread . . . errrr, ummm, i hope the question i asked is not so basic that you are all just thinking, "oh my gosh, what a noob!"

LOL, oh well.

something i have just noticed in 6.0 vs. 6.5.

as i mentioned, i have been solving the problem of the rotation axis not being 0 by just adding it to the joint orient in 6.0.

but oddly enough, in 6.5, all i have to do is type in 0 in the rotate axis field, and everything is fine and dandy. does anybody know what they changed between 6.0 and 6.5 that changes this?

well, thanks to anybody who can answer my ridiculous questions! maybe we should just outlaw rotating joints in maya! wooooooohoooooooo!

(and please do not tell me they will integrate character studion into maya, i will shoot myself . . . i might even shoot myself twice!)

10 October 2005, 03:33 PM
Its very good question--not a trivial question at all--I'll try to post tonight...

10 October 2005, 05:36 PM
i look forward to your answer. i just have a very vague idea of what all 3 of these different kind of rotations are doing, but i really cannot find a good explanation in any tutorial or book.

10 October 2005, 03:43 PM
jointRotate, jointOrient, jointRotateAxis

The easiest way to get at this is to draw a two joint
chain--y up +, rotate order xyz --along the y axis, grid snap "on".
Toggle rotate axis display and you should see that the
orientations in the 2 joints are matching worldspace--
if this is not the case--go to the attribute editor
and zero joint orient and jointRotate values. This
is a good example set up.

Rotate joint1. Now move the rotation values from the
rotation channels to the joint orient channels. joint
Orient is simply a rotational offset. However, unlike
rotate, joint orient does not respect rotate order--so
if you rotate order is not xyz--you cannot freely transpose
euler vals between jointOrient and rotate channels.
However--if you use "freezeTransformations"--Maya will
properly reAllocate orientation vals from rotate to
jointOrient channels.

undo back to the initial set up and rotate joint1. Now retype
the rotate values into the rotationAxis channels and zero the
rotate channels. The orientation of the joint appears the same
but the y axis of the joint is now longer aligned with the
legnth of the joint--you have rotated the axis. The reason
values isn the rotateAxis channels are undesirable is that
we usually want our major axis to run along the length of
the bone--but not always. Consider the ankle--which should
have a worldspace orientation--otherwise when you pivoted
the ankle the skeleton foot would not sweep evenly across
the floor.

There are many strategies for how to do set ups and mocap skels.
for example--lets say you bind pose has an elbow bend of 12 degrees.
Do you zero that value? Then a straight elbow will have a value
of negative 12 degress.

Good luck--Paul

10 October 2005, 12:26 AM
hi Paul,

thanks for taking the time out to write such a detailed reply.

your information has helped me understand things better.

CGTalk Moderation
10 October 2005, 12:26 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.