Documentation / Node reference / geo nodes

geo/Curve

A resampled curve through a set of points.

Primitives

Threads a curve through points and resamples it at a resolution you pick. Plug something in and every input object's points become one curve: a geo/Add, a geo/Line, the points of a mesh. Plug nothing in and you type the points on the node itself, which is what sketching a curve by hand looks like. Either way the curve PASSES THROUGH the points, which is the difference from geo/CADCurve, where they pull on it instead.

Two counts, and they are different things. `pointsCount` is how many points go IN, when they are typed here. `samplesCount` is how many come OUT. Raise the second for a smoother curve; it costs points, not shape.

`interpolation` picks what runs between the points. Catmull-Rom is the smooth one, and `tension` is how tightly it hugs them. Linear joins them with straight segments, which is what resampling a polyline at an even spacing looks like.

`method` picks what drives the resolution: a fixed number of samples, or a fixed spacing along the curve with `segmentSize`. A spacing holds when the curve changes size, which is what a downstream sweep or a printer wants; `maxSamplesCount` is the ceiling that stops a small spacing on a long curve from running away.

Its third setting, SOURCE POINTS, resamples NOTHING: the output is the points that went in, joined into a polyline, and nothing moves. That is what you want when the points are already where you placed them. Interpolation has nothing left to do in that mode, so it is hidden along with the sampling params.

The output is a polyline of segments, or loose points with `asPoints`. A TANGENT attribute rides along by default, which is what geo/PolyWire and geo/Copy read to orient what they place on it.

Parameters

Name Type What it does
dimension UInt8 _2D · _3D Whether the curve comes out 2D or 3D. A 2D curve has no third coordinate at all, and the plane it lies in is this object's own transform, so a geo/Transform tilts it and everything built on it follows. The z is DROPPED rather than refused when the points are not flat.
method UInt8 POINTS_COUNT · SEGMENT_SIZE · SOURCE_POINTS What drives the resolution: a fixed number of samples, a fixed spacing along the curve, or the source points kept exactly as they are.
interpolation UInt8 CATMULL_ROM_CURVE3 · LINEAR What runs between the points. Catmull-Rom curves through them smoothly; linear joins them with straight segments.
samplesCount UInt32 How many points the curve is sampled into. This is the OUTPUT resolution, not the number of points going in.
segmentSize Float Spacing between output samples, in world units. A spacing holds when the curve changes size, where a fixed count does not.
maxSamplesCount UInt32 Ceiling on the samples `segmentSize` may produce, so a small spacing on a long curve cannot run away.
tension Float How tightly the Catmull-Rom curve hugs its points. Ignored by linear interpolation.
asPoints Bool Output loose points instead of a polyline of segments.
evenlySpacedPoints Bool Space the samples by ARC LENGTH rather than by curve parameter, so they are evenly spread along the curve instead of bunching where it bends.
tangents Bool Add a TANGENT attribute, the normalized direction along the curve at each sample. geo/PolyWire and geo/Copy read it to orient what they place on the curve.
copyAttributes Bool Carry attributes over from the input object.
attributes AttributeNames Which attributes to carry over.
pointsCount UInt8 How many of the points below to use. The rest are hidden. Used only when nothing is plugged into the input.
position0 Vector3 A point the curve passes through. In 2D only x and y are read; the z stays in the param, so switching back to three restores the point.
position1 Vector3 A point the curve passes through. In 2D only x and y are read; the z stays in the param, so switching back to three restores the point.
position2 Vector3 A point the curve passes through. In 2D only x and y are read; the z stays in the param, so switching back to three restores the point.
position3 Vector3 A point the curve passes through. In 2D only x and y are read; the z stays in the param, so switching back to three restores the point.
position4 Vector3 A point the curve passes through. In 2D only x and y are read; the z stays in the param, so switching back to three restores the point.
position5 Vector3 A point the curve passes through. In 2D only x and y are read; the z stays in the param, so switching back to three restores the point.
position6 Vector3 A point the curve passes through. In 2D only x and y are read; the z stays in the param, so switching back to three restores the point.
position7 Vector3 A point the curve passes through. In 2D only x and y are read; the z stays in the param, so switching back to three restores the point.

See also

This page is generated from the engine, so it describes the release you can download. The same text is in the editor's Help panel next to the node itself.