Are there Groups in Blender?
There are many posts online where people are complaing about some functionality in Blender. One of the most frequent ones, I keep noticing, is people asking for “real groups”. They usually want Collections to act as a parent 3D objects in scenes. Before explaining, let me just say this – Collections are meant for other things. Just use Empties (Nulls) and parenting for that. This also ensures that your scene can be exported to other 3d applications correctly!
Let’s explore this a bit. I think that there are two reasons for this confusion:
In different 3D applications things are named differently. People, coming from other 3D apps to Blender, expect things to be the same. In Maya, grouping means creating a 3d transform object (invisible – without shape assigned) and making it a parent of seletected 3d objects in scene. You can also use Locators in Maya – they are the same just with a visual shape attached. In this case – grouping is a scene hierarchy term. In C4D it’s similar – it creates a Null object and parents other objects under it.
Blender is exactly the same, just naming is different – there is no term for Grouping. (There was before 2.8, but it meant other thing – adding objects to collections, before they were called collections)
Historically in Blender, the term “Group” (since 2.8 it’s replaced with Collections) has been something else. You could call it a selection set of objects. Another way to look at collections is – it’s more like a layer or tagging system (It’s very similar to Layers in Cinema 4D). It is a way to assign a label to an object or to say that object belongs to a certain collection of objects. Most importantly – object can be assigned to multiple collections. They are used mostly for visibility control, render layer setup and instancing multiple objects as a single object.
For 3d child-parent scene object organization in Blender – you should just use Empty objects and parent under them (Just like in C4D or Maya). Empties in Blender are just what everybody wants – invisible 3d object (but it can have visual shape in viewport), you can use to make hierarchies.
This is preferred way of organizing object hierarchies as this is 100% compatible with other 3d applications – you can export such scene to Maya, C4D, Houdini or other applications and it will be the same.
Collections and Blender 2.8+ Outliner UI
Since introducing Collections in 2.8, they added new default outliner view mode (Called View Layer mode), which shows scene objects not in a traditional child-parent hierarchy, but in Collection centric hierarchy. As this is default mode, it creates some confusion for new users – illusion that collections are scene objects and should be used for scene hierarchy. I believe this is the main reason for confusion for new Blender users. It does show also object hierarchies, but because objects can be linked to multiple Collections, it may look misleading – not showing parent objects if they are not in the same Collection.
Some people might not use it, but there are several view modes for outliner. Most useful ones are the first two – Scene and View Layer (default). Scene is what most 3D application outliners/object managers look like and this is what Blender had by default before 2.8. It shows just the 3d object hierarchy without Collections mixed in. I could argue, that Scene should be the default one as this is much less confusing and useful initially – until user actually needs to use Collections.
Outliner default View Layer mode. Looks like Collections are 3d objects in scene hierarchy.
Other outliner view modes
Scene viewed in View Layer mode
Here is a simple scene hierarchy – Sphere is a child of Cube. Cube is assigned to Collection_B, but Sphere is assigned to Collection_A. On the left is the default View Layer mode and it looks confusing – objects appearing in multiple places. In the first glance it seems that Sphere does not have a parent (Because Cube is not in Collection_A).
On the right is the Scene view mode – much clearer to see what is going on.
Scene viewed in Scene (traditional) mode
How to create groups in Blender?!
As I mentioned in the introduction, you should just create Empty objects in scene and parent your 3d objects under them, if you want “groups” as 3d hierarchy. Unfortunately Blender does not have a built in command to do this in one step (as far as I know). But there are several free addons that add this functionality and that you can map to a keyboard key.
One of such addons can be found here – besides single click “grouping”, it offers several other useful commands, such as centering the parent Empty object to it’s children, moving parent object to 3D cursor without moving the children and parenting without Parent Inverse delta transform.
What is missing?
Things could be better of course. One thing that would like to have is option to apply modifiers to whole hierarchy – adding modifiers on parent object and affecting all children.
So what are Collections?!
Think about Collections as Layers or Selection Sets. There are a lot of uses for Collections, but most popular are – visibility control, Render Layer setup and Instancing.
Just like objects themselves, Collection visibility in viewport or rendering can be turned off. This way they are useful to hide multiple objects in scene at once. Collection settings always overrides individual object settings.
But it might also be confusing if objects exist in more than one collection – object will be still visible if some of the collections it belongs to are visible.
Render (View) Layers
Render layers (View Layers in Blender UI) are a way to split your scene in parts for rendering or viewing in viewport separately – for example in background, foreground, characters and effects. Different render layers can interact during rendering – for example you can make some layers invisible, but still casting shadows on other Render layers. What is visible in each render layer, you control using Collections. Collection settings can be set per view layer.
This is where ability to have objects in multiple Collections is the most useful – often you need some objects to be in multiple render layers, but have different rendering properties assigned to them – and that is the reason why you need ability to add objects to multiple Collections.
Instancing and Linking
Instancing is another very important use case for collections – it allows instancing whole collection in scene as a single 3d object. And because objects can be assigned to multiple collections – the same object can be a part of different assemblies and therefore exist in different instanced objects. This allows for very memory efficient and fast scenes to be constructed. Neat thing is that these collections with all the objects can exist in different scenes and not clutter up your main scene.
Another super important use case is Linking collections from other Scenes or .blend files. This together with Library Overrides (previously Proxy system) is an incredibly flexible and powerful way of working. There is plenty of information about this out there.
Better way to work with Collections
I think Blender should have Scene view in outliner as the default because this is more traditional way of working with 3D scene hierarchies. View Layers mode can be hidden until people actually need to use this functionality (which is usually more toward later phases of most 3d projects – such as render layer setup or scene layout).
So how to manage your Collections without switching Outliner modes (Which is a bit annoying)? There is a very nice addon included with Blender, called Collection Manager. It provides alternative UI (Shortcut key M) specifically for dealing with Collections, without using Outliner. I mostly have my outliner in Scene view mode and use the Collection Manager UI to manage my object -> Collection relationships and Collection settings.
TIP: Disable QCD checkbox in Collection Manager addon properties – it is a UI feature that emulates old layer system in pre 2.8 Blender.