Create a ticket

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


Images in Nuke and NukeStudio can be viewed with different display transformations applied. These transformations take an image from the linear colourspace that Nuke uses internally to an output device’s colourspace. 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 NukeStudio/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 the Nuke Online Help.

The Gizmo consists of an OCIOColorSpace node to transform the image colourspace from linear to AlexaV3LogC, and an OCIOFileTransform node using a LUT from the Arri LUT Generator to take the colourspace 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:


NukeStudio's Timeline Viewer

For the Timeline Viewer on the NukeStudio 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 colourspace 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 this:




   - !<View> {name: None, colorspace: raw}

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

   - !<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.

Setting the OCIO environment variable: To do this for example on Windows, open a Command Prompt and enter:

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

Then run the Nuke executable from the same command prompt by entering for example:

"C:\Program Files\Nuke10.0v4\Nuke10.0.exe"


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, rec709, rec1886, None]

For example:

active_views: [sRGB, 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. 

Was this article helpful?

We're sorry to hear that

Please tell us why
13 out of 18 found this helpful