Track Points
Tracks many points through footage — feature tracking or blob tracking — and outputs them as Points with stable IDs for stylized motion design.
Category: Track Menu path: Track > Track Points
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
in | imageRgba16f | input | Footage to analyze. Only read while tracking runs. Pre-processing upstream (Levels, Blur, Threshold) is a legitimate way to steer what gets tracked. |
points | points | output | Tracked points at the current frame. Stable IDs: a point keeps its identity for its whole life, so PointTrail trails and CloneToPoints instances stay attached. |
Per-point attributes written: velocity (vec2, px/frame), age (frames since the track appeared), confidence, and area (blob mode) — all usable via AttributeToField / PointAttributes.
Parameters
| Param | Type | Default | Description |
|---|---|---|---|
mode | enum | Features | Features: track corners/texture (Shi-Tomasi + pyramidal Lucas-Kanade). Blobs: track bright/dark regions by centroid (threshold → connected components). |
maxPoints | scalar | 200 | Cap on simultaneous tracks. |
offset | vec2 | 0,0 | Keyframeable offset applied to every point. |
analysisScale | enum | Half | Analysis resolution. |
| Features | |||
quality | scalar | 0.05 | Corner threshold relative to the strongest corner. Lower = more, weaker points. |
minDistance | scalar | 16 | Minimum spacing between points (px). |
windowSize | scalar | 21 | Tracking patch size (px). Bigger = more stable, less precise on small detail. |
fbErrorMax | scalar | 1.5 | Drift kill threshold: each point is tracked forward then backward; if it doesn't land home within this many px the track dies. |
redetect | boolean | true | Top up with fresh points (new IDs) when survivors drop below 75% of max. |
| Blobs | |||
threshold | scalar | 0.5 | Luminance cut (0–1). |
invert | boolean | false | Track dark blobs on light background. |
minArea / maxArea | scalar | 16 / 1e6 | Blob size limits (px²). Min filters noise specks. |
matchMaxDistance | scalar | 50 | Max distance a blob can move per frame and keep its identity. |
A hidden bakeId param references the baked result on disk (cache/track/ in the project folder).
How It Works
Press Track in Properties: the engine analyzes the frame range once and bakes every point's path to a sidecar file in the project's cache folder. At render time the node just replays the bake — scrubbing is instant and deterministic. Outside the tracked range the points hold their first/last positions.
Usage Examples
Stylized motion trails
VideoSource → TrackPoints (Features) → PointTrail → DrawShape. Hundreds of feature points sprout trails that follow the footage's motion — the classic "data-viz over footage" look.
Blob choreography
High-contrast footage (or anything pushed through Threshold first) → TrackPoints (Blobs) → CloneToPoints to stamp a shape on every moving blob, with area driving scale via AttributeToField.
Tips
- Features mode wants texture; blob mode wants contrast. If features die instantly, raise
windowSizeor lowerquality. - The bake lives in
cache/<project>/track/— moving a project without its cache folder shows empty points until you retrack (the node warns, never errors). ageis great for fading points in as they're born: AttributeToField → opacity.
Related Nodes
- PlanarTrack — single-surface tracking for corner pins
- PointTrail — draws each point's history as a polyline
- CloneToPoints — instances geometry on every tracked point
- PointAttributes — remap the per-point attributes