[Bf-blender-cvs] [d43fee45aea] soc-2021-porting-modifiers-to-nodes-remesh-voxel: merged Master to the latest and updated to fields

Fabian Schempp noreply at git.blender.org
Sun Jan 16 07:23:03 CET 2022


Commit: d43fee45aeac9ad5afe3f65c679ba40bc2e6d660
Author: Fabian Schempp
Date:   Sun Jan 16 07:22:55 2022 +0100
Branches: soc-2021-porting-modifiers-to-nodes-remesh-voxel
https://developer.blender.org/rBd43fee45aeac9ad5afe3f65c679ba40bc2e6d660

merged Master to the latest and updated to fields

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

M	source/blender/nodes/geometry/CMakeLists.txt
M	source/blender/nodes/geometry/nodes/node_geo_remesh_voxel.cc

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

diff --git a/source/blender/nodes/geometry/CMakeLists.txt b/source/blender/nodes/geometry/CMakeLists.txt
index d692bd050c8..9cfc7cb02dc 100644
--- a/source/blender/nodes/geometry/CMakeLists.txt
+++ b/source/blender/nodes/geometry/CMakeLists.txt
@@ -163,6 +163,7 @@ set(SRC
   nodes/node_geo_proximity.cc
   nodes/node_geo_raycast.cc
   nodes/node_geo_realize_instances.cc
+  nodes/node_geo_remesh_voxel.cc
   nodes/node_geo_rotate_instances.cc
   nodes/node_geo_scale_instances.cc
   nodes/node_geo_separate_components.cc
@@ -188,7 +189,6 @@ set(SRC
   nodes/node_geo_triangulate.cc
   nodes/node_geo_viewer.cc
   nodes/node_geo_volume_to_mesh.cc
-
   node_geometry_exec.cc
   node_geometry_tree.cc
   node_geometry_util.cc
diff --git a/source/blender/nodes/geometry/nodes/node_geo_remesh_voxel.cc b/source/blender/nodes/geometry/nodes/node_geo_remesh_voxel.cc
index a9f5719d5f6..a6e27914eeb 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_remesh_voxel.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_remesh_voxel.cc
@@ -20,41 +20,46 @@
 
 #include "node_geometry_util.hh"
 
-static bNodeSocketTemplate geo_node_remesh_voxel_in[] = {
-    {SOCK_GEOMETRY, N_("Geometry")},
-    {SOCK_FLOAT, N_("Voxel Size"), 1.0f, 0, 0, 0, 0.01f, FLT_MAX},
-    {SOCK_FLOAT, N_("Adaptivity"), 0.0f, 0, 0, 0, 0.0f, 1.0f},
-    {-1, ""},
-};
-
-static bNodeSocketTemplate geo_node_remesh_voxel_out[] = {
-    {SOCK_GEOMETRY, N_("Geometry")},
-    {-1, ""},
-};
-
-namespace blender::nodes {
-static void geo_node_remesh_voxel_exec(GeoNodeExecParams params)
+namespace blender::nodes::node_geo_remesh_voxel_cc {
+static void node_declare(NodeDeclarationBuilder &b)
 {
-  GeometrySet geometry_set = params.extract_input<GeometrySet>("Geometry");
+  b.add_input<decl::Geometry>(N_("Mesh")).supported_type(GEO_COMPONENT_TYPE_MESH);
+  b.add_input<decl::Float>(N_("Voxel Size")).default_value(1.0f).min(0.01f).max(FLT_MAX);
+  b.add_input<decl::Float>(N_("Adaptivity")).default_value(0.0f).min(0.0f).max(1.0f);
+  b.add_output<decl::Geometry>(N_("Mesh"));
+}
+
+static void node_geo_exec(GeoNodeExecParams params)
+{
+#ifdef WITH_OPENVDB
+  GeometrySet geometry_set = params.extract_input<GeometrySet>("Mesh");
   const float voxel_size = params.extract_input<float>("Voxel Size");
   const float adaptivity = params.extract_input<float>("Adaptivity");
+  geometry_set.modify_geometry_sets([&](GeometrySet &geometry_set) {
+    const Mesh *mesh_in = geometry_set.get_mesh_for_read();
+    if (mesh_in != nullptr) {
+      Mesh *mesh_out = BKE_mesh_remesh_voxel(mesh_in, voxel_size, adaptivity, 0.0f);
+      geometry_set.replace_mesh(mesh_out);
+    }
+  });
 
-  if (geometry_set.has_mesh()) {
-    const Mesh *input_mesh = geometry_set.get_mesh_for_read();
-
-    Mesh *output_mesh = BKE_mesh_remesh_voxel(input_mesh, voxel_size, adaptivity, 0.0f);
-    geometry_set.replace_mesh(output_mesh);
-  }
-  params.set_output("Geometry", std::move(geometry_set));
+  params.set_output("Mesh", std::move(geometry_set));
+#else
+  params.error_message_add(NodeWarningType::Error,
+                           TIP_("Disabled, Blender was compiled without OpenVDB"));
+  params.set_default_remaining_outputs();
+#endif
 }
-}  // namespace blender::nodes
+}  // namespace blender::nodes::node_geo_remesh_voxel_cc
 
 void register_node_type_geo_remesh_voxel()
 {
+  namespace file_ns = blender::nodes::node_geo_remesh_voxel_cc;
+
   static bNodeType ntype;
 
-  geo_node_type_base(&ntype, GEO_NODE_REMESH_VOXEL, "Voxel Remesh", NODE_CLASS_GEOMETRY, 0);
-  node_type_socket_templates(&ntype, geo_node_remesh_voxel_in, geo_node_remesh_voxel_out);
-  ntype.geometry_node_execute = blender::nodes::geo_node_remesh_voxel_exec;
+  geo_node_type_base(&ntype, GEO_NODE_REMESH_VOXEL, "Voxel Remesh", NODE_CLASS_GEOMETRY);
+  ntype.declare = file_ns::node_declare;
+  ntype.geometry_node_execute = file_ns::node_geo_exec;
   nodeRegisterType(&ntype);
 }



More information about the Bf-blender-cvs mailing list