[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