View Full Version : A couple of questions when rigging a suit of armor

04 April 2010, 08:13 PM
So, the first one is actually not that specific. What i wonder is this: When i do my arms setup, I use a nurbs circle at the wrist -> hand joint, pop it in between those joint in the hierarchy to control the IK for the arm and the orientation of the hand. So my question is: Is it possible to put some kind of constraint on the controller to limit its translateability to the joints, so that i cant translate it further away from the shoulder than when the arm is completely stretched? Or should i set it up differently, so the hand bones aren't direct childs of the arm/hand controller?

Secondly: The character I'm working on has these pads over his elbows, like this: (

The pad is the thing outlined in red.

So it's supposed to be controlled mainly by the upper arm joint, but when the arm bends, get a part of the bend added to its angle, 50% or so. So thats, full parenting to the upper arm bone, plus 50% of the rotation along a specific axle from the lower arm joint.

How do i do this?

04 April 2010, 04:25 PM
Hi hellspawned,

Yes you can limit the translate values in the attributeditor. Go to your control, and you will find it under "Limit Information". There are 3 tabs there (Translate, Rotate, Scale) and you can limit the translation of the control there (Min and Max Translation...make sure you tick the corresponding checkBoxes). I am not entirely sure if that is the most elegant way to tackle this issue (could have the control change color if it goes past being fully stretched or something like that), but thats I guess one way to solve it:)

The other issue with the pad...I would try to perhaps mess around with orient constraining the object to both joints and then messing around with the weighting?

Hope that helps.

04 April 2010, 11:22 PM
Sorted out the elbow, all it really required was to create a joint pointing backwards from the elbow, perpendicular to the upper arm, parented to the upper arm joint, and with a script giving its X-axis a value of half the x-axis angle of the lower arm joint... The simplest solutions sometimes are the hardest to find. D'oh! >.<

04 April 2010, 06:04 AM
For those types of single axis extras (shoulder/knee pads), I typically take this approach:

-create a nurbs curve, "CTRL"
-group it, CTRLAdjust
-point constrain CTRLAdjust to the elbow joint
-Orient constrain CTRLAdjust to the Elbow and Shoulder joints, shortest interp type
-parent constrain the geometry to CTRL

*for extra credit, you can put a channel on CTRL, called shoulderElbow, with a min of 0 max of 1 and a default of .5 Connect this value to the orientConstraint weight of the elbow. Create an inverse node, connect it to inputX, connect outuputX to the orientConstraint weight of shoulder. This will allow the animator to blend the orient weight back and forth between shoulder and elbow. Kinda neat.

The benefit of this setup:
-user controlled blend amount between upper and lower
-easy to add secondary/overlap movement by the animator
-the animator can spot fix penetration by translating and rotating the geo on a per case basis

I like to have control over such elements on a character. Its the details that really sell the motion. Like if this knight were to land a heavy blow, you could offset the elbow rotation slight to give slight bounce on the recoil.

Something to consider.

04 April 2010, 11:19 AM
New question:

The shoulderpads are controlled as follows. The mesh is in one group, with its pivot right at the center of the upper arm joint, and that one is used for controlling the forwards/backwards tilt of it. Then the group is put in a second group, with its pivot at the inner top of the shoulderpad, which controls the tilt outwards from the body. Both these groups are controlled through scripts. Now, i need to limit the second script so that it never goes below 0, as the shoulderpad should never tilt inwards, so to speak, as its supposed to look like its attached to the top of the shoulderband of the breastplate, and if the arm is angled towards the middle of the body, the shoulderpad will start intersecting the rest of the mesh - Can't have that.

So, how do i create a function in my script to limit its effect to a certain span of degrees?

hierarchy + controlling scripts:

-shoulderpad_pivot_up_group (script: Shoulderpad_pivot_up_group.rotateZ = joint16.rotateZ)

-shoulderpad_pivot_mid_group (script: shoulderpad_pivot_mid_group.rotateX = joint16.rotateX)


CGTalk Moderation
04 April 2010, 11:19 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.