diff options
author | Hans Goudey <h.goudey@me.com> | 2021-06-14 20:51:25 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2021-06-14 20:52:08 +0300 |
commit | fcbb20286a3163d1d6669502375aa3f096e9547a (patch) | |
tree | 18d52ede7a70fd0f68a399218d2198346b7776cc /source/blender/nodes/NOD_geometry.h | |
parent | d08e925ef1aaa892b0d5bb549d4ec2c8b47d7187 (diff) |
Geometry Nodes: Curve to Points Node for Evaluated Data
This node implements the second option of T87429, creating points
along the input splines with the necessary evaluated information
for instancing: `tangent`, `normal`, and `rotation` attributes.
All generic curve point and spline attributes are copied to the
result points as well.
The "Count" and "Length" methods are just like the current options
in the resample node, but the output is points instead of a curve.
The "Evaluated" method uses the points you see on the curve directly,
and therefore should be the fastest.
The rotation data is retrieved from a transform matrix built with the
same method that the curve to mesh node uses. The radius attribute is
divided by 10 so the points don't look absurdly huge in the viewport.
In the future that could be an option.
For the implementation, one thing that could use an improvement
is the amount of temporary allocations while resampling to evaluated
points before the final points. I expect that reusing a buffer for
each thread would give a nice improvement.
Differential Revision: https://developer.blender.org/D11539
Diffstat (limited to 'source/blender/nodes/NOD_geometry.h')
-rw-r--r-- | source/blender/nodes/NOD_geometry.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/source/blender/nodes/NOD_geometry.h b/source/blender/nodes/NOD_geometry.h index b7e1b0b657c..1995a42731e 100644 --- a/source/blender/nodes/NOD_geometry.h +++ b/source/blender/nodes/NOD_geometry.h @@ -53,6 +53,7 @@ void register_node_type_geo_collection_info(void); void register_node_type_geo_convex_hull(void); void register_node_type_geo_curve_length(void); void register_node_type_geo_curve_to_mesh(void); +void register_node_type_geo_curve_to_points(void); void register_node_type_geo_curve_resample(void); void register_node_type_geo_delete_geometry(void); void register_node_type_geo_edge_split(void); |