C_ColourMatcher
C_ColourMatcher aims to produce a global gain-based color correction across all the views in a rig to balance out differences in exposure and white balance. It solves across all cameras to find the minimum required gain changes to ensure color similarity.
Note: C_ColourMatcher does not compensate for color shifts not resulting from exposure- or gain-type differences. It also does not deal with gamma- or offset-type differences.
Color matching relies on solve data and should be performed before stitching the solved camera output together, so ideally, place C_ColourMatcher between C_CameraSolver and C_Stitcher.
Inputs and Controls
Connection Type |
Connection Name |
Function |
Input |
Source |
A preview sequence from C_CameraSolver to color correct. |
Control (UI) |
Knob (Scripting) |
Default Value |
Function |
C_ColourMatcher 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. The output between the GPU and CPU is identical on NVIDIA GPUs, but using the GPU can significantly improve processing performance. CaraVR supports AMD GPUs on late 2013 Mac Pro 6,1, mid 2015 Mac Pro 11,5, and and late 2016 MacBook Pro 13,3, running OS X 10.9.3 'Mavericks', or later. While, in some cases the bit-wise equality between GPU and CPU holds, for some operations there are limitations to the accuracy possible with this configuration. 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. GPU processing also requires certain NVIDIA and AMD drivers. For more information on the minimum requirements, please refer to the Nuke Release Notes available in Help > Release Notes. |
Input |
|||
Projection |
inputProjectionType |
Default (source) |
Sets the input projection type: • Default (source) - the source input is connected to a C_CameraSolver and uses the images and metadata to color correct the output. • Latlong - the source input is connected to a panorama that has already been converted to latlong space. |
Keying |
|||
Match Keys |
Key number |
1 |
Displays the total number of stitch keyframes added to the sequence. |
Key count |
1 |
Displays the current stitch keyframe. |
|
|
N/A |
N/A |
Click to jump to the previous keyframe. |
|
N/A |
N/A |
Click to jump to the nextkeyframe. |
|
N/A |
N/A |
Click to add a keyframe at the current frame in the sequence. |
|
N/A |
N/A |
Click to delete the keyframe at the current frame in the sequence. |
Step |
keyStep |
500 |
Sets the interval between keyframes for the Key All button. |
Key All |
addAllAnalysisKeys |
N/A |
Click to add keyframes to the sequence at intervals set by the Step control. |
Delete All |
deleteAllAnalysisKeys |
N/A |
Click to delete all keyframes from the sequence. |
Import |
importAllKeys |
N/A |
Click to import existing keyframes automatically from C_CameraSolver, C_ColourMatcher, or C_Stitcher nodes in the current script. Note: Importing keyframes deletes any existing keyframes. |
Analysis |
|||
Match |
matchType |
Exposure |
Sets the type of match to calculate: • Exposure - calculates exposure differences and corrects across all cameras. • Exposure and Colour - calculates exposure and color differences and corrects across all cameras. |
Analyse |
solveGainCompensation |
N/A |
Click to analyze the selected match type across all cameras. |
Reset |
deleteGainCompensation |
N/A |
Click to delete the calculated analysis. |
Output |
|||
Gains |
gainsOutput |
1 |
Displays the gains per view once the analysis pass is complete. |
Exposure |
globalExposure |
0 |
Adjusts the global exposure across all cameras. |
Format |
outputFormat |
dependent on Compositing environment Project Settings |
Sets the output resolution passed down the node tree. Typically, you would set the format globally in the Project Settings, but this control overrides the global setting. |
Converge |
convergenceDepth |
10 |
Sets the depth at which the cameras overlap, allowing you to bring particular areas in the scene into focus to check color matches. |
Auto |
autoConvergenceDepth |
enabled |
When enabled, the Converge control is set automatically by upstream metadata. When disabled, you can use the Converge control to manually adjust what convergence depth is in focus. |
Export |
|||
Export menu |
exportMenu |
STMaps (split) |
Sets the export nodes to add to the Node Graph: • Grades (split) - creates a single Grade and Exposure node containing the calculated exposure and color differences. • Grades (separate) - creates separate Grade and Exposure nodes for each view containing the calculated exposure and color differences. • OCIO CDL Transforms (split) - creates a single OCIOCDLTransform and Exposure node containing the calculated exposure and color differences. • OCIO CDL Transforms (separate) - creates separate OCIOCDLTransform and Exposure nodes for each view containing the calculated exposure and color differences. |
Create |
exportButton |
N/A |
Click to create the export specified in the export dropdown. |
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. |