diff options
author | Sergey Sharybin <sergey@blender.org> | 2022-04-12 13:36:48 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2022-04-14 15:57:49 +0300 |
commit | 31b2b84b3c788bfae2ced046d05c39c56f8056f0 (patch) | |
tree | ba64ddfd9274e7a2ed28d85f9cb4b47b332b0738 /source/blender/depsgraph/intern/builder/deg_builder_relations.h | |
parent | 1440074cac0a0e2c659539c241947409c3bbdb16 (diff) |
Fix T97262: Crash with specific view layer setup
Originally was noticed when using a linked background scene and a scene
camera from another (local) scene.
The root issue was that relation from view layer to object's base flags
evaluation was using wrong view layer. This is because the relation was
created between object and currently built view layer, and it only was
happening once (since the object-level relations are only built once).
Depending on order in which `build_object` was called it was possible
that relation from a wrong view layer was used.
Now the code is better split to indicate which parts of object relations
are built when object comes from a base in the view layer, and which ones
are built on indirect linking of object to the dependency graph.
This patch makes relations correct in the cases when the same object is
used as a base in both active and set scenes. But, the operation which
handles object-level flags might not behave correctly as there is no
known design of what is the proper thing to do in this case. Making a
clear design and implementation of case when object is shared between
active and set scene is outside of the scope of this patch.
Differential Revision: https://developer.blender.org/D14626
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_relations.h')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.h b/source/blender/depsgraph/intern/builder/deg_builder_relations.h index e1312c68cea..1ccecc9a3f2 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h @@ -200,7 +200,8 @@ class DepsgraphRelationBuilder : public DepsgraphBuilder { Object *object, Collection *collection); virtual void build_object(Object *object); - virtual void build_object_from_layer_relations(Object *object); + virtual void build_object_from_view_layer_base(Object *object); + virtual void build_object_layer_component_relations(Object *object); virtual void build_object_data(Object *object); virtual void build_object_data_camera(Object *object); virtual void build_object_data_geometry(Object *object); |