Collections Editor Design
Open, NormalPublic

Description

Here is the initial design. EDIT: -OUTDATED-, see posts below for newer one/ones.

Collections are supposed to take on the current role of Layers in Blender - this is indicated here with the general look of the Collection Manager. Meaning that they take the familiar look of layers like they are usually displayed in graphical software, while staying consistent with the Blender’s Outliner look:

When a Render Layer is set to use the Master Collection (could be named ‘Show All Collections’ in the UI), the Collection Manager changes its GUI a bit to reflect that:

Details

Type
Design
Bastien Montagne (mont29) triaged this task as Normal priority.Dec 27 2016, 3:15 PM

@Paweł Łyczkowski (plyczkowski) there is a misunderstanding of how the master collection will work. A layer can have multiple 'linked' collections, one of them being the 'master collection'. Think of them as "collection slots", similar with how we have material slots. The interface should communicate that well. Poke me on IRC so we can have a short meeting to clarify that and maybe discuss what we want to be communicated to the user in the UI and not ;)

In light of the ongoing UI proposal work for the new layer, a serie of paradigms need to be consolidated, to make sure the UI fits the proposed design.

  1. A layer can have multiple linked collections
    1. Each layer has a collection slot, and each slot is taken by a collection
      1. Which may require us to make a distinction between linked collections, and their nested subcollections.
  2. A collection belongs to the scene, not the layer, and can be shared across layers
  3. The master collection is a collection like any other
    1. A layer can even have two master collections, and another collection linked
      1. The more common case is to have the master collection for all objects, and another collection linked to control the override of a specific set of objects.
  4. The master collection is the initial collection in a new layer
  5. When we add objects to a collection we do it for all layers that share this collection
  6. When we add overrides to a collection we do it for the layer we are on
  7. When we change collection visibility/selectability we do it for the layer we are on
  8. To change the relation of a collection (i.e., to change its parent) we need to do it in the scene level, not in the layer level
  9. Nested collections are visible in a layer so we can change their visibility [7] and overrides [8], they naturally can’t be linked/unliked though.
  10. The “collection tree” se see in a layer is a synced (local) copy of the scene collection tree

(originally shared as a google docs, but better to have this here)

Here is the update of the design:

Selectability/visibility/renderability is WIP, final design for it is postponed for now.

Another update after a design session with Dalai:

How multiple Overrides are handled is not yet decided (if 1 property per override, and all overrides displayed in the Collection tree - could introduce clutter).

Feedback regarding the initial implementation of the Collection Editor, according to build f545df5 (from today):

Blender starts with Outliner in Active Render Layer, with a Default Collection - that's very good. Starting with Master collection would be much more confusing. I would rename Default Collection to Collection 1, Default Collection seems like something baked-in, and it's just a regular collection that can be renamed.

My impression now is that a regular user could be utterly confused by the functionality of the Collection Editor, but in my opinion this can be prevented with simple UI changes, by exposing the basic functionality as much exposed as possible, while putting the advanced functionality more in the back.

By basic functionality I mean:

  • Adding new collections
  • Adding objects to new collections
  • Moving existing objects to new collections

By advanced functionality I mean:

  • Having an object in more than one collection
  • Seeing the master collection
  • Linking, unlinking collections

How to do that:
The collection_new button should be the nr.1 thing in the window. It's the most important thing in there. Should be bigger than everything else, before everything else, and not 'sticking' to anything else (shouldn't be in a row of buttons).

The collection_new operator should also be in an RMB menu when you click in the empty space.

The 'add selected' RMB menu entry is advanced functionality, shouldn't be on top. The entry before it should be 'Move Selected Here' or similar - because moving objects between collections is basic functionality.

Collections should be unfolded by default.

That there is drag and drop is very good, but works wonky now - needs an icon that appears on cursor, less lag.

The selection is currently divided in 2: There is a selected collection, and there are selected objects. I don't think that's a good idea - it's harder to keep in mind, it's non-standard, and it's harder to predict what will happen on operations like drag and drop, RMB click etc.

Selecting a collection should be the same as selecting all objects in it, IMO (since it's a container). It would also help with identifying what the collection is in the 3d View. You click on collection, all it's objects get selected in the 3d View (and in the outliner).

RMB on object in Collections view should have some collection related entries, for instance 'remove from collection' entry.

Alt or Ctrl + eye icon to hide all but the clicked collection.

The collection_new operator should also be in an RMB menu when you click in the empty space.

Reasoning: RMB is the goto button for users that look for functionality. The place where the RMB is clicked on is on the thing the user want to do something with. In this case, a user wants to create a new collection in the empty space below existing collections, so there is a good chance that it's there where he will RMB click.

This is looking promising, love the direction it is taking. Just two suggestions for right click menu:

  • Add an Isolate Selected option, toggles visibility for all other collections/objects (like Alt-Clicking the eye icon, that is a great idea)
  • There should be both a Move Selected to Collection and a Copy Selected to Collection option in right click menu. The former moves objects to collection, removing them from all others, the second one keeps objects in its present collections, while also adding to current.

We can toggle selectability and visibility per collection, would it also be possible to toggle snapping? That'd be very useful for complex scenes.

Copy Selected to Collection

That is the same as already added Add Selected.

Blender starts with Outliner in Active Render Layer, with a Default Collection - that's very good. Starting with Master collection would be much more confusing. I would rename Default Collection to Collection 1, Default Collection seems like something baked-in, and it's just a regular collection that can be renamed.

My impression now is that a regular user could be utterly confused by the functionality of the Collection Editor, but in my opinion this can be prevented with simple UI changes, by exposing the basic functionality as much exposed as possible, while putting the advanced functionality more in the back.

By basic functionality I mean:

  • Adding new collections
  • Adding objects to new collections
  • Moving existing objects to new collections

    By advanced functionality I mean:
  • Having an object in more than one collection
  • Seeing the master collection
  • Linking, unlinking collections

    How to do that: The collection_new button should be the nr.1 thing in the window. It's the most important thing in there. Should be bigger than everything else, before everything else, and not 'sticking' to anything else (shouldn't be in a row of buttons).

I mostly agreed with the suggestions above. One hint to the devs. the search button is composed with magnify icon and the search field, I believe only the magnify icon should be okay and field part comes out after the first click like in the graph editor.

The collection_new operator should also be in an RMB menu when you click in the empty space.

I like the above as well.

The 'add selected' RMB menu entry is advanced functionality, shouldn't be on top. The entry before it should be 'Move Selected Here' or similar - because moving objects between collections is basic functionality.

I believe that 'add selected' should be renamed to copy selected and we should have a move selected operator for the sake of clarity, like Duarte suggested above. Yesterday i tested the Blender 2.8 as well i was a bit confused that i was adding the selected object to the selected collection and still have a copy in the other collection.

Collections should be unfolded by default.

I agreed with the above as well, specially when adding a sub-collection.

That there is drag and drop is very good, but works wonky now - needs an icon that appears on cursor, less lag.

The selection is currently divided in 2: There is a selected collection, and there are selected objects. I don't think that's a good idea - it's harder to keep in mind, it's non-standard, and it's harder to predict what will happen on operations like drag and drop, RMB click etc.

Selecting a collection should be the same as selecting all objects in it, IMO (since it's a container). It would also help with identifying what the collection is in the 3d View. You click on collection, all it's objects get selected in the 3d View (and in the outliner).

I believe keeping the old behavior about selection and adding your idea about collection selection is good, so when someone want to select only 1 object in the Outliner is free to do so and by selecting the collection we select all the elements in it.

RMB on object in Collections view should have some collection related entries, for instance 'remove from collection' entry.

Alt or Ctrl + eye icon to hide all but the clicked collection.

I agree with the above and in sub-collection context, toggle a parent icon should toggle the sub-collection as well.

Omg guys - wish I would've seen @Dalai Felinto (dfelinto)'s first two comments here a long time ago... I didn't even see this design task until just now and lost a bunch of time figuring out what's stated plainly here through a tedious process of trial and error lol... oversight on my part :|

Since this appears to still be a WIP, just sharing something that definitely confused me when I was trying to figure out how collections worked / were implemented. Related to @Paweł Łyczkowski (plyczkowski)'s comment:

Blender starts with Outliner in Active Render Layer, with a Default Collection - that's very good. Starting with Master collection would be much more confusing. I would rename Default Collection to Collection 1, Default Collection seems like something baked-in, and it's just a regular collection that can be renamed.

I think it seems odd that the "RenderLayer" does not have a Master Collection linked from the get-go, while the "Viewport" does. Why do we introduce this "Default Collection" for the "RenderLayer" ViewLayer and then every other layer starts with a linked Master Collection? This document here https://code.blender.org/2017/09/view-layers-and-collections/ mentions that all collections are part of the Master but doesn't mention anything about expecting to see a default collection at startup. So when I started adding new collections to the startup file, it automatically nests them in this "Default Collection" and it seems too easy (in my opinion) to mistakenly assume the "Default Collection" is the "Master Collection" referred to elsewhere...

...it automatically nests them in this "Default Collection" and it seems too easy (in my opinion) to mistakenly assume the "Default Collection" is the "Master Collection" referred to elsewhere...

Sorry that part of my comment is wrong - it doesn't automatically "nest" them. Still have the same question, though, about why we need a "Default Collection" at all or why the "RenderLayer" should have a different linked collection initially than any other layer... is there something special about this "RenderLayer" ViewLayer that I've missed here?

@Danrae Pray (spockTheGray) what happens is that at the moment the startup.blend wasn't updated. So you are seeing the old 2.79 default file converted to 2.80, following the same "rules" as any other 2.79 file you may had. This is why we can't link master collection to the "View Layer", since it may require only a few collections to be there, not all of them.

the review and selection options looks good on the opposite side

@Danrae Pray (spockTheGray) what happens is that at the moment the startup.blend wasn't updated. So you are seeing the old 2.79 default file converted to 2.80, following the same "rules" as any other 2.79 file you may had. This is why we can't link master collection to the "View Layer", since it may require only a few collections to be there, not all of them.

Ah ok - thanks for clearing that up! So just to verify, then - the design intent *is* to have "Master Collection" show up in the outliner & linked to the active view layer after loading the startup file (the "Default Collection" will still be there, but nested in the Master)?