[Maya Rig] Collapsing Geometry Help

So it’s been a long time since I’ve done any rigging, like Maya 8.0 while. So I went through a bunch of tutorials and have been trying to pickup on the rigging process again using more complex setups than ever before.

However, I’m having a rough time getting the geometry in the arms to work correctly. I was hoping some one would be able to help me figure out what I’m doing wrong.

About the Rig: Human rig, with spinal twist distribution, IK feet/hands, reverse foot control, double jointed knees/elbows, and twist distribution in the shoulders and wrist.

Twisting the upper-torso 90 degrees show’s that the arm joints are being rotated as well, causing major collapse in the arms which is not ideal at all because I have to manually add a massive amount of untwist amount to my shoulder twist joint to get it to reverse. Which is not enjoyable for the animator (me!) when trying to work things out.


Essentially the torso control is grouped separately from the shoulder controls, and they’re bound together with a Parent Constraint which I can then turn on/off depending on animation needs. I believe this is the start of my problems, as when I rotate the torso it’s then rotating the shoulder, which has the control for the hands inside it which have a Point Constraint on the IK handles, and begins moving everything which causes the joints to twist to properly follow everything, which I take in doing causes all the twist distribution to go haywire.

The twist distribution itself is done inside the Node Editor, which if I knew how to add comments to the thing I would, but there doesn’t seem to be a way.

In the upper path of the photo, is the counter-twist of the shoulder. It takes b_RightArm’s twist axis value, and inverts it with a -1 Multiply (since the reverse node failed to work), and applies it to the b_RightShoulderTwist to keep the geometry in the shoulder static as the arm twists.

On the bottom path, it takes b_RightArm’s and b_RightUpperElbow (again, double jointed) twist axis, and averages them out and applies it to the an Add which adds up the pre-calculated twist, and my manual twist float which is an attribute inside my C_RightHand control so I have manual control of the twist, which is then applied to the b_RightArmTwist bone.

I understand it’s hard to digest a rig from a couple of photos, you need to see all the constraints, the outliner,and mess with the rig a little. So if anyone is willing to go that far, I’ll happily send you the rig (I’m using Maya 2016 Student Edition). Otherwise just some pointers on what I’m doing wrong would be greatly appreciated!

First thing: Dont do direct connections from single rotation axes unless its a local transform. Due to euler flips this is never a good Idea. Instead use matrix information to determine the correct twist value. Or an isolated IK system to track twist separately or something along those lines. Thats way more stable than what you are currently doing. Tho still not perfect as these methos only allow for a -180 + 180 rotation, which isnt a big deal in the end as no single joint in our body can rotate more than that anyway.

PS: the operation of the reverse node is 1-x … not x*-1, keep that in mind.