Weight Painting doesn't affect the armature

I’m back with another noobish question :o

When I apply weight to my mesh (Blender 2.4) with Weight Paint, just like the wikibook says, the only thing that’s happening is that the vertices that I painted are assigned to the active vertex group (if they didn’t belong to it before). When I switch to Pose Mode and rotate the bones, all the vertices are moving normal (as if they had a weight of 1). Even when I color the whole mesh with blue (0 weight) the bones are moving the vertices.
And when I click the “Clear” button on the Paint tab in Editing the current vertex group becomes empty.

I think I’m not getting a major concept here.

Thanks a lot!!!

The theory and practice of weight-painting:

A vertex initially has a weight of zero unless it has already been assigned to a vertex group matching a bone.

Weight is effectively averaged across two or more bones to which a vertex is assigned. If it is only assigned to one bone then the average will always be 1.0, no matter what the assigned weight is. So, if you paint an unassigned vertex it will immediately adopt a practical weight of 1.0 even if you only paint it at 0.25.

However, if you paint a vertex with weight 1.0 to bone “LowerLeg” and weight 1.0 to bone “UpperLeg”, then it will have an effective weight of 0.5 for each bone. The same applies if you paint it at 0.5 for both bones or 0.25 for both bones. The average in each case will be 0.5.

Initially this can seem a little irrational but when you understand that it is a mathematical average, you understand the result. A vert with 0.75 weight to one bone and 0.25 to another bone delivers essentially expected results.

Now, there’s one minor problem (bug perhaps) which means that if you weight paint a vertex to zero, it tends to remain in the group and often responds as if its weight is 1.0 if it isn’t also assigned to something else (I guess you could argue that 0/0=1.0). It has been suggested recently that changing the paint tool to solid instead of spray fixes this but I haven’t tested it. Personally, I try not to paint verts to zero unless I’m certain the same vert is assigned to another bone. Even then, in many cases I like to find these unweighted verts and remove them from the group via the vertex groups panel “remove” function. You can check a vert’s bone/group assignments by Shift-LMB on it in weight-paint mode.

Hope that makes some sense. It’s late and I’m not always thinking straight at his hour. (Actually “average” is not really the appropriate term since the average of two equivalent numbers is the same number - but you get my meaning. I’m sure a coder could explain it in terms of AND, OR and XOR and all that stuff)

I’ve just been discovering this myself, but do make sure that you have a very gradual gradient from blue/green to yellow/red, then tweak to taste (maybe after painting adjacent bones in a similar way.)

At first I thought the softness between the red and blue was enough for the weight ‘blending’ but I was wrong - set the weight brush option to around 25% and the opacity to perhaps 50%, and spray away (you can subtract spray strokes too).

In my opinion, a more logical system would be to use grayscale tones, and it could even be used by the colour-blind.

Of course, the rest of the Blender UI would still confuse them…

Wow, Thanks! That was realy helpful. You should consider adding this to the wiki tutorials.

I am new to blender, in fact new to 3d animation. I have been trying to get a smooth movement from the bones deforming a mesh but was getting the all-or-nothing type effect. So it seems like a quick way to get the sort of effect that I was expecting would be to apply a weight to all vertices for a root bone, that way any of the other bones should calculate the weight based on the values from that bone? Rather that painting on two bones for each movement. Are there any reason why this approach might not be a good idea?

Thanks very much.


Using the root bone as a counter-weight is unlikely to deliver desirable results in a typical armature setup. Since the root bone doesn’t move (relative to the rest of the armature), it would have the effect of causing verts to want to remain stationary when another bone is trying to move them. This means, for example, that if you rotate an arm bone 30deg, the arm mesh would only move 15deg. If you only weighted the elbow region, then the elbow mesh would pull away from the arm mesh as the arm bone is rotated.

Weighting is used where two or more bones are intended to influence a shared region of mesh.

Thanks Andy, getting my head around this now! Thanks for clarifying.