Skip to content

Point Advect

Moves points through a vector field over time using Euler integration. Stateful -- positions accumulate frame by frame.

Category: Point Ops Menu path: Point Ops > Point Advect

Ports

PortTypeDirectionDescription
points_inpointsinputSource points (seed positions come from layer start frame)
field_invectorFieldinputVector field that drives point motion
outpointsoutputAdvected points at the current frame

Parameters

ParamTypeDefaultDescription
speedscalar100Velocity multiplier applied to the field
substepsscalar1Integration substeps per frame (higher = more accurate in fast-changing fields)

How It Works

PointAdvect is a stateful node. At the layer's start frame, it reads the upstream points as seed positions. On each subsequent frame, it evaluates the vector field at each point's current position and moves the point by field_value * speed * dt, using forward Euler integration.

Results are stored in a SimulationCache keyed by (composition, node, frame). This means:

  • Sequential playback builds on the previous frame's result (fast).
  • Scrubbing to an arbitrary frame replays from the nearest cached frame.
  • Changing upstream parameters (different seed points, different field) invalidates the cache via a validity hash.

Use resetSimulation (or the reset button in the UI) to clear the cache and start fresh.

Usage Examples

Basic: Flowing particles

Grid -> PointAdvect (field: Noise.vectorField, Curl type) -> DrawPoints -> Transform2D -> Output. Points drift along a smooth, swirling flow field.

Trails

Grid -> PointAdvect -> PointTrail -> DrawShape -> Transform2D -> Output. Each point leaves a polyline trail showing its path history.

Controlled speed

Connect a Time or Math node to drive speed via keyframes. Ramp speed from 0 to 200 over the first second for a gradual start.

Tips

  • Use Curl noise type for the field -- it produces divergence-free flow that avoids clumping and convergence points
  • Increase substeps when the field changes rapidly in space (tight vortices) to prevent points from jumping through features
  • The simulation snaps comp_frame to integer for cache lookup, so sub-frame motion blur sampling still uses the integer-frame simulation state
  • Playback must be sequential for correct results -- scrubbing backwards replays from the start (or nearest cached frame)
  • resetSimulation clears both SimulationCache and TrailCache
  • Grid -- common seed point source
  • Noise -- vectorField output drives the flow
  • PointTrail -- record advected positions as polyline trails
  • PointAttributes -- set per-point attributes before or after advection
  • DistanceField -- shape-based vector field for advection around geometry

Caddis — professional motion design.