Elbow Constraint breaking my rig.

Become a member of the CGSociety

Connect, Share, and Learn with our Large Growing CG Art Community. It's Free!

Thread Tools Search this Thread Display Modes
  06 June 2012
Elbow Constraint breaking my rig.

Maya 2009
Win XP

Creating a human rig w/ ik/fk extremities. I got my joints set and weights painted and am currently in the process of constraining the joints to the controls. I was able to get the legs to function, but when attempting to do a pole vector constraint of the arm ik to an elbow controller, the joints suddenly rotate on the arms axis a little under 45 degrees and the elbow itself pushes up rather than staying level with the elbow control. I did a check of the joint rotations and LRA's and they all check out so I don't know what's going on here.

My previous rig had the same issue of the arm rotation (not this severe), however when adjusting the wrist control, the actual elbow still stayed level with the elbow control where this does not and I don't know why.
The Art of Neil
  07 July 2012
How are you drawing out your initial joints? I find that IK behavior works best if you move the joints themselves as little as possible. Try to draw your joints in the exact position you want them in and a good technique to use for getting them in line is to snap tot he grid in the front and top views. I also find that turning snap off in the IK options sometimes helps.
  07 July 2012
Well my method has always been to create a blank node - I prefer clusters - duplicate it to hell 'n back and then place them all where I intend to put my joints, then I create the joints and snap them all separately into place before connecting them via the outliner. I guess it's kind of a paranoid way to go about it, but it's the best way I can figure to ensure the least amount of screwery with the rotations.
The Art of Neil
  07 July 2012
It sounds as if your pole vector control isn't in the same plane as your joints or that your joints may not be in the same plane at all. A quick solution to your problem would be to simply rotate your arm using the twist channel in the ikhandle until it matches the original location. The other would be to move the pole vector control to the correct location and freeze it's transforms.
  07 July 2012
I think I maybe explaining this wrong. So I drew it instead:

The dotted line would be the ik itself, and the star, the elbow control. The third set of drawings from the top is what happens when I set the pole vector. With any luck, this better explains the problem.
The Art of Neil

Last edited by Narratorway : 07 July 2012 at 05:58 AM.
  07 July 2012
Sorry to if I sound a bit redundant but it does seem like the pole vector control isn't in the same plane as your joints.

When I say plane, I don't mean just across the x , y, or z axis in the maya viewport, I am talking about the plane that your joints are creating. If you were to create a polygon plane and tried to match it to where your joints are , that would be the plane that they are on. When joints aren't exactly on a plane, then the ik handle breaks as you compress it. Your joints will also move when creating your pole vector constraint if the pole vector control isn't in the same plane.

Using your drawing as an example, your pole vector control should ideally be directly beneath the elbow so it doesn't flip. However, your pole vector control is probably in front or behind the elbow, so when you create your constraint, it flips almost 90 degrees.

What gagex2z posted pretty much falls on this idea on creating joints on a plane, by creating a joint chain on the a 2D Front, Side or Top Views in Maya.

Here are some images and the maya scene so you can visualize it and clear up anything I said. The Green Sphere is where your pole vector should ideally be, while the red sphere is probably where it is now.

Maya Scene: https://dl.dropbox.com/u/25306671/PoleVector_Example.ma

3D View

2D View
  07 July 2012
Okay, I see what your saying. How exact would I need to be about being on the same plane, cause it looks like this'll require guesstimation.
The Art of Neil
  07 July 2012
A simple way to do it without getting into vector math is to snap a vert at every joint and once you your done doing that, pull away the vert on the elbow with the normal average turned on in your move settings. This is a solution if you are using Maya.

If you want a more concrete solution you can always solve for the vector, which in our case is really just adding and subtracting numbers. Here are the steps:

Note: You need to get the joint locations in World Space

* Find the mid point of your first and last joint:
MidPoint = (StartJoint(x,y,z) - EndJoint(x,y,z)) + StartJoint(x,y,z)

*Find the vector from the mid point to the elbow:
Elbow Vector = (ElbowJoint(x,y,z) - MidPoint(x,y,z) )

*Add the Elbow Vector to the Elbow Joint Location
Pole Vector Location = ElbowJoin(x,y,z) + Elbow Vector(x,y,z)

The Maya API Python Module has some great functions for adding vectors
and if you have the time, check out the Vector Master Class over at the Area.
It covers how to do is and goes over the basics of vector math:
  07 July 2012
one easy way is to align ur pole vector controller to your elbow joint and then move it in its local space on w/e is hte axys that points straight out from the elbow in max that usually is Y if you are using default orientation
Felipe Nogueira aka: PePeTD
Technical Artist/Character TD
  07 July 2012
Thread automatically closed

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.
CGTalk Policy/Legalities
Note that as CGTalk Members, you agree to the terms and conditions of using this website.
Thread Closed share thread

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Society of Digital Artists

Powered by vBulletin
Copyright 2000 - 2006,
Jelsoft Enterprises Ltd.
Minimize Ads
Forum Jump

All times are GMT. The time now is 01:58 PM.

Powered by vBulletin
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.