0
$\begingroup$

So I have this low poly block out character I want to attach some animations to. For most of the limbs, they are seperate meshes, which means I parent the mesh directly to a bone. But for other meshes, like the hand, I want them to be automatically weight painted in respect to the hand bones. I looked up online how to do automatic weight painting only in select bones by selecting the bones in pose mode and then the mesh but now I have a problem.

The automatic weight paint doesn´t fully paint the entire mesh

enter image description here

enter image description here This means that when I move the bones, part of the mesh gets stuck and I don´t know how to fix it. Usually when you automatic weight paint with the entire skeleton, you don´t get issues like this and everything is fully weight painted.

By the way, this isn´t a case of the rest of the weight painting being assigned to other bones, as the vertex groups only show the hand bones.

$\endgroup$

1 Answer 1

0
$\begingroup$

Blender's "assign automatic from bones" operation, which is probably what you did, is a pretty simple, naive operation. It just does a regular autoweight from everything, then removes all assignments to unselected bones. Unselected bones still exert influence on the mesh, possibly blocking the spread of bone heat from other, selected bones. In most cases, this results in unnormalized weights. In some cases, like yours, you end up with unweighted vertices.

In your case, where there are some bones to which you don't want any weights ever assigned, there's a very simple solution: disable the "deform" property on these bones (in edit or pose mode on your armature, in properties/bone/deform), and those bones will be ignored for purposes of automatic weights. Now, you can parent with automatic weights, and you'll find that automatic weights generate weights only to your deforming bones, without any blocking from non-deforming bones. (If those vertex groups already exist, automatic weights won't remove them; but, neither will they matter, because the armature modifier knows enough to ignore them.)

Non-deforming bones will still work with bone parented meshes-- strictly speaking, that's not actually "deformation." So that's why this is a fine solution for you.

In some cases, just disabling "deform" isn't enough to get automatic weights to get the weights that you want. It's always possible to make a quick duplicate of your armature, delete some bones, parent with automatic weights, then reparent to your original armature with empty groups or just armature deform (and delete the duplicate armature/modifier.) The armature you use to generate automatic weights doesn't have to be the same armature you use to deform it, after all. The only trick to this is understanding that bone names determine vertex group names which carry the information about bone weight.

$\endgroup$
2
  • $\begingroup$ Yeah, I tried disabling deform and it did nothing. As a quick test, I tried doing automatic weight paint to all the bones of the armature, hopping that the rest of the weight painting would go to other bones and it still gave me this same problem. So I feel there is another issue at hand, because now even the basic automatic weight paint didn´t have the entire mesh painted. $\endgroup$ Nov 28, 2023 at 8:22
  • $\begingroup$ Yup, sounds like another issue, one that can't be diagnosed from the info given (but maybe could be from a file.) $\endgroup$
    – Nathan
    Nov 28, 2023 at 17:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .