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.
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.
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.
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?