Groups in Blender

Let’s add Groups to Blender!

This thread is dedicated for designing and developing grouping in blender. This post will be updated as design and definition of functionality, and implementation progresses. Currently we’re in the design / prototyping phase, and will eventually transition to core development once features and UX have been worked out. Please let us know what you think and jump in if you have ideas and feedback!

Group Functionality (In-Progress):
Groups will be added as a new object type. That will allow for a clear distinction from collections and their unique functionality, provide for backwards compatibility, and a true hierarchical system in Blender. Below are in depth explanations of how they’ll function and what features we’ll need to design and develop.

Structure
  • Group Structure
    Groups will be an entity similar to an empty. But also different. At their core, groups will allow for separate objects, or other groups (and eventually collection instances), to act as one entity, while still retaining the independent nature of their constituents. They will appear in the outliner as an entity with constituents as deeper elements in the hierarchy. (FYI I’m trying to avoid using children to not confuse grouping with parenting).
  • Group Implementation
    TBD
Origins, Pivot Points, and Transformations
  • Origins
    Groups should have their own origin, independent of their constituents’ origins. This will allow for a fixed point of origin regardless of what is added, removed, or modified within the group.
  • Pivot Points
    Pivot points will be a great enhancement for groups, and will also be added to objects and collection instances. Pivot points differ from origins in that they are positioned relative to the origin, and you can have multiple of them. You can only use one pivot point at a time, the active pivot, but which pivot point is active can be animated, and pivot points themselves can be animated.
  • Transformations
    TBD
Selection
  • Group Selection
    TBD
  • Group Item Selection
    TBD
Materials, Modifiers & More
  • Materials
    TBD
  • Modifiers
    TBD
  • Constraints, Physics & More
    TBD
Visibility
  • Group Visibility
    TBD
  • Group Representation
    TBD
Instancing
  • Group Instancing
    TBD
  • Object Instancing
    TBD

Collections
Collections will be left as is for what they are best at, and seem to have been designed for, which is scene and render management. This includes organization of your scenes to control visibility and render-ability in unique ways that aren’t dependent on the scene’s structural hierarchy. Since objects can exist in multiple collections, it makes them very powerful for this. Groups, as a new type, will also be able to be added to multiple collections to benefit from their unique organizational traits.

Potential enhancements to collections

What features would you like collections to have with this focus in mind?

  • List item

Parenting
Parenting will also be left as is. Groups will be able to be children to other parent objects, and other objects / groups will be able to be parented to groups. Grouping will act similarly at a very basic level in terms of general manipulation, but will be separate as there will be many differences to traditional parenting.

Objects
Object will also be left as is. They’ll be able to be grouped together in a group, as well as serve as children or parents. Adding object instancing would be great, so that you could instance an object without having to add it to a collection or group will will both support instancing. So you’ll be able to instance individual objects, groups, and entire collections.

Open Design & Development Questions:

  1. How should materials on groups be applied to constituents?
  2. How should modifiers on groups operate?
  3. How should advanced things like physics be handled?
  4. What are your thoughts on optionally joining group items so as to treat groups as a single entity?
  5. What would you like to see from groups and how do you expect them to work?

Want to keep updated with every step of our progress?! Be sure to change your thread notifications to Watching.
Screen Shot 2022-03-07 at 4.44.25 PM

2 Likes

from my C4D its very strange that blender already have collections but they dont hold transform option . And you need to download 3d party solution (extra shapes) to add commands that that adds null object and links selected objects. This is hard to discover ,unintuitive , and destructive. With better struc you can perent objects much easier add modifiers to the all objects in grup but also asign materials etc.
Coper how much longer would this take in blender.

video of how easy is to organize object in to groups with transforamtions and use modifiers and texture more non destructivaly was here ,but that’s against guidelines so i had to record worst version of this video with my VO explaining poorly :smiley:

Maybe i am missing something obvious. And lets not even talk about this distracting parenting line that you need to trun off in overlays.

2 Likes

I miss so much this kind of ease and intuitiveness in grouping, especially when it comes to applying materials, modifiers, etc… if we’ll ever have a group system as robust and “on-the-go” as this, I’ll be the happiest Blenderist on earth!

1 Like

@adambelis

Since I have never used any other software I can think only in terms of Blender. By looking at the C4D example, is easy to recreate the same effect

Think of a ‘Collection’ like this:

Collection
  Cube
  Cube2
  Cube3
  Empty

Once you select an object in that group, you can have an operator that calls the Shift-G bpy.ops.object.select_grouped(type='COLLECTION') and moves the pivot point to active element that would be the ‘Empty’. Then you can transform and rotate in the same as the C4D example.

However there are many ways to make these work behind the scenes and give more robust workflow. As of having a modal operator with a check box that says Transform As Groups and detects when an object is selected to perform these sort of tricks.

Wow… kinda makes me want to use C4D

Sharing a screengrab like that breaks the copyright guidelines. Is there no way of illustrating the feature with a publicly shared video of cinema 4D by the copyrights owner?

See

from

That’s rad. It operates how I was envisioning in terms of usage and flexibility.

@Shwaky
To be clear regarding the copyright topic brought up regarding the C4D video in @adambelis post: I have never used C4D and the grouping, transforms, selection, material and modifier operations are not based on any specific 3D application. They are general workflow enhancements that could be built within blender. These are very general ways of handling and enhancing the interaction of object data.

I’m going to work up a mock up with python that show’s how this could be done. Although I think the final implementation of grouping should be done probably in C.

For anyone who says that you can do the above within Blender currently with Collections, that’s not what collections appear to have been designed for. Collections don’t hold transform data, you can’t apply modifiers or materials to them, and they seem to be primarily for render layer organization. Groups could be an enhancement to Blender, offering transforms, material assignment, modifier application and more. Objects could only exist in one group, which would solve the problems brought up when talking about applying materials and modifiers and adding transform data to collections (since an object can belong in more than one collection, how do you decide what gets applied to that object if different things are happening in different collections).

I have done a bunch of searching regarding the topic of grouping and it seems like a feature that could be really useful for people. And I know I personally would very much appreciate using them. Especially with complex models with lots of pieces.

What do y’all think?

3 Likes

Features like that combined with groups would be killer. That’s what I’m talking about. It would help soooo much

1 Like

sorry didint know that was not allowed deleted video. FOr sure it would be possible to make a exampel without sharing that video but it would be kind a hard and much less clear what i am tring to show i could probably make a “paper propotype” inside of blnder screenrecording and voice over

yeha blender could improve a lot with more intuitive and more procedural workflows

if you want to work on this feature and need any desing or ux help ping me . I would love if this was inside a blender. If multiple collecions can hold same object them collections are not correct way to go and concept of groups would need to be introduced in to blender

ok this is still convoluted but atleast litle less so … and this would still miss more procedural workflows as modifiers that aply to objects inisde a grup or texutres (c4d can do mouch much more but did not want to over did it )

Don’t forget about how these “groups” will interact with the rest of blender, think about all the already existing workflows since 2.8 that rely on the “collections” system and what kind of conflict that might create, ex: collection info node in geometry nodes, etc…

The collection system replaced the old layer system, will this group system, replace collections ? will they exist alongside each-other ?

For sure. I don’t think collections would need to be changed at all for this. They still are good for render and view layer management. Groups could be implicated separately and live alongside them harmoniously.

1 Like

Yeah for sure dude. I’ll hit you up 100%. I’ll start a figma doc and we can jump in there and start roughing stuff out while I work on a python prototype.

1 Like

groups and collections could coexist together, I admit that I am not advanced user of blender so probably i don’t know all usecases of collections, But you can see grupes as two features:

  • they store all objects with but also have transformations (that’s easy part)
  • they allow to apply materials and modifier to all objects without any manual linking unblinking coping and all the other tricks you need to do now .

Collections are more abstract and they hold data for “filtering” reasons

2 Likes

If you go from the most simple to the most complex concept.

Object parenting is the most primitive and brutal way of putting things in a “category”. Mostly is very primitive and limited to matrix-transform hierarchic organization. However since it makes things in the outliner more compact it was used a lot back in the 2.7 series and earlier.

Then ‘Collections’ are slightly more flexible, they work on higher level than strong matrix-transformations. They are more multipurpose and have meaning in many other contexts (such as nodes or view layers). However still they are limited to only one order of organization same as the first case. Once you go for a structure in the outliner you are kinda stuck in there.

As for example if you would have a forest scene. You would have the scene organized in chunk group. Each chunk group of the forest would have a list of various objects. But still you would need to have a group with all trees and something else for the rocks. It means that an object can belong in many groups.

Then how ‘Groups’ stick into the picture as far as I think, is that they work more as way of tagging the objects with identities. Then having the ability to use them as selection filters in some operations.

As this subject has been brought up several times also on Blender Today with Pablo, I have to say I always leaned towards evolving Collections to make them behave like groups, rather than creating another system of categorization and tagging in the Outliner.

It’s also fair to say that I never used the functionality of having objects in more than one collection, especially because I never found this concept to be communicated clearly in the outliner, resulting for me in a very crowded situation where I don’t understand which object is distinct and which one it’s the same but “replicated”. I also never use them along with View/Render Layers for compositing reasons, I just need a couple of passes all in the same layer and then use cryptomatte.
So it’s also me not using the full potential of all Collections’ functionalities.

But just to give another perspective, in case of going down the road of expanding Collections into groups, couldn’t there be a Preference, a checkbox in a menu, that in case we want functionalities like transforms, modifiers, materials etc. for Collections, then you can’t have objects in more than one of them?
It could accommodate users that use them more as a way to have different “compositing” layers, and users that instead want a hierarchical system to divide, organize and transform large groups of objects more quickly.

Hey Lichen, I’m no coder or UI/UX designer, but if you feel the need for someone to just test stuff and give feedback, ping me no problem! It’s so many years I’m waiting for this to come to Blender, I’d be more than happy to help in any way I can!

that sounds like bad idea it would be hidden switch that would convert collections to grupes and wise verca … that would create lots of confusion and low discoverability . If two features had same name same visuals just hidden sich to change their function

I hear you for sure. That’s the most flexible for sure. Groups don’t have to be strictly hierarchical. That’s how I’m implementing them in another application I’m designing. It gives you the flexibility to organize the data hierarchically with collections, while being able to have grouping behavior as well.

If I had a magic wand I’d just evolve collections into having these features of groups we’re talking about: transformations, stored pivots, cascading materials and modifiers. Like @slowk1d suggested. Though as @adambelis outlined I think that could cause problems and I would think that behavior would want to be enabled all the time, and just optionally used by the user instead of having a setting to change the behavior. But I don’t know if this is the best course of action.

There are benefits and problems to enabling these behaviors, specifically materials, modifiers and transformations, on collections:

How do you decide what gets applied to the object? Collections don’t seem to duplicate or reference a link of the objects, so they don’t really exist twice. Aka there is only one so you’d have to figure out how to apply modifiers to the same object. And which one gets applied first. I think that’s also why collections don’t have transforms. If you only have one object, then how can you apply different transformations to it? lol.

So I’m not sure you could add the functionality we’re looking for to collections, without dramatically changing how they operate, and kind of defeating their intended purpose: which correct me if I’m wrong, seems like view / render layer management. Not providing modeling or actual structural meaning to multiple objects.

Ok so check this out. The same mesh can be assigned to multiple objects. That actually creates a duplicate reference of the mesh and then assigns the materials, modifiers etc. The great thing about this is that you can have one place to store the data, and then have multiple copies that you can do lots of different things to. This is super powerful in my opinion. It gets tricky is when you want to actually apply modifiers to the mesh, for instance a subdivision modifier, in which case you have to hit the little number of users button in the mesh pane to actually duplicate the mesh, so that you can then apply the modifiers to it.

So that’s something to consider when designing this. We could facilitate the same mesh existing in multiple groups by actually duplicating linked and having it reference the same mesh. But I think a single unique object would want to only exist in one group. The way I can conceptualize groups applying materials and modifiers to their constituents is by assigning the modifiers to their constituents individually. And then that way if the object leaves that group and gets put in another group, the old group’s materials and modifiers would get removed and the new group’s modifiers / materials would get added.

I think groups could exist in a non-hierarchical manner. Thought the group itself would want to exist somewhere in the outliner so that you could easily click on that without having to select the children to change things about it. Though I don’t know if that is necessarily a benefit, as it could get difficult to tell what objects are in what group, without some mode that you could enable to sort them by group. But this would allow for more flexibility, as you could group objects together, independent of what they were parented to, what collections they were in etc. It would be nice to still be able to drop objects into a group and be able to retain that familiar hierarchical behavior while getting this more flexible behavior.

I think groups could have the following functionality:

  • Have their own pivot point and origin and transforms. (also I think objects in general should be able to have their own local pivot points stored as well, but that’s a whole nother thing) Selecting the group and performing transforms to it would transform the constituents. But you should be able to move the constituents of the group independently.
  • Have their own materials and modifiers that they can apply to their constituents. It would be nice if there were a setting on the group to decide how to apply these, either before or after existing materials / modifiers. These group materials / modifiers would be identified as such when applied to their constituents, so that they could easily be removed when moving an object to a different group, or mute their visibility etc.
  • Groups could be applied as tags to objects and groups (only one group tag per object / group) or objects and other groups could be put inside a group in the outliner, and that would apply the tag. If you placed the object physically inside the group in the outliner, and then moved it out, it would remove that tag and it would no longer be a part of that group. So you could get both hierarchical and non-hierarchical grouping functionality.

Haha. That was a lot of thoughts over a cup of coffee. :wink:
What do y’all think?

1 Like

I would also add that anything that can be added to sigle obejct shoudle applied to the content of grupe … so particle system, physics, constrains … what ever else this does not have to be done in one single MR

but now that i think about this in reality we dont even realy need to add grupse at all (as new concept) we can use nullobjects (thats als what c4d does) and logic how hierarchy in outliner works