7
$\begingroup$

The IK have set up does not follow the target around the Z axis. I am using an Empty as the IK target. You can download the blend here.

OpenGL render of issue

Scene view

Outliner IK settings

Each bone except the bottom one has the following IK constraints;

IK constraints

And the bottom bone;

IK constraints

What have I done wrong?

$\endgroup$
3
+50
$\begingroup$

Here is how you do it properly:

The IK limits should be used only when needed. The limits on last 3 (Proximal, Middle and Distal) bones are fine.

Now change the IK constraint chain length to 3, this will remove the first bone from IK chain.

IK constraint settings

Instead rotate the bone with constraint, here is a LockedTrack that will also constrain the Y axis so the fingers end can move up and down with the base in correct orientation. This will also solve any flipping issue.

Locked Track constraint

If you need to position the finger in space, do it with parenting it to a bone and then transforming that bone. Everything will keep working as expected.

enter image description here

$\endgroup$
4
$\begingroup$

I deactivated the x-axis limits for the three end bones and the odd error clears up as shown below.

enter image description here

enter image description here

I re-enabled the limits but changed the range from -90 to 90 for all 3 bones and tested it with some fairly exaggerated movements of the curve and the animation seems to behave sensibly.

enter image description here

enter image description here

$\endgroup$
1
  • 2
    $\begingroup$ The issue with this method is that the bones still snap to 180 degrees. If you look at the bone axes themselves, they are flipped when 180 degrees is reached. This can especially be seen in a non symmetrical model, like this. $\endgroup$ – Jack Wilsdon Nov 28 '14 at 17:00
3
$\begingroup$

If the default Standard IK solver is not satisfactory, you may want to try the iTaSC solver.

enter image description here

enter image description here

Comparing to Standard solver:

  • iTaSC is a generic multi-constraint IK solver.
  • iTaSC has a stateful mode, which means that the pose at frame n+1 is computed from the pose at frame n. (Simulation mode).
  • It also supports a stateless mode, identical to iksolver operation mode, where the pose is computed from the rest pose (or animation pose) at each frame by reiterations until the constraints are met. (Animation mode)

WIKI documentation

$\endgroup$
0
$\begingroup$

Jack, this is a problem with 'zero-lock' in the IK of the bottom bone, as your assymetrical final example shows clearly. I suggest keeping the limits on and set to -90 to 90 for the top 3 bones (as in the first answer), but further you should change the bottom bone limits so they range from 0 to 359. This should put the flicker artifact directly pointed at the camera as the motion passes in front of the model -- it still will happen, you just won't 'see' it as bad.

Please post a result to show pass/fail.

$\endgroup$
2
  • 1
    $\begingroup$ sorry but rig that works only from certain camera angle is a bad rig. $\endgroup$ – Jaroslav Jerryno Novotny Dec 5 '14 at 8:15
  • $\begingroup$ The issue with gimble (zero) lock is pervasive in most software and needs to be worked around. The bottom bone in your model will rotate all the way around, it just needs to reset the measure of the angle. My answer simply points out that the best place to reset the measure of an angle is when pointed at the camera/user. It's not a faulty model nor a software bug, just an implementation consideration. $\endgroup$ – JasonInVegas Dec 5 '14 at 16:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.