View layer and collection editing - Design Task
Open, NormalPublic

Description

Introduction

There are a few actions that we need to cover for collection editing and daily work:

  1. Hide/unhide collections
  2. Manage F12 view layer without the hassle of rendering while doing so
  3. Add/remove objects
  4. Add/remove overrides
  5. Edit overrides
  6. Add/remove collections
  7. Enable/disable overrides

Collection editing design

Reinforce a separation between organizing the scene, and the view layer

Organizing the scene includes:

  • Move objects from/to different collections
  • Create and delete collections
  • Change collection hierarchy

Organizing the view layer includes:

  • Link collections
  • Add/remove overrides
  • Collection visibility

To change the scene organization we can use:

  • Shortcuts (change objects collections).
  • Outliner when seeing the scene tree.
  • Properties editor
    • Object: collections

To change the view layer we can use:

  • Shortcuts (hide/show collections)
  • Viewport header (compact hide/show collections and overrides)
  • Viewport properties (hide/show collections and overrides, edit overrides)
  • Properties editor
    • Scene: hide/show/link render (F12) view layer, add/remove/hide/edit overrides
    • Workspace: add/remove/edit overrides, hide/show/selectability/link view layer
    • Collection: edit overrides

To change the groups we have two ways:

  • Properties editor (minimized layer/overrides visibility control in the group panel for objects)
  • Outliner (visibility, hierarchy and add/remove objects and collections for groups)

Scene organization

Following that idea, let's dig further into scene organization.

Outliner

  1. Outliner "Collections"
    1. Rename current outliner display mode from Master Collection Tree to Collections
  2. Auto-incremental collection names
    1. No more "Default Collection" or "New Collection"
    2. By default when adding a collection we will have a suffix based on the collection "index" in relation to its parent, and a prefix based on the parent collection name.
      1. For collections nested under the Master Collection we use "Collection 1", "Collection 2", ..., if one rename the last collection from "Collection 5" to "House" and add a new collection, the new collection will be "Collection 6"
      2. For collection nested under any other collection we use the parent collection name as prefix, so by default when adding collections to a collection named "House" we get "House 1", "House 2",
  3. Support non-sibling collections to share the same name
    1. This way we can have a Rig collection under "Boris", and "Agent" collections.
    2. We will need to expose the full "path" (characters ➜ Boris ➜ Rig) for tooltips or UI.
  4. Master Collection always expanded
    1. And really T53340 (collections are always collapsed) should be fixed yesterday.
  5. Deleting a collection moves its objects to Master Collection
    1. This reinforces the mental model of all the objects are in the Master Collection as presented in the View Layers and Collections document.
    2. We can still add an option with a shift modifier to delete a collection and not move objects to master collection
  6. No operator buttons there (e.g., add / remove collection)
  7. Menu with these operators to control collection and objects
    1. X: delete collection (Delete collection and move its objects to the master collection)
    2. C: add new nested collection
    3. ?: add selected objects
    4. ?: remove selected objects
  8. Re-order and moving objects and collections working via drag & drop

Viewport

Move to collection: This replaces the old "move to layer" operator. This mockup is literally using menus for this. The final solution needs to let users know if a collection already contains the object (or if a nested collection from it has it). As well as supporting clicking and shift+clicking without closing the menus.

Object Properties

Collections: Similar to how we handle groups, we list all the collections (of the current scene) an object is linked to. That also allows for quickly remove the object from a collection. In this case, when clicking "Add to Collection" we don't use the same popup as the "Move to Collection". Instead, we use the search template.

Note: This is no longer part of the design. It will be implemented as an addon for now. But this should be solved by the outliner, via a bottom-up mode. Also this would be potentially slow on playback.

Organizing View Layers

View layers organization happens in a few places. They all share some elements in common. This example you see the workspace view layer editor which is the most complete one.

  • For the render panel, we don't need to expose selectability.
  • For the viewport properties area, we won't have this panel - even if initially we planned to have. The idea is to reduce redundancy. So we give users one good way of doing something, and stick to it.

Mockups

  • P573 Object Properties.
  • P574 Viewport.

Details

Type
Design

Don’t see anything to add here off hands, all proposed tools look reasonable to me.

Really like the direction this is taking. :) A few thoughts from a user point of view:

  1. What purpose does the Master Collection serve? I understand it currently acts as "scene root" of sorts where all objects fall in by default, but it just seems like a redundant and needless step. Why not just make objects belong in the "Current Scene" instead by default, no explicit collection needed? Basically from the UI point of view only thing that would changed is that the master collection wouldn't have an explicit name, it would just be represented by the current scene name instead. It seems less confusing to new users, one less thing to learn/manage, and the tree would potentially be represented with one step less like just:
    • Scene Name
      • Collection 1
      • Collection 2
      • Collection 3
  2. The move to layer menu might either need checkboxes (if feasible) or independently clickable expand arrows to the right, or both; so one can either click the arrow to expand the child collections, or click the name/checkbox to actually move/copy selected objects to the clicked collection. Checkboxes+Arrows might be more versatile since it would also allow adding one object to multiple collections at once, at the expense of having to "click away" after finishing, to close the menu.
  3. What does Ctrl+X don't move objects to master collection do? Does it remove objects from the scene too? Does it move them to a parent Collection? Will it leave them in some sort of limbo? Might just need some rewording so it is clear what it does, especially if it does delete objects.
  4. For collection management we might need some sort of operator to match the selected objects collections to the active object ones, useful for complex scene structures. Lets say the active object already belongs to a bunch of randomly nested collections like "Collection 2", "Set", "Set 3" and "Furniture 5", and we want to bring all selected objects to these same collections. We could have something akin to the current Ctrl + L Make Links menu with an entry to match collections.
  5. I understand this can probably be easily implemented by addons later, but are you considering having some sort of "Active Collection Set" instead of a single active collection? This would work so that any newly created objects at a certain moment would be added to a bunch of predefined collections by default instead of just one. Or maybe have this read from the active scene object automatically?
  6. Similarly having some sort of "Saved Collection States" could be very useful. Say you want to work on your outdoors scene props. You may want to turn off any "Characters" and "Interior Props" collections, make any "Environment" and "Buildings" layers visible but unselectable, and turn on all and make selectable all your "Outdoors Props" collections. Toggling this manually every time may be cumbersome and time consuming, so having the possibility to save a current state to a certain list (like "Outdoors Props" or "Posing") would be very useful in the long run. Again this probably falls into the category of things that could be easily implemented by addons later.

@Duarte Farrajota Ramos (duarteframos): Thanks for your feedback.

  1. What purpose does the Master Collection serve?

It allows for the user to link all the scene objects at once into a view layer. You won't have this if we "hide" the master collection from the users.

  1. The move to layer menu (...)

Agree with that. And on top of this we probably need to add a "Header" to the nested panels, to be more clear what we are exploring. That said, there is a chance that the object properties panel is enough. I think that an operator like this that gives you a full view of the scene tree in relation to the object is powerful on its own way. But whether or not we should prioritize its implementation is a the matter at hand.

  1. What does X: delete collection (Ctrl+X don't move objects to master collection)

Technically this would be the operator:
Label: "Delete Collection", Shortcut: X, Tooltip: "Delete collection and move its objects will be moved to the master collection"

However if we have this exposed in the UI as a button, we can also implement the "ctrl" modifier to remove the objects together with the collection.

  1. (...) Match selected objects collection to active object

Sure, I will add this to the document.

  1. (...) Active Collection Set

That won't happen. Blender has the concept of active everyone, and we should stick to this. What we could have is the concept of "Selected collections" if we want the behavior you describe. Or even a option in the collection the marks it as the collection(s) where new objects will automatically be added. I would like examples of production-like scenarios before contemplating this alternative though.

  1. Similarly having some sort of "Saved Collection States" could be very useful (...)

What you are asking is basically what we support by having different "view layers" with the same collections. Are you familiar with the "view layers and collections" design doc?

I see thanks for the clarifications agree with it all.

@Duarte Farrajota Ramos (duarteframos): What you are asking is basically what we support by having different "view layers" with the same collections. Are you familiar with the "view layers and collections" design doc?

I've been reading again with more, must have I missed that part. I mistakenly interpreted View Layers simply as a spiritual successor of current Render layers exclusively for rendering purposes alone, was not aware of its full capabilities. They seem to cover that workflow perfectly.

Thanks for the feedback and keep up the excellent work :)