Layers maniphest

collections
#1

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

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.

2482%20lays



Common Groups

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.


SKP_Groups




Collections

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.

https://developer.blender.org/T61492

  • 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.

Comparison table:

12 Likes
#2

Here are some examples and issues that we received after six months of research workflow, suitable for collection, the system requires some polishing and clarifications.

2 Likes
#3

It’s a good resume of the topic. But actually the old layer subsystem exist, in a new way, using the 1-0 keys.

I still asking to put that Quick layer system with a menu inside each collection. Allowing to the user to work like blender2.79.

Using that name could be a good way to separate from collections @billrey

#4
  • “Some developers want to remove such ability, because “wings do not fit elephant body”, however, we …”
  • “Broken toggling [QCD | LayWalk]”

Yet.
QCD system is tried to be killed off instead of being revived while it’s need to be improved.

#5

Well, Collections are the layers so in that sense there is no separation.

One idea for the numbers, if we keep it, is to make it more easily configurable. It’s a bit limiting and arbitrary that you can only toggle whatever happens to randomly be the first 20 outmost collections. One could imagine a way to assign numbers instead, and a little number could appear next to that collection. Something like that.

#6

Collections is “Layer system”, so they are layers, but QCD is not.
It seems, you want separate QCD from collections.

Well, it have a sense.
Obviously, it is impossibe to “replace” QCD systems seamlessly with any kind of “Layer system”, including Collections, because different capacity of both systems brings incompatibility by design.

This is just as impossible as replacing the Layers system with the LayWALK command in AutoCAD,
because it will not work.

#7

When I mean to separate, I mean as a concept and with a name that allows users to recognize it and differentiate it from the collections. For example Quick Content Display (QCD), or QLS (Quick Layer System),… although internally to blender everything is collections.

Something like this has the advantage that it already gives the impression of a subsystem of the collections, not of a separate system.

And the implementation, I believe that a number next to the collection and to be able to choose it by means of a menu in the outliner would be enough. Then it would be to see if in the end the system of layers is implemented again in the header as before.

#8

There are complex problems, like global lack of transparency/readability of entire system,
so “numbers near collections” solutions does not match size of the problem, I guess.

#9

Man, you have two options, to try to propose something simple and viable that is possible or to start designing something big and complex that in the end devs prefer not to implement.

#10

This is not a proposal, this is a feedback, a danger zones markup.
Proposal for such system’s prototype cannot be so short.

#11

There are a few ways that a system to group objects could be added to Blender, by which I mean a way to treat multiple objects as if they were a single object.

Think of Node Groups, which is basically exactly that. This kind of thing is especially useful in more complex scenes to manage your scene in a nicer way, but to still have a way to edit those groups.

Currently, we have a slow and somewhat clumsy way to do it via Collection Instances, but they are a lot of work to set up, and not easy to edit in place.

We could ‘just’ add features to more easily turn a Collection into an instance, and also add a way to edit them in-place. This would add a lot of convenience and power without having to invent a whole new separate layer/group system from the ground up.

#12

Agreed. Systems can be well tuned and this can be enough.

About Grouping representation - there can be “converting” concept or even “toggling” variation, when entire Collections hierarchy turns to Common Group and back via single button, as far as Groups and Collections systems are hierarchicaly identical, and differs mostly with behaviour.

So there can be button, that defines how outliner hierarchy is presented in 3D view.
Linear, when every object can be selected directly (Collections mode) or Hierarchical selection with entering collections like in objects (Group mode)

1 Like
#13

Yes, it could be, or there could simply be an entry in the right-click menu in the Outliner to turn any Collection into a Collection Instance (group).

Same thing for editing. We could also re-use the same shortcuts to edit them, as we do in the Node Editor (Tab by default)

1 Like
#14

I think this would be helped if collections had an empty as a root parent.

That parent could then be used to manipulate the collection as a whole, much like regular grouping systems, and could contain collection-relevant data or settings.
You could even add a setting that causes you to automatically select the root instead of the objects within the collection, when you select them in the 3d view, atleast the first time. Thus giving you something that functions similarly to other grouping systems, whilst retaining an ability to essentially go into ‘edit mode’ for the collection, by toggling the setting off again.

#15

Collection Instances already are essentially an Empty, so it’s already possible to move them and manipulate them as if they were one object. They are just a hassle to set up.

1 Like
#16

There is actually a challenge between representation collections as groups (Common Grouping) and ability to grow/shrink selection by hierarchy ([ and ] buttons in Parenting), like in example about cars.

Both concepts are good for different purposes.

#17

Better ways to grow/shrink selections over a hierarchy, or even ways to move the selection up/down hierarchies I feel is a separate feature, but still useful/nice to add. As I’m sure you know, Maya calls it ‘pickwalking’

#18

Instances yes, but the collection itself, the original, is a loose set of unconnected objects

Though there is an issue with possibly forcing a parent on collections, since a collection can be composed of objects which have varying parents…
In this sense I’m not sure it’s really possible to get them to work even similarly to your normal grouping systems - they’re typically locked in a state. Could be the best option is the ability to edit instances by using overrides - but that still keeps messy originals around, and adding a new object to an instance wouldn’t really work.

#19

Actually, never heard, we don’t have a deal with maya setup.
But yes, it is nice example of such a thing)

1 Like
#20

I think there’s nothing in particular that would not make it possible to convert a normal Collection into a Collection Instance.

Just like you can do manually by:

  1. Going to Add -> Collection Instance -> My Collection
  2. Move or hide original Collection
  3. Whenever you want to edit, jump back and forth between these two

Technically it works already, it’s just clumsy in practice. But it doesn’t have to be.

1 Like