OCIO setup referring to the result in Nuke nodegraph

Hi guys,

I am new to customizing the config.ocio for Nuke production and I am now having a very hard time. Wish I can get some help from you guys, very appreciated!!

I am trying to set up a custom viewer process for the show, where I can get the desired look via nodegraph, under the native sRGB viewer process.

Nuke nodegraph setup (workingspace: acecg) is as following:

image(AP0) > OCIOcolorspace (acescg> arri logc EI800 wide gamut) > OCIOFileTransform (file: lut.cube, workingspace: acescg) > OCIOcolorspace ( output - rec709> acescg)

In config ocio, I thought it would easily work by just adding few lines in the original Output- sRGB part.

config ocio setting:

displays:
ACES:
- !<View> {name: sRGBshow, colorspace: Output - sRGBshow}

active_views: [sRGBshow]
colorspaces:
  - !<ColorSpace>
    name: Output - sRGBshow
    family: Output
    equalitygroup: ""
    bitdepth: 32f

    allocation: uniform
    allocationvars: [0, 1]
   
    from_reference: !<GroupTransform>
      children:	 
        - !<ColorSpaceTransform> {src: ACES - ACEScg, dst: Input - ARRI - V3 LogC (EI800) - Wide Gamut}
        - !<FileTransform> {src: lut.cube, interpolation: linear}
        - !<ColorSpaceTransform> {src: Output - Rec.709, dst: ACES - ACEScg}
        - !<FileTransform> {src: Log2_48_nits_Shaper_to_linear.spi1d, interpolation: linear, direction: inverse}		
        - !<FileTransform> {src: Log2_48_nits_Shaper.RRT.sRGB.spi3d, interpolation: tetrahedral}

However, the results were not the same.
I though it might be due the lut.cube, so I also tried to remove the “FileTransform” line, but i found that the “ColorSpaceTransform” itself already not giving the same result as nuke nodegraph
Does anyone know where I did wrong? Sorry for a long post and thank you guys for the help!

If I’m not mistaken the transforms need to be going from and to ACES 2065-1 which all transforms do. ACEScg is only the working space.

I know @Derek has a good tutorial on using showlooks that were made including display transforms in ACES. He also has a template ocio setup for it. Video series: ACES in VFX for indy filmmakers

Exactly. In Nuke you need therefore to have an extra step since it’s working in ACEScg. The OCIO config would always be “working” in AP0 so you’d never do into ACEScg there. That tripped me up at first too!

@lam_chigeo
Could you say more about your intent? Are you beginning with footage in linear or log?
Are you wanting to apply a LUT that was made to be applied to ARRI log and use that for your output display?

If so, then as @Shebbe mentioned I have an example config for this that uses the display "Non-Color Managed DPX Workflow “DPX Shot Look” that you could take a look at. This is covered in the second half of this video (around 5min mark). A link to the OCIO config is in the video description.

Thanks Shebbe and Derek for your reponse and i apologize for very late reply since I was busy doing something else, but i really appreciate your kindness!!

Derek:
I am given by the client a linear exr
And yes, the LUT is supposed to applied to an ARRI log and I am going to set it as my output display.

the nodegraph process i mentioned “”““image(AP0) > OCIOcolorspace (acescg> arri logc EI800 wide gamut) > OCIOFileTransform (file: lut.cube, workingspace: acescg) > OCIOcolorspace ( output - rec709> acescg)””“” <<<<this is the instruction that the client showed us how to correctly apply the LUT in Nuke

I have also watched Derek’s tutorial, forgive me I am still not sure if it is my case because I couldn’t see where Derek registered the display as “DPX shot look” in order to get it appear in Nuke?

Also there is another big problem, in this show, our studio is not going to use Nuke13 which supports OCIOv2 the tutorial is using… Can I recreate the same result in Nuke12?

Sorry for having so many confusion here. Will be so happy to have you guys replied, thanks!

Yes it should also be doable in an OCIOv1 config.

I’d suggest just trying replacing the ACEScg bits in your OCIO colorspace with ACES - ACES2065-1 and seeing of that matches your Nuke.

colorspaces:
  - !<ColorSpace>
    name: Output - sRGBshow
    family: Output
    equalitygroup: ""
    bitdepth: 32f
    allocation: uniform
    allocationvars: [0, 1]
   
    from_reference: !<GroupTransform>
      children:	 
        - !<ColorSpaceTransform> {src: ACES - ACES2065-1, dst: Input - ARRI - V3 LogC (EI800) - Wide Gamut}
        - !<FileTransform> {src: lut.cube, interpolation: linear}
        - !<ColorSpaceTransform> {src: Output - Rec.709, dst: ACES - ACES2065-1}
        - !<FileTransform> {src: Log2_48_nits_Shaper_to_linear.spi1d, interpolation: linear, direction: inverse}		
        - !<FileTransform> {src: Log2_48_nits_Shaper.RRT.sRGB.spi3d, interpolation: tetrahedral}

Thanks Derek! It works after following your tricks and also specifying “working_space: acescg” in "< FileTransform > ".

But here is one thing I am not so sure about: since the footage from the client is quite dark (it is a temp footage), i used to compare the results(config.ocio vs nodegraph) with 3 stop exposure gain after all color transforms, I found in this way the difference is quite huge. However, if I don’t change the exposure, I can get the identical results.
I assumed both ways should be doing the same transforms so I am surprised to see the difference. Is this case normal?

Thank you very much!

If you want to brighten a shot for reference it’s best done in linear before the display transform.
I can’t see your exact setup of both but maybe doublecheck it with the viewer set to raw and manually add the display transforms on node level to visually see if all the operations steps are the same.

@Derek in your suggested color space code you have:

! {src: lut.cube, interpolation: linear}

shouldn’t this be tetrahedral in this case for what the LUT is doing?

Would love to learn more about this. Can you say more?

I was hoping you’d be able to teach me hehe. I thought 3d LUTs should be interpolated trilinear or tetrahedral with the latter giving best accuracy. Personally don’t know much more on that on a technical level.

1 Like

Shebbe,

thanks for your advice. I wish you won’t mind if I ask how I can test the config.ocio on a node level?

Since originally the working space of Nuke is acescg, and my node setting was:
! {src: acescg, dst: Input - ARRI - V3 LogC (EI800) - Wide Gamut} which did not work

And now the src colorspace is changed:
! {src: ACES - ACES2065-1, dst: Input - ARRI - V3 LogC (EI800) - Wide Gamut}
Is it possible for me to test this change on a node level? Is it what you mean? Much appreciated for the help!!

Ah sorry it wasn’t clear, I meant having the showlut version also loaded on an ocio node instead of viewing both node trees through the global OCIO config where the output on the viewer is also a transform. So basically move what the viewer lut is doing to a dedicated ocio node at the end. Hope that clarifies it. I tend to be bad at explanations :stuck_out_tongue:

[edit] I don’t have Nuke here but this is what I’m talking about. Is yours setup like this? I don’t think it should give different results then.
[edit 2] realize my read in assumption was an ARRI plate but it would just be the IDT for whatever material you are working with.

Nice and clear explanation with the picture, Shebbe!

Okay so after different combinations of test, I believe the colorspace and file Transforms are doing right.

For now I decide to accept the fact that it will cause difference if I place the exposure gain in the end (I also did couple of test about it and also Shebbe you pointed out that it is not suggested).

So far I am happy with the result and I cannot express how grateful I am to @Shebbe and @Derek . I think I would need forever to find out the answer without any guidance, thank you very much!!

So happy to hear it was helpful!

Right, not just for exposure adjustment, but frankly everything should be in the scene-linear working space in Nuke. Otherwise the math will be wrong.

Regarding dark footage, we get that a lot, and I’d suggest that you get some of the ACES sample footage and have a look at it through these transforms. That will give you an expected “ground truth” to start from.

Let me add that the most important principle here is the idea that VFX returns a plate to the client exactly as it was received, only changing the pixels where the VFX is added. VFX should not be doing any grading. At the same time, when you get an under exposed plate the VFX artists may want to do temporary adjustments to how you view a comp, viewing with increased exposure, or viewing it in log for example. For this reason I added such views into the Output transforms of my VFX config using OCIOv2 functionality. If you are using an OCIOv1 config you can still do this using the gamma and exposure sliders above the viewer in Nuke. These are applied before the Output Transform on the Viewer and also have no impact when you write the file.

Derek,

Oh no!!! You really made a very detailed explanation, I learned a lot!! :smiling_face_with_tear:

I will bear these in mind and also check the ACES sample footage for more tests.

Though we are not going to have the project with OCIOv2, I will take a look at it as well. The new features seem fun and useful.

Again, cannot thank you enough, Derek!!

1 Like