Blender Git Commits

Blender Git "temp-unified-collections" branch commits.

May 17, 2018, 18:09 (GMT)
Merge branch 'blender2.8' into temp-unified-collections
May 17, 2018, 13:05 (GMT)
Cleanup: move unneeded struct out of DNA.

The real reason is that there is a conflict between Carbon header defining
a "Collection" struct, and this works around it.
May 16, 2018, 10:25 (GMT)
Fixes for collections unification:

* Fix various crashes due to bug in latest versioning code
* Fix outliner restrict button column clipping
May 16, 2018, 07:44 (GMT)
Remove collections module (caused UI to fail entirely)
May 16, 2018, 07:37 (GMT)
Cleanup: remove ignored const
May 16, 2018, 07:33 (GMT)
Merge branch 'blender2.8' into temp-unified-collections
May 15, 2018, 17:32 (GMT)
Collections: more work on unification with groups

* Better backwards compatibility for Hero files saved in previous 2.8 files,
particularly preserving per view layer visibility.

* Various bugfixes.
May 15, 2018, 17:30 (GMT)
Merge branch 'blender2.8' into temp-unified-collections
May 14, 2018, 20:21 (GMT)
Collections: more work on unification with groups

* Removes the special exceptions for group reference counting. Unlinked
collections now get a faker user. The weak point here is that unlinked
collections retain their objects even if they are removed from the scene.
For some cases that's good, for tag-like collections that's not ideal.
We can investigate how that make those cases work better later.

* Depsgraph view layer evaluation was fixed to work with copy-on-write, and
the code was simplified in the process.

* Various bugfixes related to static overrides, linking and outliner.
May 14, 2018, 20:05 (GMT)
Merge branch 'blender2.8' into temp-unified-collections
May 11, 2018, 15:01 (GMT)
Collections and groups unification

NOTE that this branch still has known bugs and TODO comments, it's not
ready to merge or save files with. I'm publishing it now for review of
the overall design.

OVERVIEW

* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is used
for each. For many workflows one view layer can be used, these are more of
an advanced feature now.

OUTLINER

* The related outliner categories were reorganized to be:
** Collections: display collections and their objects
** Objects: display all objects in the scene with parenting hierarchy
** View Layer: edit which collections are used in the view layer
* In the collections category we can switch between showing collections in
the scene, unlinked collections not linked in any scene, and all in the file.
* The outliner right click menus for collections and objects were reorganized.

GROUP OPERATORS

* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties, this needs to be updated
still.

LINKING AND OVERRIDES

* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather tedious and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.

PERFORMANCE

* I tried to make performance not worse than before and improve it in some
cases. There are still quite some quadratic time operations in object
add / delete which would require much deeper changes to fix.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().

TRICKY IMPLEMENTATION BITS

* I didn't yet rename all files to preserve git history a bit better, probably
this is best done as a second commit after merging.
* Renaming collections to groups involved some DNA/RNA trickery to preserve
backwards compatibility, in the DNA the struct is still "Group".

* Version patching of 2.7 skips all the 2.8 collection patching and immediately
convertions to the new data structures.
* Version patching tries to keep 2.8 files works more or less, but some data is
lost. Keeping it all would be quite complicated. This needs more testing,
especially on Hero files.

* Collections are not reference counted just like groups weren't, they must be
explicitly deleted by the user.
* Object ownership is similar to what it was before, in that collection used
in a scene increment the object user counts but collections not used in any
scene do not.
* This involves some tagging each collection as being in a scene or not and
keeping that synchronized on changes.

* View layers each have a tree of layer collections which mirror the scene
collection tree (including linked collections). This require relatively
complicated synchronization as collections can change in linked files.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021