Follow Path
Distribute shapes along a path with position, tangent, and curvature outputs.
What it does
Follow Path places shapes along a curve, or bends geometry to trace one. Given a Path and a Progress value it reports where that point sits: position, tangent direction, curvature and total length, enough to drive a transform, animate motion along a curve, or read the curve's shape at any point.
With shapes wired in, the node distributes them itself. In Distribute mode each shape is placed rigidly along the path and rotated to match its direction, the classic text-on-path. In Warp mode the geometry's own points are bent continuously to follow the curve, so the whole shape flows along it as one ribbon.
When to use it
Text, glyphs or repeated shapes laid out along a curve.
Bending an existing shape or mesh to follow a path (envelope warp).
A moving point, and its facing direction, driving a transform or a motion-path animation.
Sampling a curve's tangent, normal or curvature at a given point without moving anything.
| Parameter | Type | Default |
|---|---|---|
shapes_in | OneOf([Collection]) | — |
path | OneOf([Curve, CollectionOf(Geometry)]) | — |
progress | Any | 0 |
mode | String | "Distribute" |
orient | Boolean | true |
rotation_offset | Number | 0 |
offset | Number | 0 |
loop_mode | String | "clamp" |
spacing | String | "Proportional" |
stretch | Number | 1 |
twist | Number | 0 |
tilt | Number | 0 |
opacity | Number | 1 |
Gotchas
Spacing (Proportional, Equal, Pack) applies in Distribute mode only, and only while Progress is not bound to an attribute. Bind Progress from an attribute, a stamped normalized value for example, and each row places at its own position, with Spacing ignored while that binding is active.
With shapes wired but no path, the shapes pass through unchanged. With a path but no shapes, position, tangent, normal, curvature and length are still reported, which is enough to drive other nodes from the curve alone.
Wire a NumberArray or an Easing Curve into Progress instead of a plain number to redistribute the whole run of shapes at once: the array gives each row its own position, the curve reshapes the density of the run. The Progress slider still works alongside either, as a master offset added to every shape.
Rotation Offset is applied inside each shape's own path-facing frame, not as a global spin. A Transform node downstream rotates the whole formation together, which is a different thing and cannot reproduce this offset.
Worked example
Add a Follow Path node. Wire a curve or shape into Path.
Wire your shapes (text, instances, or a repeated shape) into Shapes In.
Leave Mode on Distribute for text-on-path; switch to Warp to bend the shapes' own geometry to follow the curve instead.
Animate Progress from 0 to 1 to move the run along the path, or drive it from an attribute or array for per-shape placement.
Raise Offset to push the run to one side of the path, and use Rotation Offset to fine-tune facing.