I’ve done some prior experiments in Soft IK, but shied away for it in gilgamesh because the rig was getting too complex for it’s own good, and because I couldn’t find a satisfactory way of solving it in blender 2.5 and above (my 2.4 solution depended on py constraints). Since we have great drivers in 2.5/6 series, I thought I’d try it that way. The result is below:

I’m guessing only seasoned animators will see the difference. From left to right we have:

- normal, non stretchy IK
- soft, non stretchy IK
- normal, stretchy IK
- soft, stretchy IK

Ik softness basically takes care of the ‘pop’ at the knee so common in IK when going from straight to bent (or vice versa). This works out because the speed of that joint non-linearly increases as we are close to straight. Good sources here and here (softimage blog). My solution for non stretchy is exactly the same as that blog post- plugging the equation into a driver. For the stretchy case it was a bit trickier and they diverge, but the mathematical result is the same.

I’m not publishing the .blend yet, nor can I use this as is in gilga because the solution depends on driving a bone within a bone inside the same armature; until I find a workaround or blender will successfully handle this case in the dependency graph, this solution causes lagging and errors (there are python frame update handlers here double calculating the rigs to make them behave)

Once I get this working I’ll publish a simple .blend.

Great info! Still, it’s quite embarassing to learn about soft IK after such a long dabbling in animation.

Thanks for filling a gap 🙂

[…] blog posts about the math and theory behind this here and here, and an old blog about in blender here. If you want to check out the blend file in that video, you can download the blend here. Note that […]