IK Constraint does not work correctly when root bone is scaled up.
Closed, ResolvedPublic


When working with a rig that has an IK constraint, such as a simple leg rig, scaling up the root bone causes the IK chain to behave incorrectly. It looks like what is happening is that the target for the IK chain is not scaling with the rig, despite the actual target bone scaling correctly.

This happens with the Legacy Ik solver, with iTaSC the target follows scaling correcly, but the bones in the IK chain do not!

See attached file and try scaling up the root bone.



Confirmed. Seems to be related to parented bones with off-set only. Connected bones scale better.

I found 4 bugs that are related, though 3 probably have the same cause. In the attached armrig.blend I have 6 duplicates of an arm rig demonstrating the bugs and two work arounds that may help. The arm rig has a parent with an ik chain (red) and an fk chain (blue), and the fk bones are constrained to copy the rotation of the ik ones.

Problem1: if the ik and fk bones are asymmetrically scaled (say only in y dir) then the ik bones no longer track the target and the copy rotation is off too.

Problem2: if the _object_ is scaled asymmetrically (in this case x) then neither the ik target nor the copy rotation works

Problem3 is the one posted above, if the parent is scaled the ik target is offset by some factor that depends on distance in the direction that was scaled.

These three problems seem to suggest there is some coordinate transformations missing from the solver

Problem4: (arm bones scaled in y only as with problem 1) the ITaSC solver scales the ik bones back to 1. Happens as soon as the solver is chosen regardless of influence. The copy rotation is working correctly.

there are a couple of work arounds for Problem 4:

Sol1: Setting the solver to DLS, the ik constraint to use stretch, and the stretch factor in each bone to something small like 0.001. Setting the stretch to 0 wipes the scale of the bone, too large and the bone becomes stretchy.

Sol2: scaling the ik bone in edit mode to match the scale of the fk bones in pose mode. No suprise this works but its a dumb solution.

I was just about to post this bug but then I've found it was already posted... one year ago.
Anyway, I've confirmed in current 2.62 (candidate 2.63) the bug(s) is exactly the same it was before.
Fortunately the workarounds also are working, but IMHO this bug should be, from my ignorant point of view, quite easy to fix
So, bump.

Scaling in general is culprit for animation systems, and not simple or fun to get working in all cases.
It's on the active list here though; Brecht can make this an active todo item for the wiki though. IK solver wasn't worked on in many years.

It appears the bug with the standard IK solver was fixed by Bastien in Blender 2.63, see T31008. iTaSC still has no real support for scaled bones and removes the scaling, I'll consider that a limitation of the iTaSC solver and not a bug.