"subtract" weight paint does not remove verts from group

I don’t know if this is a bug, but I just manually removed verts from groups because even though they were blue in vertex paint mode, they still belonged to certain bones. I tried to unpaint them, but in edit mode I checked them and they were still in the bone groups. Anyone else have this issue?

“Subtract” only means that the brush influence is removed from the weights… it does not mean that vertices are removed from the group.

So, even though vert groups can be added in WP mode via brushes, they can not be subtracted, hence the clean weight script which I just found today. It seems like it would be intuitive that subtract would remove them though, since those rogue verts can reek havoc with deformations. I can’t really think of any reason why they should remain a part of a subtracted vert group…

Feature request at blenderstorm: http://www.blenderstorm.org/qapoll/ideas/idea/640/

There are times when vertex weights of very small values, which appear completely blue in the WP mode, can be quite valuable, so keeping them in the Vertex Groups (VG) is essential. For verts subtracted completely to zero weight, it’s not unreasonable to keep them in a VG in case one wants to add weight back on them, which couldn’t be done if they are removed and the “Vertex Group” limiter is enabled for weight painting, which is pretty common, since it can help prevent inadvertent overpainting.

Removing verts from a VG in Editing modes is really the better approach, since that is the main means of manipulating VG membership. Or by using the script you mention, which gives you fine control over which verts are removed.

I agree totally that there are verts with very low values that are needed for deformation, but since there are both mix and lighten tools, and even using subtract at a value that isn’t 100% strength, that will leave the verts as part of a group, why not have subtract at 100% actually remove the verts from the group? Or at least make a remove brush. Painting them out is much more organic than unassigning them manually, as in clicking a vert, seeing what groups it shouldn’t be in, subtracting it from the unwanted groups, moving on to the next vert…

I think this behavior would make weight painting much more powerful. But, until then, yes I will run the script that cleans up the weights the next time I rig a character, I have no problem with that.


may I ask you why it matters so much for you?
Does it affect performance or some other matter ?
I really don’t know so I am asking.



Well for example, say you are weight painting the shoulder area, and either overshoot into the arm, or body, or where ever. So, you subtract those verts. But, they are still a part of the shoulder group and actually affect the way the model deforms, say the arm or body bone, even if the influence is zero. It can get pretty sloppy pretty fast.

I definitely agree with chipmasque. The terms for painting are derived from same terms of colour mixing (used for example in Photoshop or GIMP) not vertex group members operations. Removing verts from a VG in Editing modes is really the better approach.

But, weight painting is a vertex group operation. I still think a remove brush would be a good idea. If removing verts should be an edit mode operation, why not just add them in edit mode as well? Weight painting is supposed to be a fast, intuitive method to assign verts, it should remove them too. Just my 2 cents.

Thanks for the fast reply. :slight_smile:

I still have to come across something like that but I’ve already had problems which were painted blue while not being at zero influence.
I’ll have an eye out for it now though.


  1. Use the “Vertex Group” option to limit your painting really helps prevent over- and through-paints, though there are times when you just have to be very careful
  2. I don’t see how zero-weight verts can’t affect deformation, although very small weight verts can in some instances. I have created hundreds of vertex groups with overlapping populations, some of which have zero weight, and have never seen those affect the influence of weighted verts.
  1. Add verts to a VG in Edit mode using the “Assign” button.
  2. Weight painting is a method of adjusting vertex weights more than modiying VG populations
  3. You can “paint” vertex selections in edit mode using the BKEY/BKEY option selection brush, which is a pretty intuitive way to wrangle them nasty ol’ verts into their proper groups :wink:
  4. Just as it’s all too easy to add verts to a group by accident, it would be very easy to remove them with a brush option, so the convenience is two-sided. If you think about it a minute, you’d realize that accidentally added verts are much easier to remedy than those accidentally removed. With the present setup, removing verts is a very intentional operation.

At the same time, what is the better workflow- you are painting, notice an area that you painted by accident, switch to edit mode, select the bone vertex group from the buttons panel, select it to see which verts are not wanted, de select then select the bad verts, unassign them, and go back to weight paint mode, or else notice an area that shouldn’t be painted, click the remove brush, then go back to work.
In my experience, the zero weight vertices will affect the deformation still.

I don’t want to appear ungrateful or demanding, I just think this would be a pretty good improvement to the workflow. Considering I have probably spent, well, way too much time reassigning verts manually, this would have saved me hours. Obviously, the next time I build a character, I will use the clean weights option after painting each bone, but it doesn’t really provide the feedback in real time of how things will act. I’m not complaining, I have used enough software to know that you have to be flexible in the workflow, and I think Blender is a fantastic piece of software.

sausages: I agree, it is a little un-intuitive to paint them to 0 values only to have them still be part of the group.

It may be “un-intuitive,” but intuition isn’t always right or the most efficient way to govern tool behavior.

Example: I usually set my vertex groups to encompass more than the weighted vertices, so that the outliers have zero weight. I want them in that vertex group, because I use the VGroup weight painting limiter about 98% of the time, and if I want to tweak very low values in the outlying regions I don’t want to have to disable VGroup in order to do it and risk overpainting onto verts I want to keep excluded. Same goes for using brushes like Blur, where I need VGroup to keep things in line but also need those zero-weight outliers to accept the blurred weights.

So in this case (and I don’t think it’s that unusual a situation), automatically removing zero-weight verts from a VG would be a big pain in the arse because I’d have to go back and add them in again, only have them possibly painted out again, and on and on in a time-wasting circle.

Whereas, in order to remove zero or very low weight verts from a group when I want to do so requires only running a fast script option.

Now, a “Remove” brush might indeed be useful, since it gives the user a definite choice, but there really is no good reason to have zero-weight verts removed as a matter of automatic routine, because they can be too useful when kept in a VG population.

May be a solution to please all would be:
Keep assigned verts with value zero when VGroup restriction is enabled,
if not, add and remove them to / from group as you paint?
On the other hand, i think that will be even more confusing.


Keep in mind that vertex groups are used for other tasks than armature deformations.
While controlling soft body goals zero values verts behave completely different to not in group verts ( which will receive the global default value ) And for particles i am sure you will want to be able to define no fur at all regions for a mesh.

bjornmose, the remove tool would only remove the weights from the selected bone group.

chipmasque: since weight painting can involve either experimentation with the weights or shooting into areas where you want nothing, I agree that a remove tool would be a nice addition. I never said that there should be only add and subtract, and again, the lighten brush would be good for making lighter weights without removing them, or subtract at a value less than 100%.
In the end, I have to adjust my methods of working, that’s all.

It’s not a necessity, but I do think this would be a nice option to have. Obviously there are other ways, but a little toggle button that said “remove 0 weight vertices from group” wouldn’t be a bad thing as I know that I would use it instead of the go around that I currently do.

yes other than this would be insane … how to guess other groups are involved …and how deep and after all why should anyone even feel the desire to interfere with other vertex groups unless there was the need for some high level quantum mechanics …
but as i said i don’t feel that it would be a understandable rule the way the UI is now

not to be too picky /* reading the entire thread would have helped */
but i think there is a python-script … even linked to the context menu … right?