PDA

View Full Version : locking the elbow


DracoDralion
03-09-2008, 04:18 PM
I am following a Tutorial about rigging, called "Animator friendly rigging", by Jason Schleiffer. Unfortunately, this is all in Maya, and I want to do it in XSI (silly me).

At a certain point he makes a very useful feature which makes it possible for the animator to lock the elbow on a surface. Here's how it goes:

there are two values for the length of the upper and lower arm;
- first value is linked with the position of the hand controller (basically the length stays it original value until the arm is totally stretched, from then on the length starts to increase).
- second value would be the distance between the root of the arm and the elbow for the upper arm and the distance between the elbow and the eff for the lower arm.

Then he creates a node with "blendTwoAttr", which makes it possible to blend between the first and the second value (unlocked/locked).

The question is, how is it possible to blend between these two values in XSI? Is it possible to create such a blend node, or will I have to look for another method, and what could that method be?

Strang
03-10-2008, 01:40 AM
you should look into putting an expression on the length parameter and use the ctr_dist() function using an "elbow pivot" controller you make and the effector as arguments. if you want the upper limb to stretch too, then put another expression on that limb also, using the "elbow pivot" and the root of your arm.

now dont forget to setup something to disable this feature, you want to be able to return to your original length. for something more complex a scripted operator would probably work best, so you can store original values and blending function that can be used to do switches and smooth blends.

good luck
s

DracoDralion
03-10-2008, 12:34 PM
now dont forget to setup something to disable this feature, you want to be able to return to your original length.

That's my question really. How can I do this?

Basically I have two expressions on the length of the arm. One to control the IK arm with stretch "l_fcv(...)" and the other expression would use the elbow control (which is the chain up vector) that uses the expression "ctr_dist()".

So I want to use either the first expression or the other. I just don't know how to switch/blend between these two. Tried to find something in the XSI SDK docs, but as many know, this is not the easiest way to find something.

Perhaps I should mention that my scripting experience isn't great, but I'm willing to go as far as I need to go to solve my problems. I really start to enjoy it..

PS: while re-reading my post I seem to assume there should be a simple function to blend between two values/expressions, but now that I think of it, is there such a function? Anyway, I still don't really know how to solve it, so some ideas to push me in the right direction would be great!

mdee
03-10-2008, 12:47 PM
That's my question really. How can I do this?

Basically I have two expressions on the length of the arm. One to control the IK arm with stretch "l_fcv(...)" and the other expression would use the elbow control (which is the chain up vector) that uses the expression "ctr_dist()".

So I want to use either the first expression or the other. I just don't know how to switch/blend between these two.
You can store them in two mixer clips and blend between them in mixer.

DracoDralion
03-10-2008, 08:48 PM
You can store them in two mixer clips and blend between them in mixer.

Did the job indeed. Never really got used to the mixer thing. I guess I'll have to look a bit deeper into it. Seems more powerful than I thought..

Thank you for your kind sugestion.

mocaw
03-11-2008, 12:25 AM
I'm sure it's not as flexible, correct, or cool, and that I'm showing my animation noob stripes here, but what about just using a pin constraint on that joint?

I guess it's harder to blend...never mind...

Jesse-Irvin
03-11-2008, 01:28 AM
Just a quick thing I did a while back that never saw much use then... maybe it can apply now?

http://forums.cgsociety.org/showthread.php?t=476181

basically the idea is to create a temporary rig that uses the shoulder and upper arm as a 2 joint chain instead of the upper arm forearm.

This doesn't leave you with stretchy bones but instead a real IK solution that will affect the shoulder and not stretch geo (which may not be what you want I guess but hey here it is anyway)

It takes a bit of getting used to if constraints aren't your thing but I can usually whip up something like this in a few minutes and be back to animating without actually affecting my origional rig at all. and it'll blend on and off as needed (cus all you do is blend the constraints)

DracoDralion
03-11-2008, 03:57 PM
Just a quick thing I did a while back that never saw much use then... maybe it can apply now?

http://forums.cgsociety.org/showthread.php?t=476181

basically the idea is to create a temporary rig that uses the shoulder and upper arm as a 2 joint chain instead of the upper arm forearm.

This doesn't leave you with stretchy bones but instead a real IK solution that will affect the shoulder and not stretch geo (which may not be what you want I guess but hey here it is anyway)

It takes a bit of getting used to if constraints aren't your thing but I can usually whip up something like this in a few minutes and be back to animating without actually affecting my origional rig at all. and it'll blend on and off as needed (cus all you do is blend the constraints)

This is another sollution that is interesting indeed. I think the stretch might work as well, but I prefer the solution I have now making more sense. It's the elbow you want to lock, so you only fiddle around with the forarm. No need to go back in the hierarchy to the shoulders. I would say it fits the natural flow more, but I'm not sure that makes real sense. Anyway, it's always handy to know different sollutions. Thanks for the tip.

CGTalk Moderation
03-11-2008, 03:57 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.