Layer evaluation --set-advanced-collection-evaluation

Authored by Dalai Felinto (dfelinto) on Oct 11 2017, 9:22 PM.



Option to let users try two options of layer evaluation.
This is temporary and will not be in final Blender 2.8.

(0) Small background info:
0.0 Overrides are more advanced features that require an evaluation order;
0.1 Whatever behavior we decide for visibility, will be mimiced by selectability and eventually renderability;
0.2 A collection is only visible if its parent is visible as well;

Now we have two options:

(1) If object is in any visible collection, object is visible

This pretty much copy the old 20-bit visibility behaviour. This way as long as the object is in a single visible collection the object is visible. It doesn't matter if the object is in a few other invisible collections at the bottom of the stack.

(2) Object visibility is the same as the last evaluated collection
containing this object

This makes visibility order dependent. That way you can create collections to hide specific objects (e.g., armatures), link them to the view layer, leave them invisible and at the bottom of the stack, and toggle their "enability".

This also is inspired by the override evaluation system. Although a boolean override will behave different than visibility because of the 0.2 rule above.

The option (1) is what you get by default now. It's also what we had before implementing the collection enable option.

The option (2) is the previous behaviour, which is now only available via --set-advanced-collection-evaluation

Diff Detail

rB Blender
Build Status
Buildable 940
Build 940: arc lint + arc unit

My gut reaction is to go with option 1, but I can see how option 2 would make more consistent sense so far as overrides go. If I had to choose I'd go option 1 right now.

Updated the patch since changes in 2.8: the basic visibility scenario is now the default in 2.8