Mesh Deform modifier works in 3D window but not render

An idea I had was to have stretchy eyes by use of a Mesh Deform modifier. This was good. Then I decided to link this to the main headshape, so the eyes don’t just stretch by themselves and look stuck on; the head would stretch too.

The problem is it works fully in 3D view, but when I render, the main head is unaffected by the deformer. Look here and you can see the eye stretch right through the head which should have gone with it.

P.S. The mesh deformers around the eyes are hidden on another layer. They are hooked to empties, which are tied to head rig bones for posing.

Why is this happening? Is it fighting the armature rig for priority? Could it be that mesh deformers only work if they completely encase a target mesh? Seems odd it actually works in 3D view.

I was wanting to give this to someone tomorrow morning (it’s 10:30pm here now) but it looks like the eye effect is going to have to be dropped.

Any solutions - please let me know and I’ll look when I wake up.

A few things that might help:

  1. For the mesh deform to work, the cage must totally enclose the stuff to deform at the time of binding.
  2. Be careful about the order in which you have the mdef and any subsurf modifiers on your mesh. Hopefully you have time to be able to experiment with the order a bit.
  3. A friendly reminder to check that the relevant modifiers are enabled for rendering :slight_smile:

If the above don’t help, you can try some more dramatic measures:
4) Put everything on the same layer, then mark the helpers as not being visible in the viewport and for rendering (i.e. via the outliner restriction columns)
5) If you can manage, have a look at the rig for the bird from BBB. You could also try the rabbit too, but the bird is a smaller file, and also has more obviously “stretchy” eyes.

Thanks for the ideas… most I had tried also.

Unfortunately I don’t have the luxury of being able to redesign this based on looking at BBB rigs or similar.

The subsurf is before the mesh deformer… put it after and even the 3D window stops showing the deform.

I think it must be 1) the mesh deform is intersecting the target mesh instead of encasing the whole thing. If this is the reason, it’s kind of a pity it “works” in the 3D view.

wait wait, you are saying that the subsurf is above the mesh deform???

Well, if that is so, it is exactly the reason why it is not rendering. Mesh deform depends on the number of vertices, so, if you binded the model in subsurf level 1 in the viewport, and in the render the subsurf level is 2, it will just stop working.

If you need the mesh to be subdivided before the mesh deform, you should apply the subsurf, or if you don´t want to apply the subsurf, you can set the subsurf level at 1 for the rendering aslo, and then add another subsurf modifier after the mesh deform.

Brilliant! Thank you :slight_smile: