2
$\begingroup$

I have a short IK chain with an IK constraint with stretch enabled. The bones in the chain each have their Inverse Kinematics Stretch set to 0.001. Here's a simple demo setup...

Simple IK setup w/ a 3 bone chain and a target bone

Moving the Control bone around within reach of the IK chain seems to work fine. E.g.

IK constraint doing its job

But when I cause the stretch to take effect by moving the target out of reach of the IK chain, the chain stretches and scales in all 3 dimensions causing the mesh to expand. Note the size of the mesh and IK chain bones relative to the target as compared with the other images.

Entire object inflates instead of just stretching

Is there some way to only have this stretch along the Y axes of the bones? I.e. I want the bones and mesh to elongate but not swell. I have tried various other settings, including locking X and Z scaling on the bones.

You can grab a .blend file of the sample setup at http://readyposition.com/Blender/IKStretchExperiment.blend

Help appreciated.

$\endgroup$

1 Answer 1

5
$\begingroup$

IK stretch bones do stretch in all 3 axes and can't behave like you want. The solution and common method is to

  • duplicate all the bones in the chain (except the control) and un-parent them from each other
  • for each bone_copy set Copy Location and Copy Rotation constraints targeting the original bone
  • for each bone_copy set Stretch To constraint targeting the next bone in the chain. This constraint should have Volume set to XZ to maintain reality or to None if you only want to stretch in Y axis
  • bind the mesh to the copied bones
$\endgroup$
1
  • $\begingroup$ Thanks. I came up with that solution as well. I was just hoping to simplify. And this does it. $\endgroup$
    – Chuck
    Commented Jan 14, 2015 at 14:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .