Hook modifiers - Rotation distorts mesh when mesh moves

I use hook modifiers on a human mesh to correct for armature deformations and animate facial features. I have problems with the way shape keys work so I use hook modifiers instead. A problem happens when the mesh moves and a bone that is the target of a hook modifier rotates. If the bone does not have a parent, it remains in the same place when other bones move the mesh, so the center of rotation is not at the same point relative to the mesh. If the bone is a parent, the hook modifier moves the vertices in its vertex group the distance the bone inherited from its parent.

This screenshot shows the mesh at the beginning of a walk cycle. The selected bone is the target of a hook modifier designed to correct the deformation of rotating the arm.

New photo by Q X

The next screenshot is in the middle of the walk cycle. It is an IK walk cycle. The pelvis bone moves as the mesh walks, and all bones that directly control the mesh are descended from the pelvis bone. The bones that are targets of hook modifiers have no parents. In this screenshot, the same bone is selected, but is now a distance from the mesh because the mesh moved, and now creates a distortion in the mesh instead of correcting it.

New photo by Q X

In the next screenshot I made the selected bone a parent of the pelvis bone. This still distorts the armature because the hook modifier uses the inherited location when moving vertices. When I check or uncheck “local location” from the bones tab, relations section, in pose mode, there isn’t much of a difference.

New photo by Q X

Is there a way I can fix this issue? Can a bone inherit distance from its parent without the inherited distance being used in a calculation by the hook modifier?

If you have hooked a bone directly to the mesh using a hook modifier, I don’t think it will work. Switch to a lattice or a mesh deform cage and hook the lattice to the bone. Blend rig uses that method and I often just use a lattice for simple deforms.

Thanks for the suggestion. When I use lattice modifiers on the mesh then hook modifiers on the lattices, I don’t have the problems I had with hooks on the mesh driven by armature bones, as long as the hooks on the lattices use empties as targets instead of armature bones. What I liked about armature bones is that they are in a single armature object but with empties I have several objects associated with a mesh, but I guess I can use object groups to organize them.