Strange problem of shrinkwrap constraint causing geometry to lag

As in the title, I have a strange problem with the shrinkwrap modifier.

I have the shrinkwrap modifier on several bones on a humanoid rig I’m developing. They’re on various bones for the eyebrows, mouth, and eyelids. The shrinkwrap constraints on the eyebrows and mouth target one object (“Surface1”), and the ones for the eyelids target another (“Surface2”).

The problem: When I move around a parent bone, the eyebrows and mouth parts of the geometry are fine, but the eyelids lag…

As a test, if I replace the eyelid shrinkwrap targets from Surface2 to Surface1 (the target for the eyebrows and mouth), it works fine. So initially, I assumed there’s some object setting difference causing the problem, but strangely, if I just duplicate Surface1 and have the eyelid shrinkwraps to target the Surface1 duplicate, it lags again.

Does anybody know what the problem is?

Problem file is attached. Try rotating the selected bone and the problem should be apparent right away.
The surface geometries are on layer 2.


ShrinkwrapLag.blend (2.44 MB)

Surface1 and Surface2 depend on the armature (via armature modifier), which depends on surface1 and surface2 (via Shrinkwrap). Even if it’s not really a circular depenency, as different bones are involved, Blender sees this as one.

Use the new dependency graph, and make the armature’s head bone parent (static, not via Childof constraint) of surface1 and surface2. This seems to work already (just gave it a try). Later on your recent approach should work, as I understand it, but Blender just isn’t there yet.

Hey, Helmut S., thanks for the response. That’s good advice and exactly what I ended up doing at the suggestion of a developer.

There is still something weird going on, and it could be due to the dependency graph, but I’ve ran into other problems since with the eyes which makes me suspect there is something else going on that makes the eyes lag in the specific setup in the problem file.