Armature animation delay weird problem!

Hi all, I’m rigging a character and I’m using many constraint in the rig, after finishing the rig I noticed a very weird problem…
whenever I try to parent an object to a bone using any method (standard parenting, childof constraint, copy location constraint, copy rotation constraint) when animating a bone, I get a delay in the animation by at least one frame for the child object!
This happens when I use any constraint on the child bone then use any object as a target for this constraint, then parent that object back to any bone in the armature.
I created a simple scene that demonstrates this problem…
as you can see in the scene I used StretchTo constraint on one bone, then parented the target back to another bone in the rig, now when you play the animation you should see that the object “Empty” is moving but the StretchTo constraint is delayed to move in frame 2 not frame 1 as it suppose to.
this doesn’t happen when I parent the target object to any other object except the armature!
is this is a known bug ? please help!


StretchToTest.blend (464 KB)

I had this same issue, and after looking around on google for days. i found ou that the problem is caused by cyclic dependancy, when the location/rotation of a bone/object that you are constraining TO depends on the location of the object constrained… its sort of like parenting something to its parent, or one of its parents parents, it causes a loop in the dependency…

like if you use an IK constraint with a zero chain length, and the IK target, is parented to something in the IK chain… this will cause similar buggy behaviour… there are a few complex workarounds though, such as using 2 different rigs and blending the main rig into the new “contrained” rig… this sort of workaround could either help, or make it much worse, depending on how its done