Object level transformations on mesh deformer acting-- weird? Bug?

AKA: How can I combine an armature and a mesh deform?

The file explains it best:


I’m trying to use a mesh deformer to do facial animations, but combine it with an armature for the body. Layer 1 on the file (2.79) has 5 different tests. From -x to +x:

  1. Face + mesh deformer, no transformations. Face is being mesh deformed properly.

  2. Face + mesh deformer, deformer translated. Face deformed exactly as in 1.

  3. Face + mesh deformer, deformer rotated (and translated). Deformation of face is different.

  4. As 3, but with dynamic bind, Deformation of face is different than 1 or 3 (and especially bad).

  5. Face +surface deformer, deformer rotated. Deformation of face is virtually same as 1. Not as good, because surface deformers are kind of messy. Done just as a test-- this is how I expect mesh deform to work.

It’s like the mesh deform is ignoring object level translation of the mesh deformer, but not object level rotation? (Or scale, for that matter.) Additionally, it’s only ignoring object level rotation/scale for deformed verts, not for all verts in the mesh deformer. Is this a bug? Is there some reason it works that way?

(Layer 2 has something less simplified-- what I’m trying to do. I just figured the rig would confuse people so I baked the armature to the deformer. Included in case you want to see what the practical, desired outcome is.)

I was thinking I could just parent the mesh deformer’s armature bone-relative to the head bone and run the mesh deform before the armature mod. But that’s not working because of these issues. What’s the best way to combine a mesh deform and an armature?

If this isn’t how it’s supposed to work, I’d be happy to post a bug report, but I wanted to hear more before I wasted devs’ time.