Commit: d4b441851f39a3c38feb8a2d57e8f0741fa4b430
Author: Jacques Lucke
Date: Tue Aug 10 15:33:19 2021 +0200
Branches: temp-geometry-nodes-fields-prototype
https://developer.blender.org/rBd4b441851f39a3c38feb8a2d57e8f0741fa4b430
new Position node
===================================================================
M release/scripts/startup/nodeitems_builtins.py
M source/blender/blenkernel/BKE_node.h
M source/blender/blenkernel/intern/node.cc
M source/blender/nodes/CMakeLists.txt
M source/blender/nodes/NOD_geometry.h
M source/blender/nodes/NOD_static_types.h
A source/blender/nodes/geometry/nodes/node_geo_position.cc
===================================================================
diff --git a/release/scripts/startup/nodeitems_builtins.py
b/release/scripts/startup/nodeitems_builtins.py
index 5f6e03a37cc..7f766221fa0 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -536,6 +536,7 @@ geometry_node_categories = [
NodeItem("GeometryNodeAttribute"),
NodeItem("GeometryNodeIndex"),
NodeItem("GeometryNodeNormal"),
+ NodeItem("GeometryNodePosition"),
NodeItem("GeometryNodeCurveParameter"),
]),
GeometryNodeCategory("GEO_MATERIAL", "Material", items=[
diff --git a/source/blender/blenkernel/BKE_node.h
b/source/blender/blenkernel/BKE_node.h
index 03c2efda9c9..dbd2bbaec6c 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -1485,6 +1485,7 @@ int ntreeTexExecTree(struct bNodeTree *ntree,
#define GEO_NODE_NORMAL 1080
#define GEO_NODE_CURVE_PARAMETER 1081
#define GEO_NODE_EXTRUDE_AND_MOVE 1082
+#define GEO_NODE_POSITION 1083
/** \} */
diff --git a/source/blender/blenkernel/intern/node.cc
b/source/blender/blenkernel/intern/node.cc
index e56d8441f3c..aaaceab049e 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -5186,6 +5186,7 @@ static void registerGeometryNodes()
register_node_type_geo_point_separate();
register_node_type_geo_point_translate();
register_node_type_geo_points_to_volume();
+ register_node_type_geo_position();
register_node_type_geo_raycast();
register_node_type_geo_sample_texture();
register_node_type_geo_select_by_handle_type();
diff --git a/source/blender/nodes/CMakeLists.txt
b/source/blender/nodes/CMakeLists.txt
index 6580d5ee4fb..cb72ddfb75e 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -215,6 +215,7 @@ set(SRC
geometry/nodes/node_geo_point_separate.cc
geometry/nodes/node_geo_point_translate.cc
geometry/nodes/node_geo_points_to_volume.cc
+ geometry/nodes/node_geo_position.cc
geometry/nodes/node_geo_raycast.cc
geometry/nodes/node_geo_select_by_material.cc
geometry/nodes/node_geo_separate_components.cc
diff --git a/source/blender/nodes/NOD_geometry.h
b/source/blender/nodes/NOD_geometry.h
index 0601b8a2ea1..46ec23b70ac 100644
--- a/source/blender/nodes/NOD_geometry.h
+++ b/source/blender/nodes/NOD_geometry.h
@@ -100,6 +100,7 @@ void register_node_type_geo_point_scale(void);
void register_node_type_geo_point_separate(void);
void register_node_type_geo_point_translate(void);
void register_node_type_geo_points_to_volume(void);
+void register_node_type_geo_position(void);
void register_node_type_geo_raycast(void);
void register_node_type_geo_sample_texture(void);
void register_node_type_geo_select_by_handle_type(void);
diff --git a/source/blender/nodes/NOD_static_types.h
b/source/blender/nodes/NOD_static_types.h
index 5abda7f2972..c71833817e8 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -343,6 +343,7 @@ DefNode(GeometryNode, GEO_NODE_POINT_SCALE,
def_geo_point_scale, "POINT_SCALE",
DefNode(GeometryNode, GEO_NODE_POINT_SEPARATE, 0, "POINT_SEPARATE",
PointSeparate, "Point Separate", "")
DefNode(GeometryNode, GEO_NODE_POINT_TRANSLATE, def_geo_point_translate,
"POINT_TRANSLATE", PointTranslate, "Point Translate", "")
DefNode(GeometryNode, GEO_NODE_POINTS_TO_VOLUME, def_geo_points_to_volume,
"POINTS_TO_VOLUME", PointsToVolume, "Points to Volume", "")
+DefNode(GeometryNode, GEO_NODE_POSITION, 0, "POSITION", Position, "Position",
"")
DefNode(GeometryNode, GEO_NODE_RAYCAST, def_geo_raycast, "RAYCAST", Raycast,
"Raycast", "")
DefNode(GeometryNode, GEO_NODE_SELECT_BY_MATERIAL, 0, "SELECT_BY_MATERIAL",
SelectByMaterial, "Select by Material", "")
DefNode(GeometryNode, GEO_NODE_SEPARATE_COMPONENTS, 0, "SEPARATE_COMPONENTS",
SeparateComponents, "Separate Components", "")
diff --git a/source/blender/nodes/geometry/nodes/node_geo_position.cc
b/source/blender/nodes/geometry/nodes/node_geo_position.cc
new file mode 100644
index 00000000000..b86928af491
--- /dev/null
+++ b/source/blender/nodes/geometry/nodes/node_geo_position.cc
@@ -0,0 +1,45 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "UI_interface.h"
+#include "UI_resources.h"
+
+#include "node_geometry_util.hh"
+
+static bNodeSocketTemplate geo_node_position_out[] = {
+ {SOCK_VECTOR, N_("Position")},
+ {-1, ""},
+};
+
+namespace blender::nodes {
+
+static void geo_node_position_exec(GeoNodeExecParams params)
+{
+ FieldPtr position_field = new bke::PersistentAttributeField("position",
CPPType::get<float3>());
+ params.set_output("Position",
bke::FieldRef<float3>(std::move(position_field)));
+}
+
+} // namespace blender::nodes
+
+void register_node_type_geo_position()
+{
+ static bNodeType ntype;
+
+ geo_node_type_base(&ntype, GEO_NODE_POSITION, "Position", NODE_CLASS_INPUT,
0);
+ node_type_socket_templates(&ntype, nullptr, geo_node_position_out);
+ ntype.geometry_node_execute = blender::nodes::geo_node_position_exec;
+ nodeRegisterType(&ntype);
+}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs