Hello everyone. I have run into a problem multiple times where if I add a constraint to a bone in an armature, the bone that is constrained will lag behind where it should be by one frame. It also is noticeable if I am in the middle of translating/rotating a bone that affects constrained bones. I have attached an example blend file that has an spline IK set-up that demonstrates the issue. I have done some research and found some workarounds that involve using multiple armatures, but I can’t use that since that would make animating more time consuming. Any help as to figuring out the problem with this specific rig, or advice on how other complicated rigs using constraints avoid this problem would be appreciated.
I can’t look at your .blend at the moment because I’m in the middle of rendering & all my RAM is tied up, but a common reason for the lag is a cyclic redundancy, which is all too easy to create using Constraints. The problem arises when the state of one bone is determined by the state of another bone, which in turn relies on the state of the first bone. These are (afaik) always reported in the console window, so check there for a line describing the possible redundancy.
A further problem is that the redundant relationship between the bones may be widely-separated by a chain of relationships, making it very hard to track how the redundant dependency occurs.
That seems to agree with what I have found in my research on this issue. However, I cant seem to find a good workaround for removing the redundancy if you don’t want a lot of separate objects. How to rigs like the ones used in Sintel or Tears of Steel avoid this while still having lots of controls and constraints?
When setting up the rigs, it is currently necessary to have the control bones (for controlling the curve) in a separate armature to those used for deforming the meshes (i.e. the deform rig containing the Spline IK chains). This is to avoid creating pseudo “Dependency Cycles”, since Blender’s Dependency Graph can only resolve the dependencies the control bones, curves, and Spline IK’ed bones on an object by object basis.
You have to use 2 armatures with the spline IK. Your control armature, the one with the hooks on the curve can be part of your normal armature, the one you would be keyframing. The bones that have the spline IK constraint on them and follow the curve have to be a separate armature object. Then the mesh would have 2 armature modifiers on it, one for the control armature, and one for the spline ik armature. Then it’s a matter of weight painting the two armatures, which could be a pain, to get the two of them to blend nicely, but once done, it’s done.