**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, by some users they 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 if you decide to go deeper 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 2.8 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.
This on some level mixes visibility for the viewport and rendering since View Layers and excluding affect both. The difference between toggling visibility per view layer and toggling visibility throughout the file makes it hard to make a hierarchy of visibility options since they all affect each other in different ways.
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 want to dig deeper.
But this has actually caused the opposite effect. The visibility toggles have become more confusing and less usable than before.
One reason I believe is that instead of making the visibility options more clear and simple, it hides and obscures the options you need 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.
- 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.
The issue is mostly that there is still no clear counterpart to the second visibility toggle that is 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 and because it didn't change when pressing Alt + H.
Others who knew of the Exclusion feature (pressing E/Alt + E) were using this instead, especially when they were often linking between files, since the screen icon can cause problems with that..
Lighting & rendering artists were not using exclusion as much for the viewport 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 that much 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 a 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 an exclude button is disabled (excluded state) all other icons are greyed out.
When a screen icon is toggled off then the eye and arrow are greyed out and when the eye is toggled off then the arrow is greyed out. So it conveyes a hierarchy.
The camera icon is an exception because it's not 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 inaccessible. 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.
There are already filtering options so if the user is not going to change the camera or screen icons, 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..
The user can also click & drag over the exclusion buttons and the visual feedback can end up similar to the old 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 could 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 :)
I don't think my proposal would fix the issue entirely but maybe someone knows a better way or can suggest some different ideas on how to make the visibility options more understandable and usable.