Triple Chain Rigging

When creating the limb triple chain method for switching and blending
between IK/ FK, im a liitle confused about the order of operations.
Should the IK and FK controls be created before or after you parent constrain the
chains together? I tried adding an IK polevector constraint after the chains were joined
and it offset the chains slightly. ??

The order of operations isn’t so important. But if you want to avoid that offset, you need to calculate a position for the polevector control that is exactly lined up with your IK joint triangle. (And also make sure your joint orientations are clean.)

That same calculation will be used if you ever want to do seamless IK/FK switching with a script.

Here is a Pymel script I wrote that I use.

Or for more info I’d dig into this search, Search results for 'pole vector position' - Tech-Artists.Org

Awesome, I will make adjustments per your response.
Thanks for the scripts as well !

If you’re into using Bifrost I made a IK Pole Vector visualizer compound I’d be happy to share, does pretty much the same as @clesage’s script

1 Like

When creating ik chains the biggest thing i found is setting the preferred angles before creating the ikHandle constraint.

The three chains should be identical and your blending the middle between the first and last.

These are controlled by ik and fk system which can be different rotations because you can just get the relative transform. E.g fk control 1 relative transform to fk chain joint 1. Then you just apply this about the chain you want to switch to.

Fk ctrl transform → (Fk ctrl * fk joint 1.inverse()) * ik joint 1

The pole vector of the ik system is 3 steps:

p0 = projection of the middle joint on the normal between the first last (or its parent and child).

P1 = normal between middle joint and p0

Result = (p1 * scalar) + middle joint pos

The scalar is something to store on the rig/metadata. Also things like joint length, softIk, pole vector locking may impact the switching.