**I need a bit of time to outline the issue first:**
At the Blender Animation Studio we have been working with the outliner and visibility settings of Blender 2.8 for almost a year now ... and almost every person ended up using those features in a completely different way.
Show/Hide, Disable for Viewport, Disable for Render, Local View, Excluding and View Layers.
Some are never even used, most are not even understood to this day.
There should be a clear understanding on how these toggles should be used and for which context but sometimes not even the tooltips or tasks on how to improve these features are completely coherent.
In 2.7x the visibility settings for the viewport were rather simple:
- You can hide/show objects
- You can select objects and put them into Local View to isolate them, and afterwards revert the local view. (Just a temporary visibility toggle when needed)
- You can move objects to layers and toggle each layer on/off
There is a somewhat easy to understand hierarchy to it: **Show/Hide < Local View < Layers**
Render visibility was similar: **Disable for Rendering < Layers < RenderLayers (Excluding Layers from rendering)**
Of course it's not quite as simple as this and there there were some problems with this system when linking from other files. Plus this could not be compatible with the new Outliner and Collections of 2.8.
But it was easier to understand and faster to use.
In the new visibility system there have been changes that make sense but make everything much more complex:
- Show/Hide is no longer a constant throughout Layers and the file and instead functions per View Layer. Instead there has been the additon of the Screen Icon (Disable Visiblity for Viewport) which affects all View Layers and when linked to other files.
- Layers & Render Layers have been replaced by Collections and View Layers and are toggled by excluding.
- Excluding Collections is affecting objects from being calculated and visible both in rendering and in the viewport.
- Local View does affect what is shown for the viewport but not rendering (Not sure if this is a bug or intentional)
So the interface currently tells us something like this:
Viewport: **Show/Hide < Local View < Disable for Viewport < View Layers (+ Excluding Collections)**
Render: **Disable for Render < View Layers (+ Excluding Collections)**
This is what the hierarchy looks like because when you disable viewport visibility the eye icon is gone (or in recent changes is being replaced by the screen icon). When a collection is excluded,This on some level mixes visibility for the viewport and rendering since View Layers and excluding affect both. allThis also makes it hard to make a hierarchy of visibility icoptions disappear from thesince they all affected objects/collections each other in different ways.
But the real hierarchy is more like this:
Viewport: **Show/Hide (per View Layer) < Local View < Excluding Collections (per View Layer) < Disable for Viewport (all View Layers)**There have been some changes recently (D4011) to combat the issue by making the Outliner simpler on the surface with contextual Shift/Ctrl/Alt button presses to get additional visibility functionality. This way the only thing you would need to use is the eye icon. Everything else is extra functionality if you need it.
Render: **Excluding Collections (per View Layer) < Disable for Render (all View Layers)**
There have been some changes recently (D4011) to combat the issue by making the Outliner simpler on the surface with contextual Shift/Ctrl/Alt button presses to get additional visibility functionality.
But this has actually caused the opoppositee effect. The visibility toggles have become more confusing and less usable than before.
One reason I believe is that instead of making the hierarchy more clear, it hidesvisibility options more clear and obscures it even more.simple, So instead of getting a false imageit hides and obscures the options you get a very incomplete oneneed to use even more.
The other reason (and this is my main point) is because in terms usability for the viewport visibility **there is the need of 2 distinct visibility toggles**;
- A more free, easily changeable, easily revertible, toggle to quickly change the visibility of individual objects (and preferably also all objects within collections)
- A more rigid, more manageable toggle that won't change or revert unless you specifically and knowingly tell it to.
in 2.7x these were the eye toggle (Show/Hide) and the Layers.
In 2.8 the eye icon was generally used for the same purpose and behaved in a comfortable and smart way (until recently):
- When hiding everything withing a collection it would hide the collection itself as well.
- When showing at least one item in a collection it will also show the collection.
- When showing/hiding a collection it will show/hide all contents.
- When pressing Alt + H it would show every collection and object alike.
The issue is mostly that there wasis still no clear counterpart to the second visibility toggle that I mentioned that functionsis more manageable, similar to the Layers.
Some were using the screen icon (disable for viewport) since it was the only other column that was clearly shown in the outliner interface that from a visual feedback seemed to be higher in the hierarchy than the eye icon.
Others who knew of the Exclusion feature (pressing E/Alt + E) were using this instead, especially when they were often linking between files.
Lighting & rendering artists were not using exclusion as much for this though since it was usually used for the render setup. They are instead more relying on the eye icon, not touching the Alt + H shortcut since it would revert the visibility setup.
Animators would never even touch the eye icon since it does not improve the performance. To make sure that hidden objects and collections are not being calculated they were only using the screen icon. Exclusion was always seen as an obscure setting for rendering and was never even touched and definitely not understood.
So there were definitely some people at a disadvantage since they lost the divide between quick & easy and the rigid & manageable visibility settings.
And with the changes of D4011 the users who used the screen icon were left confused with a less usable interface and the users who were relying on the eye icon to be flexible and smart now have to do a lot more managing and using contextual shortcuts in the outliner than what they need.
**Here's my proposal:**
I think it's important that we make thea visibility hierarchy and all the different visibility toggles as clear as possible in the Outliner.
Here' is a quick ugly mockup I made. I'm not married to the design :D
This would add a column to the left for excluding buttons. I can also see it being placed on the very right next to the camera icon to keep them close and see the relation between them.
If theIf an exclude button is disabled (excluded state) all other icons are greyed out.
When a screen icon is toggled off all icons to the left are greyed out and the same for the eye. So it conveyes a hierarchy.
The camera icon is an exception because it doeit's not affect the state of the icons to its left but it is affected by the exclusiont used for viewport visibility.
This greying out makes it clear that something is off while still being able to change the state of the individual objects/collections when you click on them.
A problem is that currently greyed out icons mean that something is linked and inaccesablesible. Maybe linked icons could be slightly red instead.
If we want to keep the eye & screen icons merged we could also go for something like this:
But I think there could be a better way of cleaning up unnecessary columns though.
There are already filtering options so if the user is not going to change render visibility & disabling for viewport, they could filter out these options and clear up some space in the outliner. Currently there is only the option to "Show Restriction Columns" which hides them all.
Another change would be to make the eye icon (Show/Hide) act like it did before the changes of D4011.
This way we keep the fast, smart & flexible nature of that way of toggling visibility instead of it being slower to use than it should be.
The last change would be the reason why I put the exclusion icon on the left with numbers in them.
So far we were able to hide the top most collections with the number keys based on how they are ordered in the outliner. This is similar to the old way of toggling layers on/off. The issue is that it makes the eye icon be 2 things at once.
To really bring that functionality back of toggling layers in 2.7x, this should be tied to excluding instead it would also make sure that those toggled off collections are not calculated, which doesn't happen with the eye icon..
Collections can be organised and managed in the outliner or by using the M key in the 3D viewport and then they can be toggled with the number keys or by clicking the exclusion buttons on the side of the outliner.
The user can also click & drag over the exclusion buttons and the visual feedback can end up similar to the layer interface on the 3D viewport in 2.7x (But bigger and as a long list instead of a 20 button grid of course).
With the filtering options in the outliner the user can disable most of the unnecessary information and icons. They can keep the names & order of the collections as well as the exclusion & eye button columns. This can be kept slim and easy to access on the side.
I think overall these usability issues needs to be tackled first before really going into other implementations like T57857 & T61327.
Overall this discussion is closely tied to T58969 as well.
If I'm talking nonsense and I just wasted my time writing this all down let me know but maybe this left some readers thinking of how to improve the visibility system further :)