View Full Version : XSI Rigging - The Shoulder (help)

05 May 2007, 11:35 PM
Ok, so I have a model where the character must raise both his hands over his head. Like a referee making the "GOAL" signal.

Now the rig as it is, the ref can raise his hands over his head easily, but his elbows have to also be facing out, towards the camera. This causes a twist in the shoulder, seen here.

weighting seen below

basically I need help knowing if there is some weighting technique, geometry or something I'm missing in the bones to pulling off this manuever.

Here is the geometry and bone set up at default.


keep in mind the it looks fine when his arms are up and the elbow pole vector is behind his arm. but when it swings around and his elbows faces the viewer the green bone twist which collapses his shoulder. As seen below.

I hope I've made my problem clear enough!

05 May 2007, 11:20 PM
What you need is a "twist" bone in the upper arm. The twist bone should rotate with the arm only in two axis. Think of it like the opposite of a forearm twist.

I can't help with Softimage specifically, but I'm sure if you do a search for twist bones you should be able to find some tutorials.

Hope that helps,

05 May 2007, 11:52 PM
rotate the clavicle inwards in instead of the upper arm bone. if you dont get exactly what you want try repositioning the bones (cntrl-J) or creating morph targets that blend based on the rotation of the upper arm can do that by creating an expression and then setting the relative positions...check the help file, its easier than it sounds.


05 May 2007, 11:59 PM
another method would be to add 3 null objects to the at each end and one at the middle...constrain their position/orientation to them...then write an expression so that the one closest to the elbow rotates 100%...the middle 50% and the shoulder one 0 or 15%....then weight to those instead of the bone. hope that makes sense.


05 May 2007, 01:52 AM
I would strongly recommend you try some kind of twist rig before you go into corrective blendshapes. What I usually use is a null at the shoulder that's aim-constrained to the elbow. Then I make an up-vector object for the aimConstraint above the shoulder. In order to keep the up-vector stable, I drive its translation so that as the elbow comes up, the up-vector translates towards the head, and as the elbow comes down, it translates away from it. The movement of the elbow up/down is read by making one more null that's parented to the clavicle, but point-constrained to the elbow, and then reading it's translate values. Then its just a simple expression to hook the translate of the elbow-constrained null to the translate of the up-vector null. What you get from this is a null at the shoulder that points at the elbow, but doesn't twist at all. Just add the null as an influence and blend its weight down the length of the arm.

Sorry, long instructions. Hope that helps.

05 May 2007, 07:51 AM
DeepGreenJungle - i gotta try this out asap. Sounds like a great idea, thanks for sharing!

05 May 2007, 09:10 PM
yes this works really well. i do something similar where i blend between two up vectors,

one that points to the back for when the arm is in the back, one that points to the side for when the arm in front of the chest.

this way it is optimized for the front where the range of motion is greater in most characters.

05 May 2007, 11:18 AM
I am actually having the same problem as you do.. However, I am using 3ds max.. You guys mention the twist function.. and I tried on 3ds max.. but still can't solve it..

05 May 2007, 09:57 PM
Here a tutorial on highend3d for 3dsMax.

It's for the forearm though. Paul Neale's Intermediate Rigging 2 DVD covers a setup for the upper arm as well. It's available at


05 May 2007, 10:30 PM
Ahmmm... because you are using xsi I would suggest using a one bone chain instead of a null and position constrain the effector to the elbow.
And drive the chain up vector like DeepGreenJungle described it. I found the direction constrain a bit unstable in xsi.
And when you need more roll divisions in the upper arm I suggest you use the xsi spine-rig, because it is rather stable on twisting motions.

hope that helps

05 May 2007, 11:29 AM
lol, the author disappeared without a trace!


05 May 2007, 12:14 AM
no no! I'm still here. I've been checking up and trying different things and some of the suggestions. A few things I neglected to mention is that I can't add new bones. However, what I found worked without adding new bones was tweaking the FK/IK blend in bone options. XSI has some inconsistent errors, for instance when I tweaked that blend before, it didn't do anything, however when I deleted the rig and re-rigged from biped guide, it began working.

05 May 2007, 05:18 PM
so the FK/IK blend thing works- One problem. It only works for one side of the rig. The other side gets twisted like crazy.

Heres a few thing's I've tried.

1. freezing all bones on the biped guide.

2. re-enveloping.

3. typing in -0.5 in the FK/IK blend.

none of these seem to work and it seems XSI has a very hit or miss chance of getting it right. Suggestions?

05 May 2007, 01:54 AM
while im not entirely familiar with xsi, i think your problems with ikfk flipping is caused by different orientation between joint chains. and also, for better shoulder deformation, you might find this tutorial ( informative, although its written for maya, same concept still applies
hope that helps:thumbsup:

05 May 2007, 06:33 AM
Like Stev says, a twist bone helps. Though you can weight a little to the upper spine to help alleviate some of the problems.

CGTalk Moderation
05 May 2007, 06:33 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.