I am trying to assign the weights of my armature to the mesh figure so I can create an animation. I'm not completely done yet but I noticed that when I'm in pose mode, once I move the left forearm, part of the right shoulder and the head move as well. Why is the the shoulder mesh moving when I move the forearm in pose mode? blender file
-
$\begingroup$ you mean when you move the forearm bone? It would be nice to give some screenshots... $\endgroup$– moonbootsCommented Oct 17, 2019 at 16:04
-
$\begingroup$ Yes. I put a link to the file I am working on. Sorry about that $\endgroup$– Don DixCommented Oct 17, 2019 at 16:09
2 Answers
Select the mesh, activate the two little buttons on the armature modifier so that it shows its effetc also in edit mode, then move the forearm in pose mode. Back to the mesh in edit mode select one of the vertices that is movin weird: in the "N" properties panel you will see that they have some weight from forearm bone (maybe 0.000001) and expecially from the f_pinky03.L bone: thoose weights are causing the unwanted deformation. So select all the weird vertices and remove all weights to have everything fine.
Remember that even a very tiny weight, if it's not "balanced" by another bigger one, will cause a big movement, because Blender does an automatic normalisation between all assigned weights.
As Josh Sanfelici says some vertices are influenced by some bones that should not. To fix all this you could remove those vertices from any group, but you could as well make a bit of cleaning:
- Select the character object and delete the Armature modifier.
- Go in Front Orthographic view. Put the mesh and the armature in front view.
- In Edit mode delete half of the armature and Armature > Symmetrize it again.
- in Top Orthographic view make sure that the mesh is aligned to the X axis and to the armature.
- In Edit mode, select all and AltM > Merge By Distance, play with the operator box value.
- Apply the RotScale of the mesh, apply the RotScale of the armature.
- Reparent With Automatic Weight. It works much better.