98 lines
3.2 KiB
ReStructuredText
98 lines
3.2 KiB
ReStructuredText
.. index:: Geometry Nodes; Sample Curve


.. _bpy.types.GeometryNodeSampleCurve:




*****************


Sample Curve Node


*****************




.. figure:: /images/nodetypes_GeometryNodeSampleCurve.png


:align: right


:alt: Sample Curve node.




The *Sample Curve* calculates a point on a curve at a certain distance from the start of the curve,


specified by the length or factor inputs. It also outputs data retrieved from that position on the curve.


The sampled values are linearly interpolated from the values at the evaluated curve points


at each side of the sampled point.




.. note::




When the curve contains multiple splines, the sample position is found based on the total accumulated length,


including the lengths of all previous splines. The order of the splines is the same order as


displayed in the :doc:`Spreadsheet Editor </editors/spreadsheet>`.






Inputs


======




Curves


Standard geometry input with a curve component.




Input


A field input to evaluate custom attributes.


The evaluation is outputted through the *Value* output.




Factor :guilabel:`Factor mode`


The portion of the total length used to determine the sample position.




Length :guilabel:`Length mode`


A length in distance units used to determine how far along the curve to travel before sampling.




Curve Index


An index to only evaluate specific splines, these indices can be specified manually


or from the :doc:`/modeling/geometry_nodes/geometry/read/input_index`.


This input is ignored when the *All Curves* property is enabled.






Properties


==========




Data Type


The :ref:`data type <attributedatatypes>` used for the evaluated data.




Mode


How to find endpoint positions for the trimmed spline.


The option acts the same as it does in the :doc:`/modeling/geometry_nodes/curve/operations/trim_curve`.




:Factor:


Find the endpoint positions using a factor of each spline's length.


The input values should be between 0 or 1.


:Length:


Find the endpoint positions using a length from the start of each spline.


The input values should be between 0 and the length of the splines.




All Curves


Sample lengths based on the total length of all curves, rather than using a length inside each selected curve.






Outputs


=======




Value


The value of the input *Value* at the sample point.




Position


The position at the sample along the spline.




Tangent


The normalized :doc:`curve tangent </modeling/geometry_nodes/curve/read/curve_tangent>` at the sample.




.. tip::




This output can be combined with the :doc:`/modeling/geometry_nodes/utilities/rotation/align_euler_to_vector`


to create a rotation that lines up with direction of the curve. Including the *Normal* output


in a second align node after can align the other rotation axis.




Normal


The normalized :doc:`curve normal </modeling/geometry_nodes/geometry/read/normal>` at the sample.






Examples


========




.. figure:: /images/modeling_geometrynodes_curve_samplecurve_example.png


:align: center




Here, the *Count* mode of the :doc:`/modeling/geometry_nodes/curve/operations/resample_curve` is recreated,


except a mesh is used for the result instead of a curve. The Z axis of the position can be used


as the sample factor because the position is between zero and one for the entire line.
