Vertex groups for selection

While looking at a reported bevel bug, https://developer.blender.org/T62649, I found the the root problem was that it is not ideal that we are using vertex groups both for membership and for weights.

Because: when you use them for weights, you would like newly created vertices to interpolate the values from interpolating from the corners of the face that they are in. But when using them for membership, you want to have logic in the code decide whether or not a newly created vertex should be in or not in an existing set (generally, if it is somehow a “clone” or “outgrowth” of an existing vertex in a group then probably the new one should also be in the group; otherwise not).

Anyone have any good ideas on how to solve this problem? My best idea is to bite the bullet and make membership sets for vertices (and, why not, add them for edges and faces) a separate concept from sets with weights. But this is a lot of work. (Maybe a possible GSoC project?)

3 Likes

I feel same difficulity, when weight paint for multi bones.
color weight for bones is not complex but ,when use vertex group (blender offered UI in property) I often confused before.

Because, some aprication clear divide, vertex group (or face group , poligon group) it is only used to group elements . of couse it is useful to paint weight,
but it is just group name for selection. not link with bone or each weight-group.
(though there is menu, which set weight correspond to current selection group name, or fill weight value with selection group )

About blender UI, if I remove vertex group from property tab, it lost all weight.
if blender will divide "selection group for mesh data (user customize for selection only) and each “weight group” as UI, it seems more clear, how they work…

selection should be zero or full (analog) but weight map not work so.
for armature weight, weight group link to bone name. for another purpose, (eg bevel or modifier) ,maybe user name it as they like. but it is not selection group.

But most of user are used to current vertex group, then it may need long process to change way. (Though I approve your plan)

1 Like

I just kind of quickly perused the linked bug report.

Yes, it is a little strange to use things for both weights and membership. However, there is a different solution than establishing a structural definition, which is to allow generative modifiers to assign generated vertices to vertex groups. This solution would also improve Blender in other ways.

This isn’t always something that makes sense. A subdivision surface modifier probably results in a mesh where none of the post-modifier vertices are in the exact same position, even though most users would intuitively say that some vertices are clearly old and some clearly new. But any modifier that allows for a material offset, like a bevel or a solidify, and many more such as a mirror or array, can be clearly divided into old vertices and new vertices.

Once you have newly created vertices marked, there’s a lot that you can do with them. In particular, you can edit the weights only of newly created vertices with a vertex weight edit modifier to assign them clearly 0 or 1 to a vertex group to indicate membership. (Note that some new presets or options for Blender’s standardized curve widget would help here, but practically, they’re not necessary.)

This also improves non-destructive modelling (and by extension animation) in other ways. There are too many times that you have to write a modifier just to be able to assign vertex groups (or sometimes materials, or sometimes other traits like UV that could potentially be assigned non-destructively using vertex weights.)