New vertex group feature: parenting (not real parenting tho)
I thought abbout making a long post with all these vertex group ideas but then I thought it was better to make a new post for each of these.
My first vertex group suggestion is to add option to parent vertex groups to another.
For example. This allows you to have a vertex group called face that is the parent to other vertex groups like left eye, right eye, nose and mouth. You can now easily add verts to the nose vert group that are now also automatically added to the face group. You can also create a vertex group called eyes that has the face as its parent and the left and right eye parented under it like this: ...
Example tree
-
Face
-
Eyes
- Left eye
- Right eye
- iris
-
Mouth
- Upper lip
- Lower lip
- Jaw
- Nose
-
Eyes
Sorry for horrible formatting, this is the best I can do. But essentially it is just parenting like you can do with objects. The Face vertex group itself can be totally empty and not have any verts but when you reference the Face vertex group in a modifier it inherits all the vertex groups parented under it.
The main benefit for this is that you can use the "Face" vertex group for a modifier and it automatically uses the modifier for the children of that face vertex group as well and does so in easily manageable fashion. You don't need to create new modifiers for each if you need to add displacement modifier for all the face parts. You also avoid needing to create multiple very similar vertex groups and maintaining them.
Makes it lot simpler to keep track and organize vertex groups in large scene and especially helps in situations where one vert needs to be in multiple vertex groups but manually adding it to all relevant ones is tough to remember.
It is not that easy to add I'd imagine because you also have vertex colors to figure out in this system but I don't see that as huge issue.
An image showing the feature in the 2.8 vertex group editor:
13 Comments
Well, Its more like grouping vertex groups rather than parent so we cou;d call it (vg) collection.
I see there a advantages that tools, modiffiers, etc could use. Right now if we have eg skinned mesh, and that skinned mesh have other VG like for masking, or hair purposes, and if we perform VGnormalize we would corrupt them. But with vertex group colletion we could easly limit normalization to single collection.
Only as a visual help or actual parenting on a vertex level? Your idea with the modifier sounds good too. +1 for me, could be really useful, especially on larger models.
@alphaxde: I misused the word parenting here. I think vertex group grouping conveys the idea better (needs a better name lol). It is more about the visual hierarchy although modifiers can use the "face" vertex group for example which then also includes the eyes, nose, mouth and so forth even if the face group itself is empty (but a "parent" to the other vertex groups).
I would rename this into "Vertex Group Hierarchy".
And replace the description with two distinct sub-features in terms of implementation, so at least something can be done if the whole seems too big:
IMHO this, waay shorter description, is more to the point and much easier to read. Anyone knowing what a vertex group is will instantly see the necessity and the potential. No need to force-feed long paragraphs :)
--
Was about to post this feature then saw its already here :) great! I would call it "vertex group management". This would be very helpful. Especially when you want to isolate vgroups e.g. skinning from shapekeys and from dynamics etc....
My answer intend to give a more general feedback of this particular post.
Like Collections for objects, groups of vertex groups seems to be a need for organizing vertex. But then, a common problem appears when a part could be considered as child of multiple parents ?
Blender allows having the same object in multiple collections. And so, collections becomes a way of organizing your models but not structuring them. Trees are for structuring the models. Not collections.
Tree structures allows cascading features, properties, operations, modifiers, and so on. This is nearly impossible if a subset can be a child of more than one superset. As an example, it seems to be impossible to add modifiers to collections, given some feedbacks on other requests.
The same question now comes for the vertex groups. Do we ask for a way of organizing or for structuring them ? I personally think that we need more structuring features that organizing ones. And even more in the case of vertex groups.
@pcsd24: I made a mistake with using the word "parent". Saying "vertex group collections" sounds more like it but I think the hierarchy is also an important feature so collections... no. I have used the wording "vertex group groups" which may work out little better. But that is a bad word as well as I just figured out as blender already has groups. Maybe just call it vertex groups treeing or vertex group foldering..?
Essentially what I am proposing is that we can use vertex groups as folders so each vertex group can have vertex groups "under it". But folder is misleading term as well because in the system I am proposing a folder can be a sub folder of many other folders. System linked folders might be better term lol. But anyways the idea is folders in folders in folders. So we get a folder tree of sort. But if you assign the "face" vertex group to a modifier then it also assigns all the vertex groups under it. Face = Face+Eyes+LeftEye+RightEye...+Nose. But if you only assign the vertex group "Left eye" then just that vertex group is used (as it doesn't have anything under it).
Using the folders idea also gives us the folder tree. This is then used for both all tools that reference vertex groups and also used as a visual hierarchy that visually organizes the groups into more manageable ... groups where we can instantly see the connections between these vertex groups.
Because vertex groups are effectively just selection of vertices I don't see any problem with same vertex group being in all kinds of different places in this system. Although it might make the list of vertex groups long if you can put one vertex group under several separate vertex groups, like this:
But as these are just selections of verts there really is no problem. Even if a vertex A is assigned to all of these vertex groups it doesn't break anything because it is not different at all if you had these 5 vertex groups divided into 7 different individual groups. Of course the system needs to handle one vertice being "selected" multiple times but that sounds pretty basic programming problem to me?
It can get complex if you group the vertex groups all over like I did in that example but I feel this is also a strength as you can do really complex stuff with it if you want. That is an extreme example but it also shows how the visual hierarchy allows you to make sense of that just by looking at it. It also reduces the amount of work as you may not even need to touch the Groups 1, 4 and Another at all as you can just focus on their sub groups and all your changes are funneled back upwards the chain.
The system might need some additional features. Like taking a single instance of vertex group and making a new group out of it. Or if you delete the vertex group in the middle. Do its children get deleted as well or do they simply "move up"?
@o7216059: In short. This is a really good idea. In practice, a tree will be much easier to implement and use.
Where in Blender's interface would you control this hierarchy? In the Properties Editor where it's currently controlled, or would this be overloaded into the Outliner?
(Also, I took the liberty of slightly modifying your post to use bullet points to show the hierarchy you were talking about more clearly)
@Jason van Gumster: Thanks for the edit! Makes it more clear to understand for sure.
I'd not put this into the outliner but just expand the existing vertex group editor in properties editor > object data > Vertex groups. I may be missing something but simply looking at the vertex group editor it would not complicate it at all if it displayed vertex groups parenting there?
As for the tools needed to parent/unparent and the then the needed collapsing and uncollapsing of the hierarchy I'd guess you'd need couple more buttons there. But I think the vertex group editor there is a bit under developed and could use the added functionality. Plus it imho makes more sense to put all the vertex group related stuff there in one place so if you need to edit them it's all there in one place. I'd also want to add dragging and dropping so you could just drag the vertex groups to parent and unparent them right there.
There is one more thing I did not mention which is the visualization of the vertex groups parenting when you add a vertex group to a modifier for example. Would that vertex group input slot there in the modifier need some kind of indicator that some vertex groups are parents or parented under some other group? That doesn't sound like a difficult solution to me either as you could just show the vertex group parenting tree there as well. So when the user scrolls the list he gets a tree of the vertex groups. Or if none of the vertex groups are parented then it would just give a list like now.
@o7216059: Drag and Drop is a good parenting model and already supported in Outlier to is's not breaking new ground to add it here.
@Jason van Gumster: I think the outliner is currently not the right place for that, because of its current lack of synchronization with the 3D view. That could be also memory consuming to have all those details in the Outliner.
In the case of drag&drop, the drop condition in the Outliner will be more complicated to implement because you may only move a vertex group inside its object context !
So currently, I would suggest the Properties Editor.