View Full Version : distributed rotations and other maya rigging stuff

01 January 2009, 07:51 AM
i tried asking for help once before, but i didn't get much of a response. So i'll try again:

i'm trying to rig a character and to include distributed rotations in the thighs and biceps.
The way i want to do this is with utility nodes. But i've been having problems well before i even get to that stuff.

so... i'll try to list the basic steps or whatever i think i need.

I think i'd need the following things:

a single, base spine, starting from the root joint at the pelvis. This would have the IK spline and the clusters used to control that curve. Along with the extra simple spine to help bend.

Bound arms, and bound legs: These would be the places that have the extra joints in the thighs and biceps. I would use the color blend and multiply/divide nodes to drive the twist rotation. (though i don't know exaclty how to do that.)

Next, I create a basic rig for each limb: IK legs, IK arms and FK arms. The arms would have a 3-arm IK/FK blending thing going on. The IK or FK joint chains drive the bound chains, and the rotations of either the joints, or more likely some group node or the controllers themselves drive the distributed rotations.

for example:

the bound arm is composed of:

(then the fingers that make up the hand.)

The FK arm, on the other hand:
elbow 1
elbow 2
(wouldn't have any hand/finger stuff.)

All the coresponding bound joints would be orient constrained to the FK arm's joints, with the exception obviously being the bicep joints that don't exist in the FK chain. The blend nodes would be used to take the rotation of... something (what joint would be best to drive the rotation?) Well, whatever joint is the source of the rotation...

It gets divided by the number of joints being funneled to, so in the above example, driver joint is splitting it's rotate X into 3 joints in the bound arm. I'd like help figuring out how to do that specifically.

technically, the IK/FK chairsare not directly connected to the bound hierarchy. Prior experimentation with parent constraints lead to promising results.

after that, everything is pretty straight forward, i don't know any fancy way to control the neck/head, except for directly connecting a controller to the rotate of the neck bones.

And another note: is there a way to prevent, or tell in advance, if an IK/FK arm setup is going to 'shift' when connected to an IK spline spine?

01 January 2009, 10:56 PM

Even after reading your text twice it´s hard to see what you are after? Maybe that´s why there´s answers

But something about your thoughts:
Yes, to make a 3-arm FK/IK you can use blendcolor-nodes. They are preffered before constrains IMO, much faster. Just plug in the values and then have an attribute that does the blending and put the result into the resulting chain

Biceps can be make with influence objects + set driven keys, or with blendshapes(corrective blendshapes). I have also tried to have a joint positioned at the bicep muscle of the body, and the aim-constraining it towards the wrist. It worked OK, but it was alot of work with the weightpainting of course

Forearmtwist you just take the rotation of the FK-wristjoint and put it through a multiplyDivide-node and divide it a bit and the put the output into the forearmjoint. Or if your gonna use several, I usually have 2. forearmjoint(s) should be parented under the last elbowjoint and not be the parent of the wrist, otherwise you have a cycle

For the back-spline I preffer to smoothbind joints to the curve over using clusters. Why? Because then automaticly I have much more rotational controll in all axis with the adwanced twist controll.

Yeah thats all from me for now, ask more speciffic questions and you´ll probably get more answers :)


01 January 2009, 11:13 PM
well, i'm trying to figure out the precise order and location of connections. What part of a given thing goes into the input/output of each untility node.

I for example just figured out (which you confirmed) the idea of the forearm twist, pump the rotate X of say, the wrist joint into the multiply divide node's input1. Set it to divide, and put in the corresponding input 2 slot the number i want to divide it by. Take the output of that node and push it into the rotate X of the forearm joint.

The bicep joints aren't used for making the bicep bulge, but making it twist smoothly like the forearm does, when i move the shoulder or forearm around. I'm trying to figure out which part of the rig drives those rotations, and how to connect them to the blend node. Either the shoulder or the wrist. Probably the shoulder.

i have no idea what you mean regarding the spine, here's what i know how to do:

you make a spine chain, and then you go into the local rotation axises and switch it so that all the Z lines are pointed to the right, when looking at it from the front.

the mel code would be rotate -r -os 180 0 0;

After that, you make an IK spline tool from the bottom of the spine to the top. Depending on the settings, the curve will have a given number of CVs. You grab those verticies, say you have 5. The top most 2 get put into a cluster, the middle one gets put into a cluster, and the bottom most 2 get put into a cluster, for a total of 3.

those clusters are directly parented to the upper back and lower back control objects
while the middle cluster is merely parent constrained to both the upper and lower. Finally, a much simpler joint chain is created that lays over the more complicated one, and transfers it's movement to something, probably the clusters as well, to more accurately simulate the ability to bend over double.

All the binding would be done on the more complex skeleton, the simple FK assister would be hidden.

01 January 2009, 11:07 AM
Ok, well all the nodes pretty much works the same with input/output. You put something in to it, and then connect the output to the destination. With the condition node its called out color, but its the same workflow

Yeah with the spine, instead of using clusters you smoothbind extra joints to the curve. Like you make a copy och the top joint(chest) and then make a copy of the hipjoint, and then smoothbind them to the curve. Then you parent these joints under controllers, and you´ll have a nice setup with more rotation controll. I think its alot better than clusters ....

01 January 2009, 10:02 PM
you'd want to use the shoulder control to control the bicep's twist, as you can rotate your wrist without rotating your shoulder, so to have them both linked to the wristController wouldn't be helpful.
For the shoulder, i like to create a reverseJoint. I basically duplicate the shoulderJoint, and parent the duplicate under the shoulderJoint. Then I use a simple expression on the axis of rotation: shoulderReverseJoint.rx = shoulderJoint.rx * -1 (assuming rotateX is the twist). This allows you to skin to the reverse joint at the top of the arm (which will follow the other rotations correctly), but it wont move when you twist the shoulder.
You could add other joints in there if you wanted, just change the multiply value in the expression, and parent all the reverseJoints under the shoulderJoint.
just my 2cents

CGTalk Moderation
01 January 2009, 10:02 PM
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.