[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