[Bf-blender-cvs] [98223022e62] geometry-nodes-level-set-nodes: Various small fixes and cleanups

Hans Goudey noreply at git.blender.org
Sun Sep 5 23:09:12 CEST 2021


Commit: 98223022e62077f329ac63346a8b4797cd216f7c
Author: Hans Goudey
Date:   Sun Sep 5 16:09:04 2021 -0500
Branches: geometry-nodes-level-set-nodes
https://developer.blender.org/rB98223022e62077f329ac63346a8b4797cd216f7c

Various small fixes and cleanups

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

M	source/blender/nodes/geometry/nodes/node_geo_level_set_boolean.cc
M	source/blender/nodes/geometry/nodes/node_geo_level_set_primitive_platonic.cc
M	source/blender/nodes/geometry/nodes/node_geo_level_set_to_mask.cc
M	source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc
M	source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_level_set_boolean.cc b/source/blender/nodes/geometry/nodes/node_geo_level_set_boolean.cc
index 910722be4bd..29797e3bce7 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_level_set_boolean.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_level_set_boolean.cc
@@ -29,25 +29,14 @@
 
 #include "node_geometry_util.hh"
 
-static bNodeSocketTemplate geo_node_level_set_boolean_in[] = {
-    {SOCK_GEOMETRY, N_("Level Set 1")},
-    {SOCK_GEOMETRY,
-     N_("Level Set 2"),
-     0.0f,
-     0.0f,
-     0.0f,
-     0.0f,
-     0.0f,
-     0.0f,
-     PROP_NONE,
-     SOCK_MULTI_INPUT},
-    {-1, ""},
-};
-
-static bNodeSocketTemplate geo_node_level_set_boolean_out[] = {
-    {SOCK_GEOMETRY, N_("Level Set")},
-    {-1, ""},
-};
+namespace blender::nodes {
+
+static void geo_node_level_set_boolean_declare(NodeDeclarationBuilder &b)
+{
+  b.add_input<decl::Geometry>("Level Set 1");
+  b.add_input<decl::Geometry>("Level Set 2");
+  b.add_output<decl::Geometry>("Level Set");
+}
 
 static void geo_node_level_set_boolean_layout(uiLayout *layout,
                                               bContext *UNUSED(C),
@@ -64,8 +53,6 @@ static void geo_node_level_set_boolean_init(bNodeTree *UNUSED(ntree), bNode *nod
   node->storage = data;
 }
 
-namespace blender::nodes {
-
 #ifdef WITH_OPENVDB
 
 static void level_set_boolean(Volume &volume_a,
@@ -115,7 +102,10 @@ static void level_set_boolean(Volume &volume_a,
       GridType &grid_b_resampled = static_cast<GridType &>(*grid_b_resampled_base);
       grid_b_resampled.setTransform(grid_base_a->constTransform().copy());
 
+      /* TODO: COnsider using doResampleToMatch in some cases, which doesn't handle scaling or
+       * non-affine transformations but should be faster. */
       openvdb::tools::resampleToMatch<openvdb::tools::BoxSampler>(grid_b, grid_b_resampled);
+
       openvdb::tools::pruneLevelSet(grid_b_resampled.tree());
 
       switch (operation) {
@@ -187,15 +177,14 @@ void register_node_type_geo_level_set_boolean()
 
   geo_node_type_base(
       &ntype, GEO_NODE_LEVEL_SET_BOOLEAN, "Level Set Boolean", NODE_CLASS_GEOMETRY, 0);
-  node_type_socket_templates(
-      &ntype, geo_node_level_set_boolean_in, geo_node_level_set_boolean_out);
+  ntype.declare = blender::nodes::geo_node_level_set_boolean_declare;
   ntype.geometry_node_execute = blender::nodes::geo_node_level_set_boolean_exec;
   node_type_storage(&ntype,
                     "NodeGeometryLevelSetBoolean",
                     node_free_standard_storage,
                     node_copy_standard_storage);
-  node_type_init(&ntype, geo_node_level_set_boolean_init);
-  ntype.draw_buttons = geo_node_level_set_boolean_layout;
+  node_type_init(&ntype, blender::nodes::geo_node_level_set_boolean_init);
+  ntype.draw_buttons = blender::nodes::geo_node_level_set_boolean_layout;
 
   nodeRegisterType(&ntype);
 }
diff --git a/source/blender/nodes/geometry/nodes/node_geo_level_set_primitive_platonic.cc b/source/blender/nodes/geometry/nodes/node_geo_level_set_primitive_platonic.cc
index ee07e9f78f8..01ea9afbe88 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_level_set_primitive_platonic.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_level_set_primitive_platonic.cc
@@ -31,7 +31,7 @@ namespace blender::nodes {
 static void geo_node_level_set_primitive_platonic_declare(NodeDeclarationBuilder &b)
 {
   b.add_input<decl::Float>("Size").default_value(1.0f).min(0.0f).subtype(PROP_DISTANCE);
-  b.add_input<decl::Vector>("Target").subtype(PROP_TRANSLATION);
+  b.add_input<decl::Vector>("Center").subtype(PROP_TRANSLATION);
   b.add_input<decl::Float>("Voxel Size").default_value(0.3f).min(0.01f).subtype(PROP_DISTANCE);
   b.add_output<decl::Geometry>("Level Set");
 }
diff --git a/source/blender/nodes/geometry/nodes/node_geo_level_set_to_mask.cc b/source/blender/nodes/geometry/nodes/node_geo_level_set_to_mask.cc
index e3350f8bfaf..1bba95c0bcb 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_level_set_to_mask.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_level_set_to_mask.cc
@@ -72,19 +72,18 @@ static Volume *level_set_to_mask(const Volume &volume, const GeoNodeExecParams &
 
 static void geo_node_level_set_to_mask_exec(GeoNodeExecParams params)
 {
-
 #ifdef WITH_OPENVDB
   GeometrySet geometry_set = params.extract_input<GeometrySet>("Level Set");
   const Volume *volume = geometry_set.get_volume_for_read();
 
-  const Main *bmain = DEG_get_bmain(params.depsgraph());
-  BKE_volume_load(volume, bmain);
-
   if (volume == nullptr) {
-    params.set_output("Level Set", std::move(geometry_set));
+    params.set_output("Mask Volume", std::move(geometry_set));
     return;
   }
 
+  const Main *bmain = DEG_get_bmain(params.depsgraph());
+  BKE_volume_load(volume, bmain);
+
   Volume *mask_volume = level_set_to_mask(*volume, params);
   params.set_output("Mask Volume", GeometrySet::create_with_volume(mask_volume));
 #else
diff --git a/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc b/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc
index 4804ee8920e..6fd398ff2f6 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc
@@ -36,7 +36,10 @@ static void geo_node_points_to_volume_declare(NodeDeclarationBuilder &b)
   b.add_input<decl::Float>("Voxel Size").default_value(0.3f).min(0.01f).subtype(PROP_DISTANCE);
   b.add_input<decl::Float>("Voxel Amount").default_value(64.0f).min(0.0f);
   b.add_input<decl::String>("Radius");
-  b.add_input<decl::Float>("Radius", "Radius_001").default_value(0.5f).min(0.0f);
+  b.add_input<decl::Float>("Radius", "Radius_001")
+      .default_value(0.5f)
+      .min(0.0f)
+      .subtype(PROP_DISTANCE);
   b.add_output<decl::Geometry>("Geometry");
 }
 
diff --git a/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc b/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc
index f6370bfe0eb..3f31d0656cf 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc
@@ -202,7 +202,7 @@ static void geo_node_volume_to_mesh_exec(GeoNodeExecParams params)
                                              params.get_input<float>("Threshold"),
                                              params.get_input<float>("Adaptivity"),
                                              resolution);
-  params.set_output("Geometry", mesh ? GeometrySet::create_with_mesh(mesh) : GeometrySet());
+  params.set_output("Geometry", GeometrySet::create_with_mesh(mesh));
 #else
   params.error_message_add(NodeWarningType::Error,
                            TIP_("Disabled, Blender was compiled without OpenVDB"));



More information about the Bf-blender-cvs mailing list