C_Tracker
C_Tracker automatically extracts animation data from the pan, tilt, and roll of a pattern to simplify and accelerate the process of stabilization and matchmoving. You can then use user defined tracks to improve the result or lock stabilization to particular regions.
Note: C_Tracker differs from vanilla Nuke's tracker in that it can track in latlong space, meaning features are tracked as they pass the edge of the frame when the image wraps around.
Inputs and Controls
Connection Type |
Connection Name |
Function |
Input |
src |
The sequence you want to track. |
mask |
An optional image to use as a mask. Use the Mask control to determine how the mask affects tracking. At first, the mask input appears as triangle on the right side of the node, but when you drag it, it turns into an arrow labeled mask. If you cannot see the mask input, ensure that the Mask control is disabled or set to None. |
Control (UI) |
Knob (Scripting) |
Default Value |
Function |
C_Tracker Tab |
|||
Local GPU |
gpuName |
N/A |
Displays the GPU used for rendering when Use GPU if available is enabled. Local GPU displays Not available when: • Use CPU is selected as the GPU device in the Preferences. • no suitable GPU was found on your system. • it was not possible to create a context for processing on the selected GPU, such as when there is not enough free memory available on the GPU. You can select a different GPU device, if available, by navigating to the Preferences and selecting an alternative from the GPU Device dropdown. Note: Selecting a different GPU requires you to restart Nuke before the change takes effect. |
Use GPU if available |
useGPUIfAvailable |
enabled |
When enabled, rendering occurs on the Local GPU specified, if available, rather than the CPU. Note: Enabling this option with no local GPU allows the script to run on the GPU whenever the script is opened on a machine that does have a GPU available.
|
Input |
|||
Frame Range |
trackRange |
Input |
Sets the range of frames processed by C_Tracker: • Input - the default value, sets the frame range to the length of the sequence attached to the src input. • Global - sets the tracking frame range to the range set in the Project Settings > frame range controls. If no frame range is defined, the frame range of the first image you read in is used as the Global frame range. • Custom - sets a tracking range of frames described by the startFrame and endFrame fields. |
startFrame |
Dependent on Project Settings |
When Frame Range is set to Custom, this control sets the first frame to track in the footage. |
|
endFrame |
When Frame Range is set to Custom, this control sets the last frame to track in the footage. |
||
Mask |
ignoreMask |
None |
Set the mask type to exclude areas of the sequence when tracking: • None - none of the footage is ignored. • Source Alpha - use the alpha channel of the source clip to define which areas to ignore. • Source Inverted Alpha - use the inverted alpha channel of the source clip to define which areas to ignore. • Mask Luminance - use the luminance of the Mask input to define which areas to ignore. • Mask Inverted Luminance - use the inverted luminance of the Mask input to define which areas to ignore. • Mask Alpha - use the Mask input alpha channel to define which areas to ignore. • Mask Inverted Alpha - use the inverted Mask input alpha channel to define which areas to ignore. |
Tracking Space |
trackingSpace |
Default |
Selecting LatLong tracks in latlong space instead of treating the sequence as rectilinear, which can improve track quality in polar regions and increase the number and length of tracks around at sides of the frame where the latlong wraps around. Note: Tracking in LatLong space can slow down tracking considerably. |
Analysis |
|||
Track |
autoTrack |
N/A |
Click to begin auto-tracking features in the specified frame range. |
Reject |
deleteOutliers |
N/A |
After Solving, click to delete all tracks in the Viewer with an RMS error above the Error Threshold limit. |
Delete Selected |
deleteSelected |
N/A |
After Solving, click to delete all currently selected tracks in the Viewer. |
Delete All |
deleteAll |
N/A |
After Solving, click to delete all tracks in the Viewer. |
Solve Using |
solveType |
Auto-tracks |
Sets the type of tracking used to solve the camera: • Auto-tracks - only the auto-generated tracks are used to solve the camera. Auto-tracks can produce a good overall stabilization result. • User tracks - only manually added, user tracks are used to solve the camera. User tracks can help lock down stabilization in particular areas of the sequence. • Combined - a combination of auto- and user tracks are used. |
Solve |
solveButton |
N/A |
Click to solve the camera using the tracked features in the sequence. |
Solve Error |
solveRMSError |
0 |
Sets the level at which tracks are rejected by the solve. If you find you have too few green tracks after solving, try raising the Error Threshold and resolving. |
Error Threshold |
validationErrorThreshold |
0.4 |
Sets the solve error level permitted, below which solved tracks are rejected. Reducing the allowed error level dynamically rejects tracks that fall out side the new level, allowing you to easily reject them and refine the solve. |
Export |
|||
Export Menu |
exportMenu |
C_SphericlaTransform (Stabilise) |
Sets the nodes to output when you click Create: • C_SphericalTransform (Stabilise) - creates an expression linked C_SphericalTransform containing Pan, Tilt, and Roll data to stabilize the output. • C_SphericalTransform (Match-move) - creates an expression linked C_SphericalTransform containing Pan, Tilt, and Roll data to match-move content. • C_SphericalTransform (Stabilise, Metadata only) - creates an expression linked C_SphericalTransform containing containing the transforms in metadata form to stabilize the output. • C_SphericalTransform (Match-move, Metadata only) - creates an expression linked C_SphericalTransform containing the transforms in metadata form to match-move content. |
Create |
exportButton |
N/A |
Click to create the export specified in export dropdown. |
Link Output |
linkOutput |
enabled |
When enabled, tracks and points are updated when the solve is updated. If you disable linking, the expression link between the CameraTracker and Camera nodes is disconnected. |
User Tracks Tab |
|||
Tracks |
|||
e |
N/A |
enabled |
When enabled, the associated track anchor in the Viewer is used to track a feature from the input. |
name |
N/A |
track 1 |
Sets the track name. |
X |
N/A |
Dependent on source input |
Adjusts the x coordinates of the associated track anchor’s center. |
Y |
N/A |
Dependent on source input |
Adjusts the y coordinates of the associated track anchor’s center. |
offsetX |
N/A |
0 |
Sets the offset amount, in pixels, between the tracking anchor and the feature position on the x and y axes. This is especially useful when the feature you want to track is obscured or otherwise unavailable, enabling you to track another pattern to produce the required tracking data. |
offsetY |
N/A |
0 |
|
size |
N/A |
10 |
Sets the size of the pattern tracking area, in pixels. |
weight |
N/A |
100 |
Sets the weight associated with this user track. User tracks are given considerably more weight than auto tracks. |
error |
N/A |
0 |
Displays the overall track error rating. |
Add track |
addTrack |
N/A |
Click to add a new track and anchor to the Viewer. |
Delete tracks |
deleteTracks |
N/A |
Click to delete all selected tracks. |
Select all |
selectAll |
N/A |
Click to select all tracks in the Tracks list. |
Average tracks |
averageTracks |
N/A |
Click to average all selected tracks together into a single new track. This can be especially useful for stabilization tracking. |
Settings Tab |
|||
Features |
|||
Number of Features |
numberFeatures |
300 |
Sets the maximum number of features to track in each frame. Increasing the number of tracks per frame can help when solving difficult sequences. |
enforce |
enforceNumberFeatures |
disabled |
When enabled, the number of features at any frame is enforced, even if some tracks must stop early during back-tracking. Enabling enforce can produce a more even spread of active tracks throughout the sequence. When disabled, the number of features can fluctuate up to the maximum. |
Feature Spread |
featureSpread |
0.1 |
Sets the spread of features over the image. A high value selects points that are distinct in local regions, whereas lower values select more prominent points in areas of high contrast. |
Feature Separation |
featureSeparation |
20 |
Sets the distribution of features in relation to each other. High values spread features at even distances over the image. If you to increase the Number of Features, it's a good idea to reduce Feature Separation. |
enforce |
enforceFeatureSeparation |
disabled |
When enabled, Feature Separation is maintained even at the cost of fewer tracks. When disabled, Feature Separation can change without sacrificing tracks. |
Refine feature locations |
refineFeatures |
disabled |
When enabled, feature points are locked to corners in the image, where possible, which can improve track quality in some sequences. When disabled, feature points are not locked. |
Preview Features |
previewFeatures |
disabled |
When enabled, preview the potential features available for tracking. This allows you to check that the features cover the image. If not, tweak the feature controls before tracking. |
Tracking |
|||
Track forwards and backwards |
trackFwdAndBwd |
disabled |
When enabled, features in the sequence are tracked forwards and then backwards, which can improve track quality in some cases. When disabled, features in the sequence are tracked forwards only. Note: Enabling this control can slow down tracking considerably. |
Patch Size |
patchSize |
14 |
Sets the size of the image patch around feature points. Increasing the patch size can improve track quality, but larger patches increase processing time. |
Minimum Length |
minTrackLength |
10 |
Sets the minimum length a track must reach before terminating. Increasing the track length can help to avoid short tracks in long sequences with slow camera movements, improving the solve. |
Track Error Threshold |
matchThreshold |
0.7 |
Sets the image change threshold a feature track can tolerate before terminating. Reducing the Track Threshold makes tracking more tolerant to image changes, producing longer tracks. |
apply to user tracks |
userTracksMatchEnforced |
enabled |
When enabled, the Track Error Threshold applies to user tracks as well as auto-tracks. When disabled, the Track Error Threshold only applies to auto-tracks. |
Track Smoothness |
smoothnessThreshold |
0.1 |
Sets the threshold for smooth track generation. Increasing the threshold terminates tracks that glitch over time, which can reduce the number of poor tracks in complex sequences. |
Track Consistency |
consistencyThreshold |
0 |
Sets the threshold for consistent track generation. Increasing the threshold ensures that track motion is locally consistent, which can reduce the number of poor tracks in complex sequences. |
Solve |
|||
Keyframe Overlap |
keyframeOverlap |
0.85 |
Sets the track overlap threshold a track can tolerate before starting a new keyframe. Increasing Keyframe Overlap can help to avoid abrupt jumps in estimated camera rotation. Decreasing Keyframe Overlap lower can help to reduce camera drift. |
Validation Threshold |
validationErrorThreshold |
0.2 |
Sets the threshold, in degrees, for track validation during the Solve. Increasing this value uses more auto-tracks, that would have otherwise been terminated, in the solve. |
Refine camera motion |
globalOptimisation |
disabled |
When enabled, refine the estimated camera motion in the solve using global optimization. This increase the solve time significantly, but it may improve the solve accuracy. When disabled, no optimization is performed. |
Zoom window |
|||
show zoom window |
zoom_window_behavior |
always |
Sets when the zoom window is visible in the Viewer: • always - the zoom window is always visible. • on track move - only display the zoom window when a track changes. • when tracking - only display the zoom window during tracking. • when tracking or track change - only display the zoom window during tracking or when a track changes. • never - the zoom window is never displayed. |
zoom window size / mag. |
zoom_window_size |
200px |
Sets the size of the zoom window. |
zoom_magnification_size |
x1 |
Sets the magnification in the zoom window. |
|
zoom window filter |
zoom_window_filter_behaviour |
on playback |
Sets when filtering is applied to the zoom window: • always • on playback • never Note: The filter applied is the same as that selected on the Transform tab, and can produce a more visually stable track. It can make track positioning more difficult, however. |
Transform Tab |
|||
Reference Frame |
referenceFrame |
1 |
When Transform is set to Stabilize or Match-Move, sets the frame in the input sequence to use as the reference or identity frame. |
Set to current |
N/A |
N/A |
Click to set the current frame as the reference or identity frame. |
Pan tilt roll (Stab) | panTiltRoll | 0, 0, 0 | Displays the solved stabilization pan, tilt, and roll in degrees. |
Pan tilt roll (MM) | panTiltRoll | 0, 0, 0 | Displays the solved match-move pan, tilt, and roll in degrees. |
Output |
|||
Transform |
transformType |
None |
Sets the type of transform to apply. Note: The transform control must be set to None when calculating tracks. • None - no transformation is applied to the input image. • Stabilize - transforms the image so that the tracked points do not move. • Match-Move - transforms another image so that it moves to match the tracked points. |
Filter |
reampleType |
Cubic |
Select the filtering algorithm to use when remapping pixels from their original positions to new positions. As a general guideline, the filters increase in quality at the cost of processing time as you move down the list. Bilinear filtering is the fastest and Lanczos the sharpest. |
Python Tab (These controls are for Python callbacks and can be used to have Python functions automatically called when various events happen in Nuke.) |
|||
before render |
beforeRender |
none |
These functions run prior to starting rendering in execute(). If they throw an exception, the render aborts. |
before each frame |
beforeFrameRender |
none |
These functions run prior to starting rendering of each individual frame. If they throw an exception, the render aborts. |
after each frame |
afterFrameRender |
none |
These functions run after each frame is finished rendering. They are not called if the render aborts. If they throw an exception, the render aborts. |
after render |
afterRender |
none |
These functions run after rendering of all frames is finished. If they throw an error, the render aborts. |
render progress |
renderProgress |
none |
These functions run during rendering to determine progress or failure. |