bones rotate order matching controlers rotate order ?


Hello guys !

On the process of rigging a character, i’m facing the “gimble lock” problem !
I got the theorie of the Euler angles, the practice is a little confusing …

trying to get it right, I found a video of a guy adding the Rotate Order as a keyable on his chanel box, so he can easily adapt to the situation.

Which got me to the question, do the controler rotate order have to match the bone rotate order ?
If not matching, is it creating a wierd offset ?
What is the cleanest way to deal with that ?

I know that rigging can be a pain to get everything right and clean ! I don’t want to miss anything to avoid the unexpected while animating …

I am using maya,
Here is the way I create a controller :

head_ctrl_offset <---- This group gets all the transform attributes when positioning the ctrl along the bone my ctrl stays clean
head_ctrl_auto <---- This group is used as an extra offset if needed
head_ctrl <----- This is the curve selectable to orient bones with contraints

I learned most of my knowledge thanks to the Jahirul Amin rigging tutoials.

Thanks for your help :slight_smile:


Gimbal lock happens when you have freedom to rotate in all 3 “XYZ” axis. Have a child ctrl under main wrist ctrl hidden and pop it out when the main wrist ctrl runs into gimbal lock. Ctrl group should accommodate the transform value to align with the joints orientation.


Thanks for the reply !

I liked your idear of using children controler under the main to go around gimble lock.
But i find it verry handy to only use one controler for a specific bone, so here is what I did on an xyz rotate order exemple :

I created the bone ctrl : wrist_ctrl
and a locator at the same point : wristXoffset_loc
(both are accomodated to the joint orientation )


wrist_ctrl orient constrain the wristXoffset_loc on th Y and Z axis
wristXoffet_loc orient constrain wrist_jnt on all rotate axis

on wrist_ctrl, I created a “Rotate X offset” attribute that I connected to the wristXoffset_loc thanks to the Connection Editor.

Now, and with a little bit of hiding and locking attributes, to keep it clean and secured, I can manipulate my joint with the wrist_ctrl attributes : rotateY, rotateZ and rotateXoffset
That way I can acces my 3 animation curves in one click and no more gimble lock on the wrist controler !

Does it seems relevant ? it’s the first time im playing with Maya that way so let me know if im wrong :slight_smile:

(I hope I kept it clear …)


why not try rotate order even that is also similar and more easy. Have same orientation as that of the joint for the ctrl and ctrl’s grp. now add an attr (Float) Rotate_order.
Connect the Rotate order to rotateOrder of the same ctrl. this will be passed on to the joint through the constraint.



So if I wanted to play with Rotate Order to get ride of gimbal lock, can’t I just pop out the “rotate order” attribut with the Channel Control ?
by default it’s Non keyable Hidden, in one click I can set it as a keyable attribute.

What would be the point to create a new attribute and to connect it “to himself” ?
Is there a difference ?

From what I tested, if the controller already have some rotations inputs, it flips when I key the Rotate order attribute to another order …
Does it means I can only interact with this attribute when the ctrl has 0 rotation inputs ?

Can you be more specific when you say “this will be passed on to the joint through the constraint.”
I key the ctrl rotate order attribute to different orders at different times on the timeline, but I dont see the joint rotate order changing accordingly …

Does it matters ? that’s the logic I’m trying to understand. Do the joint have to have nice and clean anim curves as long as the ctrl curves are clean ? should they match ?

thanks for your time