Page MenuHome

Outliner visibility unification and per-viewlayer collection visibility
Needs ReviewPublic

Authored by Dalai Felinto (dfelinto) on Fri, Nov 30, 5:42 AM.

Details

Summary
  • [re-commit] Per view-layer collection visibility
  • [re-commit] Fix/workaround issues in pose and edit mode
  • Outliner: Gray out collections only when they are invisible
  • Outliner: Implement 3 levels of viewport visibility
Now collection and objects can be either:
* Hidden for all the view layers.
* Hidden for a view layer but not necessarily for all others.
* Visible for a view layer but not necessarily for all others.

Regarding icons: Whatever we decide to use for the "Hidden for all view
layers" needs to be a toggle-like icon. Because when viewing "Scenes"
instead of "View Layer" in the outliner we should be able to edit the
collection "Hidden for all the view layers" as an on/off option.

See T57857 for discussion.

Diff Detail

Repository
rB Blender
Branch
temp-outliner-visibility
Build Status
Buildable 2618
Build 2618: arc lint + arc unit

Event Timeline

And just for the records, up to 937136251aff9602be3d4b7b056edf43f6233328 could go into 2.8 with no problems. It is the equivalent of the "bring per-view layer collection visibility" with keeping eyes as they were.

I know I'm not technically a reviewer for this patch, but I tested it anyway.

This patch is a definite improvement I think. The properly working visibility toggles for collections is a huge plus, and the simplification of the Outliner toggles is nicer and more straight forward.

This should make the Outliner and collections vastly easier to use.

This revision is now accepted and ready to land.Fri, Dec 7, 4:10 PM
  • Ctrl+Click was used to isolate objects, we should keep that functionality.
  • Ideally there should also still be a way to say, "hide the objects in this collection everywhere". Right click > select all objects > H still works. But artists were using this a lot to make sure some objects are hidden, even if they are in multiple collections.

I'm not sure what the right shortcuts are for these features, or if the latter needs one at

  • We need a different icon than the screen one I think.
  • "Ctrl to hide for all viewports": would use "disable" instead of "hide" there?
  • Drag toggle to quickly drag and toggle multiple icons no longer works.
  • Toggling visibility on collections used to be fast, now it's slow? Is this doing a depsgraph update?
Brecht Van Lommel (brecht) requested changes to this revision.Fri, Dec 7, 6:23 PM
This revision now requires changes to proceed.Fri, Dec 7, 6:23 PM
  • Ctrl+Click was used to isolate objects, we should keep that functionality.
  • Ideally there should also still be a way to say, "hide the objects in this collection everywhere". Right click > select all objects > H still works. But artists were using this a lot to make sure some objects are hidden, even if they are in multiple collections.

Yes, I also talked to Dalai about this. There could indeed be an operator available in the right-click menu to do that.

  • We need a different icon than the screen one I think.

Yes, we could use the eye but with a strikethrough perhaps?

  • "Ctrl to hide for all viewports": would use "disable" instead of "hide" there?

Yes I think so too.

  • Drag toggle to quickly drag and toggle multiple icons no longer works.

Good catch. That is a nice feature to make sure keeps working.

Merge with latest blender2.8, no functional change

Toggling visibility on collections used to be fast, now it's slow? Is this doing a depsgraph update?

That's something I talked to @Sergey Sharybin (sergey). His take was that it would be "strange" to have disable collection and objects in the depsgraph.

So yes I'm tagging relations to update. I suppose we could treat those disabled collection/objects as some temporary state, similar to local view, where we still want them to affect the rest of the scene (e.g., collision bodies for simulation), yet are simply not drawn in the viewport.

@Dalai Felinto (dfelinto) I finally tried it out myself and I think it's great so far and I agree with all the feedback of @William Reynish (billreynish) and @Brecht Van Lommel (brecht) I do agree that the isolating with Ctrl clicking is still very useful and hiding all the components like it currently works should also be easily accessible to the user.
Perhaps we can assign shortcuts this way:

Ctrl + Click = Isolate (Hide only) -> Hide everything except the object when used on the an object eye icon OR hide everything except the the contents of the collection when used on a collection eye icon, The contents of the collection keep their current visibility settings. The item with the clicked eye icon always becomes shown.

Alt + Click = Disable Visibility

Shift + Click = Hide/Show item + all contents.

Holding Shift could then also be combined with the other two to affect the contents as well:

Ctrl + Shift + Click = Isolate (Show & Hide) = Same as Ctrl + Click except that all contents of a clicked collection will be set to be shown as well.

Alt + Shift + Click = Disable Visibility + All contents

These functions and combinations could also be accessed in the right click menu. This would also explain the shortcuts for them.
Maybe the combinations with Shift are a bit too much since they could make it too complicated but I can see it being useful, especially with the 2 kinds of isolating.

That's something I talked to @Sergey Sharybin (sergey). His take was that it would be "strange" to have disable collection and objects in the depsgraph.

So yes I'm tagging relations to update. I suppose we could treat those disabled collection/objects as some temporary state, similar to local view, where we still want them to affect the rest of the scene (e.g., collision bodies for simulation), yet are simply not drawn in the viewport.

I think that is what we should do, for consistency with objects which have the same hide/disable distinction.

Ideally the depsgraph would not be so slow at doing relation updates, but for usability now it's nice to be able to quickly toggle collection hiding on more complex files.