Motion Tracking
Caddis tracks motion with an analyze pass: you set up a tracker node, press Track, the engine analyzes the frame range once (with a progress bar), and the result is baked — it scrubs instantly, saves with the project, and never silently re-runs. User corrections layer on top of the bake as ordinary keyframes, so a drifting track is fixed by nudging, not re-tracking.
Two trackers cover the two workflows:
- PlanarTrack — one flat surface (a phone screen, a sign), tracked with sub-pixel perspective. Drives CornerPin for screen replacement.
- TrackPoints — tens to hundreds of points (feature or blob tracking) emitted as Points geometry for stylized design work.
Screen replacement, end to end
- Footage layer: drop your clip (VideoSource), add Track > Planar Track, and connect
VideoSource → PlanarTrack.in. - Define the region: with the PlanarTrack node selected, a lime quad appears in the viewer. Drag its corners over the surface to track. Corner order (1–4 labels) is TL, TR, BR, BL — it determines the pin orientation.
- Track: in Properties, press Track ▶ (playhead to end of range), ◀ Track (backward — the region is read at the playhead), or All. The range follows the preview range if set, else the layer clip. Progress streams in the Properties panel and status console; rendering pauses while the engine tracks.
- Review: scrub. The quad now follows the surface; a faint polyline shows the tracked path. Outside the tracked range the quad dims and holds.
- Correct: see drift at a frame? Drag a corner. That writes a keyframed offset at that frame (always keyed, regardless of auto-key) — the bake is untouched, and the offsets interpolate between your fixes. The dope sheet shows them on
offset0–3. - Pin Setup: prepare your insert content as its own layer (it can be disabled). On the PlanarTrack's Properties, pick the layer in Pin Setup and press Create. This builds
LayerSource(insert) → CornerPin, wires the tracked corners, and merges the pin over the footage — one undo step. - The CornerPin gizmo's pins are draggable too; when track-driven, drags write corrections to the tracker.
Changing the region or tracker settings after baking lights an amber "Edited since track" dot — retrack to refresh. Clear discards the bake but keeps corrections.
Blob / point tracking for design
- Footage → Track > Track Points. Pick a mode:
- Features tracks corners and texture. Good on real-world footage.
- Blobs tracks bright (or dark) regions by centroid. Push the footage through Threshold/Levels upstream to isolate what you want; the tracker analyzes its input, not the raw file.
- Track (same buttons as planar). The bake is written to the project's
cache/track/folder. - Wire
pointsinto the existing Points pipeline: PointTrail for trails, CloneToPoints to stamp geometry on every track, DrawPoints for dots, PointAttributes/AttributeToField to map the per-pointvelocity/age/confidence/areaattributes onto scale, opacity, or color.
Point IDs are stable for a track's lifetime and never reused, so trails and clones stay attached to "their" point.
Notes
- Tracking blocks the engine (the IPC loop is serial): playback, RAM preview, and rendering wait until the pass finishes. There's no cancel in v1 — track shorter ranges when iterating.
- Tracks are deterministic: re-running on identical input produces an identical bake.
- Planar bakes live inside the project file; point bakes are sidecar files under
cache/track/(collect the cache folder when moving projects, or retrack).