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")); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs