Q100196: Applying a custom Viewer Process in Nuke and Nuke Studio/Hiero



Images in Nuke and Nuke Studio can be viewed with different display transformations applied. These transformations take an image from the linear colorspace that Nuke uses internally to an output device’s colorspace. The transformations are defined in the OCIO configuration file as device-specific look-up-tables (LUTs).

This article describes how to apply custom LUTs in the Node Graph Viewer in Nuke/NukeX as well as the Timeline Viewer in Nuke Studio/Hiero, outlining the differences.



Nuke's Node Graph Viewer

To apply a custom display transformation in the Viewer you need to register a new Viewer Process that uses your custom LUT.  How this can be done is described in detail in the Creating Custom Viewer Processes section of the Nuke Online Help.



This example uses a AlexaV3LogC to Rec709 LUT for the custom Viewer Process, by creating a Gizmo and registering it as a Viewer Process as described in the Using a Gizmo as a Custom Viewer Process section of Nuke's online documentation.

The Gizmo consists of an OCIOColorSpace node to transform the image colorspace from linear to AlexaV3LogC and an OCIOFileTransform node, using a LUT from the Arri LUT Generator, to take the colorspace from AlexaV3LogC to Rec709.

The Gizmo content would look like:


Once the Gizmo is registered as a Viewer Process, it will be available as a display transform in the Viewer Process menu as shown:



Nuke Studio's Timeline Viewer

For the Timeline Viewer on the Nuke Studio side, the same display transform can only be added by modifying the OCIO configuration file. The nuke-default configuration can be found in the Nuke installation directory under:




1. Copy the config.ocio file as well as the “luts” folder into a convenient location, for example:


2. Place the custom LUT to be used as a display transform inside the luts folder

3. Edit the config.ocio file in a text editor as described below:

To mimic the Viewer Process from the Nuke example above, add the following colorspace definition to the end of the config.ocio file:

- !<ColorSpace>
name: AlexaToRec709
from_reference: !<GroupTransform>
- !<ColorSpaceTransform> {src: linear, dst: AlexaV3LogC}
- !<FileTransform> {src: AlexaV3_K1S1_LogC2Video_Rec709_EE_nuke3d.cube, interpolation: linear}

Also append the line

- !<View> {name: AlexaToRec709, colorspace: AlexaToRec709}

to the displays section of the config file, so that it looks like the following:

- !<View> {name: None, colorspace: raw}
- !<View> {name: sRGB, colorspace: sRGB}
- !<View> {name: sRGBf, colorspace: sRGBf}
- !<View> {name: rec709, colorspace: rec709}
- !<View> {name: rec1886, colorspace: Gamma2.4}
- !<View> {name: AlexaToRec709, colorspace: AlexaToRec709}


Please see the OCIO documentation about config-syntax for more information on modifying the config file.


4. To use your custom OCIO config, set the OCIO environment variable to point to the customized config.ocio file. 

For example, on Windows, you can do this by first opening Command Prompt and entering the following command:

set OCIO=C:\your-user\Nuke\OCIO\config.ocio

Then run the Nuke executable from the same command prompt:

"C:\Program Files\Nuke13.1v2\Nuke13.1.exe"

For more information about setting environment variables, please refer to our Q100015: How To Set Environment Variables  article.


Alternatively, you can set use your OCIO config by instead navigating to Project > Edit Settings > Color Management and changing the OpenColorIO Config dropdown to custom and setting the path to point to your config.ocio file:



Nuke 12 and active_views

As of Nuke 12, the active_views list will now be respected, and this controls which views are visible and the order in which they appear.

So for the custom LUT to appear in the Viewer, you will need to append the LUT to the active_views list in the OCIO config:

active_views: [sRGB, sRGBf, rec709, rec1886, None]

For example:

active_views: [sRGB, sRGBf, rec709, rec1886, AlexaToRec709, None]

This line is also optional and, by default, will set all views to be visible and will respect the order of the views under the display. So if you wish for all LUTs to be visible, you could simply delete this line. 

    We're sorry to hear that

    Please tell us why