PDA

View Full Version : IKFK Snap - Non Planar Joint Chain


mlefevre
11-03-2009, 05:49 PM
Hi,

Various threads have been made on this subject, but thought I'd give it a try.

I've tried calculating the position of a pole vector on the fly using vector math, but at no point have I managed to snap the IK arm to the FK arm successfully, without any offset, on a joint chain that is non-planar and/or not drawn in an orthogonal view.

It's fairly easy for a joint chain drawn in an orthogonal view, but is it actually possible for a joint chain that is not drawn in this way?

exhibitx
11-04-2009, 05:24 AM
how i setup a joint chain is by drawing a 1 degree curve down the leg or arm, then adjust the cvs manually to fit my arm then draw a joint chain on those cvs. What i found is that maya does a pretty good job of maing the chain planar except you have to orient all the joints the way you want. Then i go into the component mode and select the axis handle and use this mel script to orient the joints. "rotate -r 90 0 0". this usually work for me. I usually setup a single joint chain ik/fk matching for my limbs using this method and so far so good.

tonytouch
11-04-2009, 02:36 PM
when i snap from FK to IK . i usually snap the IK_elbow_Ctrl to a group , which i parented below the FK_hierarchy

when i create the rig , i usually draw the positions of the arm and create a jointChain , which is oriented proper , then - to place the polevector_Control i temporarily create a nurbsPlane and surfaceConstraint the elbow_control_curve to it . now the poleVector_Control will have a "planar" position . additionally for snapping i "delete `parentConstraint`;" an empty_group to the poleVector_Control , and parent it under the FK_joint for the elbow .

so now , when i call the snapFK2IK.mel i "xform -q -ws -t" the position of the emtpy_group which is parented below the elbow_FK_joint . and use "xform" once again , to position the poleVector_Control

-> not sure , if this helps ( in this case ) but for me this turned out to be very simple and straight-forward and precise .

BasHe
11-04-2009, 03:05 PM
First of, when you are dealing with a 3 joint IK setup (for example: shoulder, elbow, wrist), they will always be in one plane. This is since you need 3 points to define a plane in 3d. Drawing it in orthographic makes identifying this plane most easy. When you draw them freely all you have to do is find out that plane, the rest of the FK<>IK method doesnt need to change.
The problem arises, and i suspect thats what the question is about, what happens when you have more than 3 joints in a chain and they are not all in the same plane. It gets even more complicated when you allow the joints to rotate without restriction in FK mode.

tonytouch
11-05-2009, 08:45 AM
well, that one is simple ... if you have more than 3 joints in a chain ( and i personally always use 4 joints for each arm and leg ) , you need to "create" the chain in a way so it is planar ( and therefore a projection_plane ( using surfaceConstraints ) is an easy way "to get there" . well , you can simply use this method , just for positioning some locators , which will be in one plane - and then create the skeleton by simply snapping the joints to the locators.

CGTalk Moderation
11-05-2009, 08:45 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.