Skip to content

Point Trail

Records the position history of each point over time and outputs trailing paths — with built-in fading, smoothing, and a points output for dotted trails.

Category: Shapes Menu path: Shapes > Point Trail

Ports

PortTypeDirectionDescription
points_inpointsinputPoints to track (typically from PointAdvect or TrackPoints)
outshapeoutputOne open path per tracked point. Per-vertex curveu attribute (0 = tail, 1 = head); per-vertex colors when fade > 0; per-path index + inherited color
pointspointsoutputEvery trail sample as a point — feed DrawPoints for dotted trails. Carries curveu, opacity (the fade ramp), sourceIndex, and color (when inheriting)

Parameters

ParamTypeDefaultDescription
trailLengthscalar30Maximum number of samples kept per point
everyNth (UI: "Frame Interval")scalar1Sample every N frames. Higher values cover a longer time window with fewer vertices
outputModeenumPolylinePolyline = straight segments. Smooth = Catmull-Rom beziers through the samples — silky curves, especially with Frame Interval > 1
fadescalar00 = solid trail; 1 = tail fades to fully transparent. Writes per-vertex colors, so DrawShape renders a smooth gradient along each trail (note: this overrides DrawShape's stroke color — the trail tint comes from the source point color or white)
fadePowerscalar1Shapes the fade ramp: 1 = linear, >1 = holds opacity near the head then drops, <1 = fades immediately
inheritColorbooleanfalseCopy each source point's color attribute onto its trail (per-path color; also tints the fade gradient)

Expose Channels

When enabled (E button on node header), adds input ports that override params via edge connections:

PortTypeOverrides
trailLength_inscalartrailLength

How It Works

The trail at any frame is a deterministic function of the timeline: the upstream points sampled at the current frame and the trailLength sample frames behind it. When you scrub, export, or jump anywhere, the engine re-evaluates the upstream point chain at those history frames and rebuilds the exact trail — no warm-up, no stale state, no dependence on what was played before. A snapshot cache keeps sequential playback incremental (one upstream sample per frame), so the rebuild cost only appears on cold jumps.

Practical consequences:

  • Scrubbing to any frame shows the correct full trail immediately.
  • Exports match the preview exactly, regardless of the export's start frame.
  • The old "Building trails" pre-roll pass is gone — it's no longer needed.

Points keep their trails as long as their stable IDs persist; a point that disappears upstream takes its trail with it, and a reborn ID starts fresh.

Frame Interval × Trail Length controls the time window: (trailLength=30, frameInterval=1) covers 30 frames of motion at full density; (30, 3) covers 90 frames at ⅓ density.

Usage Examples

Basic: Particle trails

Grid → PointAdvect (Noise vectorField) → PointTrail (trailLength: 60, fade: 1) → DrawShape (strokeWidth: 1, fillEnabled: false) → Output. Each particle leaves a 2-second trail that melts away at the tail.

Comet trails from tracked footage

TrackPoints (Features) → PointTrail (Smooth, fade 1, fadePower 2) → DrawShape. Tracked features sprout smooth comet tails that follow the footage.

Dotted trails

PointTrail's points output → DrawPoints. The opacity attribute already carries the fade ramp, so dots dissolve along the tail; map curveu through AttributeToField to drive per-dot scale too.

Colored trails

PointAttributes (target: Color, ColorField from Gradient) → PointTrail (inheritColor: on) → DrawShape. Each trail takes its particle's color.

Tips

  • Smooth mode pairs well with Frame Interval 2–4: fewer samples, rounder curves, longer time window.
  • A cold scrub re-evaluates the upstream point chain up to trailLength times for that one frame. Pure CPU chains (Grid/PointAdvect/fields) are effectively free; if the chain samples video via ImageSample, prefer moderate trailLength values.
  • fade uses per-vertex colors, which take priority over DrawShape's stroke color — turn on inheritColor (or color the points upstream) to control the tint.
  • For per-vertex effects beyond fading, the curveu attribute (0 at the tail, 1 at the head) is always written — drive opacity/strokeWidth via ShapeAttributes + AttributeToField.

Caddis — professional motion design.