[Bf-blender-cvs] [42aa1b49847] temp-modifiers-instancing: fix nodes

Jacques Lucke noreply at git.blender.org
Wed Nov 11 16:09:22 CET 2020


Commit: 42aa1b498474abf536c0677617e742e4c1f9c238
Author: Jacques Lucke
Date:   Wed Nov 11 14:10:20 2020 +0100
Branches: temp-modifiers-instancing
https://developer.blender.org/rB42aa1b498474abf536c0677617e742e4c1f9c238

fix nodes

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

M	source/blender/nodes/geometry/nodes/node_geo_object_info.cc
M	source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_object_info.cc b/source/blender/nodes/geometry/nodes/node_geo_object_info.cc
index 80825a66a07..3ee6ae2453a 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_object_info.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_object_info.cc
@@ -16,6 +16,7 @@
 
 #include "node_geometry_util.hh"
 
+#include "BKE_mesh.h"
 #include "BKE_mesh_wrapper.h"
 #include "BKE_modifier.h"
 
@@ -53,7 +54,9 @@ static void geo_object_info_exec(bNode *UNUSED(node), GeoNodeInputs inputs, GeoN
       Mesh *mesh = BKE_modifier_get_evaluated_mesh_from_evaluated_object(object, false);
       if (mesh != nullptr) {
         BKE_mesh_wrapper_ensure_mdata(mesh);
-        geometry_set = GeometrySet::create_with_mesh(mesh, GeometryOwnershipType::ReadOnly);
+        /* Make a copy because the life time of the other mesh might be shorter. */
+        Mesh *copied_mesh = BKE_mesh_copy_for_eval(mesh, false);
+        geometry_set = GeometrySet::create_with_mesh(copied_mesh);
       }
     }
   }
diff --git a/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc b/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc
index 08f1b97f968..b1821736464 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc
@@ -145,6 +145,10 @@ static void geo_point_distribute_exec(bNode *UNUSED(node),
 
   PointCloud *pointcloud = BKE_pointcloud_new_nomain(points.size());
   memcpy(pointcloud->co, points.data(), sizeof(float3) * points.size());
+  for (const int i : points.index_range()) {
+    *(float3 *)(pointcloud->co + i) = points[i];
+    pointcloud->radius[i] = 0.05f;
+  }
 
   make_geometry_set_mutable(geometry_set);
   geometry_set->replace_mesh(nullptr);



More information about the Bf-blender-cvs mailing list