This is a topic about hierarchical structural/navigation issues in Blender 2.8.
Here are the comments of a specialist who deals with unlimited hierarchical structures every day for several years and even created a functional framework for advanced work with AutoCAD layers, including cross-recursive parsers, for processing them in hierarchical structures of any complexity.
We will talk about different hierarchical systems, their issues and different existing solutions, such as
Layers, Groups, Collections, Parenting, Components, and their features.
QCD (2.7 layers)
First of all, Blender 2.7 “layers” are not related to “Layer Systems”, it is a separate system.
It is a quick content displaying system (QCD) — a solution for a vertical (hierarchical) navigation, alongside with Outliner and RenderLayers, called “Layers” by accident – it is more related to multiple clipboards systems or cumulative Local view.
QCD system guarantees that you can split any scene in 20 cumulative slots and you will have complete control over them, including graphical signs and available keys.
Fast visual control is the main feature QCD system stands for.
Saying that QCD as system has limits is similar to say that people have limit in 20 fingers – there is no way to provide such fast visual control for more number of slots, its capacity completely fits its goal.
There are workflows that depend on it because it makes them possible independently of layers, collections, selection groups or any other hierarchical units.
It is a unique system in the software industry that makes Blender special. Its demand depends on the industry which the worklflow of user belongs to).
You don’t need it if you are in
- Interior visualization (simple scene structure - walls, lights, cameras, furniture)
- Exterior visualization (pretty much open spaces in scene’s geometry)
You need it in industry that requires close components placement or the same placement with variations, such as
- Engineering (complex scene structures with inplace variations)
- Historic restorations (Multirefrenced system with point cloud and multiple images)
- Game development / assets creation (LOD in place creation and comparison)
- Medicine (prosthetics)
Some of those workflows require QCD more than collections themselves, that’s why it is important.
The closest system to QCD is LayWalk command from AutoCAD.
Blender 2.7 QCD is the best realization of such systems in CG, but most of massive production also requires a completely different system – common Layers.
Common Layers paradigm began with analog transparent layers in handmade animation, the first layers have come from raster/vector editing software.
Its goal as a system is to provide a semantic subdivision of a scene into an unlimited number of contexts.
The layer has a name to represent such context for the objects that are stored in it.
Layers is a quite common paradigm in most of modern programs, one of the best and flexible Layer system has got AutoDesk AutoCAD.
Software like AutoCAD usually has separate frameworks that work with layers only - basically, a separate table editors, that provide different types of sorting, table filtering, grouping, isolation, freezing, which flow to states management, selection filtering ( FILTER ) quick selecting ( QSELECT ) and other features to handle and provide real support of unlimited layers count.
Fact – AutoCAD has separate undo engine that effects only layer changes ( LAYERP command).
Professional Layer systems are always heavyweight systems.
First of all, Blender 2.7 Groups are not related to “Grouping System”, it is a Tagging system.
Common Grouping systems is vertical (hierarchical) navigation solution, that stands for upholding multiple objects together with non-graphical hierarchical containers with providing ability of quick selecting/manipulating/entering them, with unlimited inlay amount.
It works like parenting but with non-graphical parent that has a name property.
They are simple in use, because they have pretty much straight forward workflow.
One of the best Grouping systems for 3D is persisted in Sketchup.
Blender 2.8 collections is a completely new hierarchical concept containing the properties of all concepts above and partially solving some production needs.
The issue is that it is inheriting their problems by design.
The main problem of Collections as a system is that it allows create complex hierarchical structures without providing flexible workflow with them.
It is not fast enough with small amount of collections, that brings frustration, and not flexible enough for huge amount, that brings mess.
List of examples:
- Walkthrough [QCD | Laywalk]
Collections allow create complex hierarchical structures in scene that cannot be easily observed/walked through without outliner.
There are still 20 hotkeys from QCD yet, that allow observe 20 collections and it helps a lot.
Some developers want to remove such ability, because “wings do not fit elephant body”, however, we need QCD navigation at any cost, even by the cost of organizing our scenes for it, for example, creating 20 basic collections that will contain everything independently of how many collections can be created, just because there are no alternetives that can bring such fast navigation.
- Visual vertical navigation [Groups]
Collections can’t be selected like Groups.
Objects can be placed in collection, but there is no ability to select entire collection’s hierarchical level in viewport by selecting a part of it (by selecting contained object), navigating hierarchy visually, in 3D view, without outliner.
There is still no Common Grouping system in Blender!
We need to use some indecent addons like GroupPro, its popularity shows how Grouping system is needed, because people buy it even if it completely messes up with a scene, making it unusable, if you open a scene on PC where this addon isn’t installed.
We fire people who use GroupPro in spite of the fact that we still need Grouping.
- Separate isolation undo [Layers | LAYERP]
Heavy layer systems often require separate hierarchical undo/redo.
Ctrl+Click action isolates single collection in Outliner, but did not reveal back previous state of collections, so if scene collections visibility was set up, it is hard to use it because of fear to undo some changes in scene. It is impossible to isolate some collection, make some changes in it, and then get previous visibility state without creating temporal View Layer.
- Verbal vertical navigation [Layers | Parenting]
There is no ability to select/isolate (navigate) collections, by manipulating with objects in them.
Example task – Garage scene, 50 collections with 50 cars, one tire of one of the car is selected.
Select tires by material – 200 objects that belong to 50 collections are selected.
Simple task – select (1) and isolate (2) 50 cars, having their tyres selected – seems to be completely impossible by default.
This is a graph theory issue.
Meanwhile, parenting allows create the same kind of structural dependencies and graphs, and they have navigation keys provided, like brackets [ and ] , with Shift modification to solve same issue:
As a result, there are two sytems with same problems, but only one of them have a solution.
- Quick Global Reveal [QCD | Layers]
Ability to reveal everything without putting selection on it, ability to reveal Scene Collection visibility by pressing numeral key is needed. Maybe it will be nice to start numeration of collections from 1 button, putting visibility of Scene Collection on it.
- Broken visibility toggling [QCD | LayWalk]
Toggling collection visibility with numeric button + Shift has been broken recently, so it is supposed to add collections to visible… carefully, remebering their numbers instead of just keypressing, that brings frustration.