[Bf-blender-cvs] [aedd43b33f8] temp-geometry-nodes-fields-prototype: support field in Points to Volume node

Jacques Lucke noreply at git.blender.org
Fri Jul 30 17:37:26 CEST 2021


Commit: aedd43b33f8f1d1721d34b54042a02d6bc6e5c2e
Author: Jacques Lucke
Date:   Fri Jul 30 17:37:07 2021 +0200
Branches: temp-geometry-nodes-fields-prototype
https://developer.blender.org/rBaedd43b33f8f1d1721d34b54042a02d6bc6e5c2e

support field in Points to Volume node

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

M	source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc

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

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 65306b1c452..3ddffdc7950 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
@@ -33,7 +33,6 @@ static bNodeSocketTemplate geo_node_points_to_volume_in[] = {
     {SOCK_FLOAT, N_("Density"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, FLT_MAX},
     {SOCK_FLOAT, N_("Voxel Size"), 0.3f, 0.0f, 0.0f, 0.0f, 0.01f, FLT_MAX, PROP_DISTANCE},
     {SOCK_FLOAT, N_("Voxel Amount"), 64.0f, 0.0f, 0.0f, 0.0f, 0.0f, FLT_MAX},
-    {SOCK_STRING, N_("Radius")},
     {SOCK_FLOAT, N_("Radius"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, FLT_MAX},
     {-1, ""},
 };
@@ -50,7 +49,6 @@ static void geo_node_points_to_volume_layout(uiLayout *layout,
   uiLayoutSetPropSep(layout, true);
   uiLayoutSetPropDecorate(layout, false);
   uiItemR(layout, ptr, "resolution_mode", 0, IFACE_("Resolution"), ICON_NONE);
-  uiItemR(layout, ptr, "input_type_radius", 0, IFACE_("Radius"), ICON_NONE);
 }
 
 namespace blender::nodes {
@@ -178,8 +176,15 @@ static void gather_point_data_from_component(const GeoNodeExecParams &params,
 {
   GVArray_Typed<float3> positions = component.attribute_get_for_read<float3>(
       "position", ATTR_DOMAIN_POINT, {0, 0, 0});
-  GVArray_Typed<float> radii = params.get_input_attribute<float>(
-      "Radius", component, ATTR_DOMAIN_POINT, 0.0f);
+
+  bke::FieldRef<float> field = params.get_input_field<float>("Radius");
+  bke::FieldInputs field_inputs = field->prepare_inputs();
+  Vector<std::unique_ptr<bke::FieldInputValue>> field_input_values;
+  prepare_field_inputs(field_inputs, component, ATTR_DOMAIN_POINT, field_input_values);
+  bke::FieldOutput field_output = field->evaluate(
+      IndexRange(component.attribute_domain_size(ATTR_DOMAIN_POINT)), field_inputs);
+
+  GVArray_Typed<float> radii{field_output.varray_ref()};
 
   for (const int i : IndexRange(positions.size())) {
     r_positions.append(positions[i]);



More information about the Bf-blender-cvs mailing list