blender/tests/python
Brecht Van Lommel 17bd5c9d4b Collections and groups unification
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 excluded
  for each. For many workflows one view layer can be used, these are more of an
  advanced feature now.

OUTLINER

* The outliner now has a "View Layer" display mode instead of "Collections",
  which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
  These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
  can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
  text gives different results, we'll unify this later.

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 unreliable 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

* We tried to make performance not worse than before and improve it in some
  cases. The main thing that's still a bit slower is multiple scenes, we have to
  change the layer syncing to only updated affected scenes.
* 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().

VERSIONING

* Compatibility with 2.7 files should be improved due to the new visibility
  controls. Of course users may not want to set up their scenes differently
  now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
  files. There's a few things which are know to be not quite compatible, like
  nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
  #ifdef so it can be removed at the end of the release cycle.

KNOWN ISSUES

* 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, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
  be done later, we'll have to see how important this is as all objects within
  the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.

Differential Revision: https://developer.blender.org/D3383

https://code.blender.org/2018/05/collections-and-groups/
2018-05-18 13:34:24 +02:00
..
collada Disable Feature Collada: Tests do not work on unix 2018-04-16 09:56:59 +02:00
modules FFmpeg: Add regression tests 2018-03-09 10:33:20 +01:00
view_layer Layer unittest: Disable the override tests 2018-05-16 23:13:28 +02:00
alembic_tests.py Python tests: Split re-usable test related functionality to a module 2018-03-01 17:44:35 +01:00
batch_import.py Tests: fix incorrect check for hidden dir 2017-08-23 15:36:39 +10:00
bl_alembic_import_test.py Fixing alembic unittest after render layer purge 2017-11-27 14:52:21 -02:00
bl_keymap_completeness.py Cleanup: indentation, long lines 2017-06-12 13:38:21 +10:00
bl_load_addons.py addon_utils default mismatch /w enable/disable 2015-06-14 05:14:43 +10:00
bl_load_py_modules.py Tests: fix incorrect check for hidden dir 2017-08-23 15:36:39 +10:00
bl_mesh_modifiers.py 3D View: add initial view.shading and view.overlay in RNA. 2018-04-29 09:55:47 +02:00
bl_mesh_validate.py
bl_pyapi_bpy_path.py Add test scripts to ctest & rename 2015-09-24 20:52:58 +10:00
bl_pyapi_bpy_utils_units.py Tweak multi-units tests to match new precision handling in conversion from raw value to prety-printed one. 2017-08-01 16:43:40 +02:00
bl_pyapi_idprop_datablock.py Datablock ID Properties 2017-04-13 12:33:05 +03:00
bl_pyapi_idprop.py PyAPI: Fast buffer access to id property arrays 2017-04-10 21:12:02 +10:00
bl_pyapi_mathutils.py Tests: Compare vectors with epsilon 2017-04-07 18:28:38 +02:00
bl_rna_defaults.py Tests: improve RNA default reporting 2016-02-29 11:55:44 +11:00
bl_rna_manual_reference.py rename wiki -> manual 2015-06-08 11:34:07 +10:00
bl_rst_completeness.py Removing Blender Game Engine from Blender 2.8 2018-04-17 17:51:28 +02:00
bl_run_operators.py Tests: fix incorrect check for hidden dir 2017-08-23 15:36:39 +10:00
bl_test.py
CMakeLists.txt Collections and groups unification 2018-05-18 13:34:24 +02:00
cycles_render_tests.py Tests: split off render report test code from Cycles tests. 2018-02-16 12:51:49 +01:00
ffmpeg_tests.py FFmpeg: Add regression tests 2018-03-09 10:33:20 +01:00
opengl_draw_tests.py Tests: add OpenGL UI drawing tests. 2018-02-16 12:51:49 +01:00
pep8.py Tests: replace os.system w/ subprocess.call 2018-01-26 12:23:15 +11:00
rna_array.py Cleanup: use static sets where possible 2014-09-18 17:45:31 +10:00
rna_info_dump.py Cleanup: indentation, long lines 2017-06-12 13:38:21 +10:00
rst_to_doctree_mini.py Cleanup: pep8 2016-02-01 00:47:10 +11:00