[Bf-blender-cvs] [11a6a56982c] temp-geometry-nodes-fields-prototype: support fields in point translate node

Jacques Lucke noreply at git.blender.org
Fri Jul 30 17:16:11 CEST 2021


Commit: 11a6a56982ccd0f40f8458877e1d0f7a0c6a1db3
Author: Jacques Lucke
Date:   Fri Jul 30 15:10:41 2021 +0200
Branches: temp-geometry-nodes-fields-prototype
https://developer.blender.org/rB11a6a56982ccd0f40f8458877e1d0f7a0c6a1db3

support fields in point translate node

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

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

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_point_translate.cc b/source/blender/nodes/geometry/nodes/node_geo_point_translate.cc
index 293f151fe19..1ce0a66fccf 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_point_translate.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_point_translate.cc
@@ -21,7 +21,6 @@
 
 static bNodeSocketTemplate geo_node_point_translate_in[] = {
     {SOCK_GEOMETRY, N_("Geometry")},
-    {SOCK_STRING, N_("Translation")},
     {SOCK_VECTOR, N_("Translation"), 0.0f, 0.0f, 0.0f, 1.0f, -FLT_MAX, FLT_MAX, PROP_TRANSLATION},
     {-1, ""},
 };
@@ -31,13 +30,6 @@ static bNodeSocketTemplate geo_node_point_translate_out[] = {
     {-1, ""},
 };
 
-static void geo_node_point_translate_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
-{
-  uiLayoutSetPropSep(layout, true);
-  uiLayoutSetPropDecorate(layout, false);
-  uiItemR(layout, ptr, "input_type", 0, IFACE_("Type"), ICON_NONE);
-}
-
 namespace blender::nodes {
 
 static void execute_on_component(GeoNodeExecParams params, GeometryComponent &component)
@@ -47,11 +39,18 @@ static void execute_on_component(GeoNodeExecParams params, GeometryComponent &co
   if (!position_attribute) {
     return;
   }
-  GVArray_Typed<float3> attribute = params.get_input_attribute<float3>(
-      "Translation", component, ATTR_DOMAIN_POINT, {0, 0, 0});
 
-  for (const int i : IndexRange(attribute.size())) {
-    position_attribute->set(i, position_attribute->get(i) + attribute[i]);
+  bke::FieldRef<float3> field = params.get_input_field<float3>("Translation");
+  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<float3> translation{field_output.varray_ref()};
+
+  for (const int i : IndexRange(translation.size())) {
+    position_attribute->set(i, position_attribute->get(i) + translation[i]);
   }
 
   position_attribute.save();
@@ -108,6 +107,5 @@ void register_node_type_geo_point_translate()
                     node_free_standard_storage,
                     node_copy_standard_storage);
   ntype.geometry_node_execute = blender::nodes::geo_node_point_translate_exec;
-  ntype.draw_buttons = geo_node_point_translate_layout;
   nodeRegisterType(&ntype);
 }



More information about the Bf-blender-cvs mailing list