[Bf-blender-cvs] [3d2d8a1aab0] master: Fix: Geometry nodes not depending on instanced collections properly

Sebastian Parborg noreply at git.blender.org
Mon Feb 22 20:30:24 CET 2021


Commit: 3d2d8a1aab0f0141a1a55d1cc93de60815c26946
Author: Sebastian Parborg
Date:   Mon Feb 22 20:26:51 2021 +0100
Branches: master
https://developer.blender.org/rB3d2d8a1aab0f0141a1a55d1cc93de60815c26946

Fix: Geometry nodes not depending on instanced collections properly

Geometry nodes were not adding referenced instanced collections as
dependencies to depsgraph.

This would lead to meshes and data not being ready on evaluation in
certain cases.

===================================================================

M	source/blender/modifiers/intern/MOD_nodes.cc

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index 9ec7bdf3b80..fe5a8bc59d4 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -151,11 +151,20 @@ static void find_used_ids_from_settings(const NodesModifierSettings &settings, S
       &ids);
 }
 
+static void add_collection_object_relations_recursive(const ModifierUpdateDepsgraphContext *ctx,
+                                                      Collection &collection);
+
 static void add_object_relation(const ModifierUpdateDepsgraphContext *ctx, Object &object)
 {
   DEG_add_object_relation(ctx->node, &object, DEG_OB_COMP_TRANSFORM, "Nodes Modifier");
   if (&(ID &)object != &ctx->object->id) {
-    if (object.type != OB_EMPTY) {
+    if (object.type == OB_EMPTY) {
+      Collection *collection_instance = object.instance_collection;
+      if (collection_instance != nullptr) {
+        add_collection_object_relations_recursive(ctx, *collection_instance);
+      }
+    }
+    else {
       DEG_add_object_relation(ctx->node, &object, DEG_OB_COMP_GEOMETRY, "Nodes Modifier");
     }
   }



More information about the Bf-blender-cvs mailing list