# Tracker

> Ctrl+Alt+click in the Viewer adds a track; drag its box to place it (sets a keyframe).

Ctrl+Alt+click in the Viewer adds a track; drag its box to place it (sets a keyframe). Track with the arrow buttons; set transform to stabilize / match-move; Export makes a CornerPin2D or Transform. max_error stops a track and warn_error turns it yellow.

| Node | Tracker |
|---|---|
| Menu | Transform › Tracker |
| **Names in each format** | |
| .oink comp (JSON) | `"type": "OC_N_tracker"` |
| .nk script | `Tracker4`, also imports `Tracker3` ([how .nk import works](/docs/nuke-users/nk-import)) |
| Python | `nuke.createNode("Tracker4")` |
| Assistant (MCP) | `create_node(type="Tracker")` |
| Tab search | `tracker` |

![Tracker properties](/shots/nodes/tracker@2x.webp)

## Inputs and outputs

| Port | Name | Type |
|---|---|---|
| input 0 | Image | image |
| input 1 | mask | image |
| output 0 | Image | image |

## Knobs

Panel tab **Tracker**, in panel order.

| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
| `engine` | engine | menu | `LIBMV` | LIBMV (libmv (Blender)), BUILTIN (builtin (NumPy)) |  |  |
| `motion_model` | motion model | menu | `AUTO` | AUTO (from T/R/S), Loc (translate), LocRot (translate/rotate), LocScale (translate/scale), LocRotScale (translate/rotate/scale), Affine (affine), Perspective (perspective) |  | libmv pattern warp (the builtin engine tracks translation) |
| `pretrack_filter` | pre-track filter | menu | `adjust_contrast` | none, adjust_contrast (adjust contrast), median | `pretrack_filter` |  |
| `pattern_source` | pattern from | menu | `KEYFRAME` | KEYFRAME (keyframe), PREVIOUS (previous frame) |  |  |
| `max_error` | max error | float | `0.2` | 0 to 1 | `max_error` | Stop a track when 1 - correlation exceeds this |
| `warn_error` | warn error | float | `0.1` | 0 to 1 | `warn_error` |  |
| `pattern_size` | pattern size | float | `30` | 4 to 200 |  |  |
| `search_size` | search size | float | `80` | 6 to 400 |  |  |
| `transform_mode` | transform | menu | `NONE` | NONE (none), STABILIZE (stabilize), MATCHMOVE (match-move), REMOVE_JITTER (remove jitter), ADD_JITTER (add jitter) | `transform` |  |
| `reference_frame` | reference frame | float | `1` | -100000 to 100000 (integer) | `reference_frame` |  |
| `smooth_t` | smooth T | float | `0` | 0 to 50 (integer) |  |  |
| `smooth_r` | smooth R | float | `0` | 0 to 50 (integer) |  |  |
| `smooth_s` | smooth S | float | `0` | 0 to 50 (integer) |  |  |
| `translate` | translate | vector ×2 | `0, 0` | -2000 to 2000 | `translate` |  |
| `rotate` | rotate | float | `0` | -180 to 180 | `rotate` | Degrees, counter-clockwise |
| `scale` | scale | wh ×2 | `1, 1` | 0 to 4 | `scale` |  |
| `center` | center | vector ×2 | `960, 540` | 0 to 4096 | `center` |  |
| `filter` | filter | menu | `CUBIC` | IMPULSE (Impulse), CUBIC (Cubic), KEYS (Keys), SIMON (Simon), RIFMAN (Rifman), MITCHELL (Mitchell), PARZEN (Parzen), NOTCH (Notch), LANCZOS4 (Lanczos4), LANCZOS6 (Lanczos6), SINC4 (Sinc4) | `filter` |  |
| `clamp` | clamp | bool | `false` |  | `clamp` |  |
| `black_outside` | black outside | bool | `true` |  | `black_outside` |  |
| `motionblur` | motionblur | float | `0` | 0 to 4 | `motionblur` |  |
| `shutter` | shutter | float | `0.5` | 0 to 2 | `shutter` |  |
| `shutter_offset` | shutter offset | menu | `START` | CENTRED (centred), START (start), END (end), CUSTOM (custom) | `shutteroffset` |  |
| `channels` | channels | menu | `all` | rgba, rgb, alpha, all, none |  | Layer the op applies to: rgb, rgba, alpha, all, none, <layer> or <layer>.<ch> |
| `mask_channel` | mask | menu | `none` | none, rgba.alpha, rgba.red, rgba.green, rgba.blue |  | Mask channel, e.g. rgba.alpha (none = no mask) |
| `inject` | inject | bool | `false` |  |  | Copy the mask into mask.a for nodes downstream |
| `invert_mask` | invert | bool | `false` |  |  |  |
| `fringe` | fringe | bool | `false` |  |  | Only apply the effect at the edges of the mask |
| `mix` | mix | float | `1` | 0 to 1 |  |  |

### Other knobs (Python, .nk and the assistant; not on the panel)

| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
| `gl_color` | Viewer Controls Color | float ×3 | `0, 0, 0` | 0 to 1 |  |  |
| `postage_stamp_frame` | Static Frame | int | `1` | -2147483648 to 2147483647 |  |  |
| `lifetimeStart` | Lifetime Start | int | `0` | -2147483648 to 2147483647 |  |  |
| `lifetimeEnd` | Lifetime End | int | `100` | -2147483648 to 2147483647 |  |  |
| `useLifetime` | Use Lifetime | boolean | `false` |  |  |  |
| `cached` | Cached | boolean | `false` |  |  |  |
| `bookmark` | Bookmark | boolean | `false` |  |  |  |
| `dope_sheet` | Dope Sheet | boolean | `false` |  |  |  |
| `clone_group` | Clone Group | string |  |  |  |  |
| `link_source` | Link Source | string |  |  |  |  |
| `link_overrides` | Link Overrides | string |  |  |  |  |
| `split_views` | Split Views | string |  |  |  |  |
| `skew_x` | Skew X | float | `0` | -3.4028234663852886e+38 to 3.4028234663852886e+38 | `skewX` |  |
| `skew_y` | Skew Y | float | `0` | -3.4028234663852886e+38 to 3.4028234663852886e+38 | `skewY` |  |
| `skew_order` | Skew Order | enum | `XY` | XY, YX |  |  |
| `invert_matrix` | Invert | boolean | `false` |  | `invert_matrix` |  |
| `shutter_custom_offset` | Custom Offset | float | `0` | -3.4028234663852886e+38 to 3.4028234663852886e+38 |  |  |
| `unpremult` | (Un)premult by | enum | `none` | none, rgba.alpha |  |  |
| `invert_unpremult` | invert | boolean | `false` |  |  | (Un)premultiply by 1 - alpha |
| `tracks_data` | Tracks | string | `[]` |  |  |  |

## Knob names in .nk scripts

| .nk knob | Knob here |
|---|---|
| `transform` | `transform_mode` |
| `skewX` | `skew_x` |
| `skewY` | `skew_y` |
| `shutteroffset` | `shutter_offset` |

Other .nk knobs use the same name here. See [.nk import](/docs/nuke-users/nk-import).

## Examples

Open these from **Help › Examples…**, or from the **?** menu in this node's Properties panel.

- **Tracker to CornerPin** (`examples/transform/tracker_cornerpin.oink`): Four points tracked on a moving plate, exported as an animated CornerPin that carries a text patch along with the move.


---
Sources: opencomp_core/nodes/tracking/tracker.py, opencomp_electron/src/components/properties/knobSchema.ts, opencomp_core/nodes/help/tracker.md, opencomp_core/nk/mapping.py
