Custom Look using 3d LUT in ACES


We are small VFX studio and are trying to introduce ACES in our pipeline. Most of the implementation went well so far and we are loving it, except for one road block.
I am struggling a bit to create a custom look in config file. To be precise, I am struggling with the transforms.

Currently I am using this text in config and colors look slightly saturated towards red:

  - !<Look>
    name: shot_look
    process_space: Input - ARRI - V3 LogC (EI200) - Wide Gamut    
    transform: !<FileTransform> {src: $SEQUENCE_$SHOT.cube, interpolation: tetrahedral}

I am know above text is not correct and needs one or more transforms before lut to convert it from log to linear. (if I am not wrong)

Alternatively: I came up with another solution of using pre converted lut. I converted above lut to linear lut using CMS pattern and generate node in nuke. I used this new lut with following config and it seemed to work fine.

  - !<Look>
    name: shot_look
    process_space: Raw    
    transform: !<FileTransform> {src: $SEQUENCE_$SHOT.cube, interpolation: linear, direction: forward}

I would like to implement the process where I can bypass the manual lut conversion process and have everything built in OCIO config. I would really appreciate if someone out here can guide me in right direction.

more info regarding footage:
read node is reading exrs in ACEScg.

I think you can add any pre or post conversion by making it a group transform.
In Blender’s config it’s formatted like this.

  - !<Look>
    name: Very High Contrast
    process_space: Filmic Log
    transform: !<GroupTransform>
            - !<FileTransform> {src: filmic_to_1.20_1-00.spi1d, interpolation: linear}
            - !<FileTransform> {src: filmic_to_0-70_1-03.spi1d, interpolation: linear, direction: inverse}

Adding !<ColorSpaceTransform> {src:ACES - ACES2065-1, dst:Input - ARRI - V3 LogC (EI200) - Wide Gamut }
pre lut file transform and the inverse after might do the trick but I haven’t tested it.

1 Like

I think it would be helpful to go back to how these LUTs are being created. Since a LUT is 0-1 range you need to have preLUT shapers to avoid clipping of values that go over 1. In Nuke you can do this by running your CMSTestPattern through an OCIOLogConvert (log to lin) which will do an inverse log. Then you have whatever grade you want, and then another OCIOLogConvert (lin to log) and then through a generateLUT node. The OCIOLogConvert will use the color space you have defined in the OCIO.config roles as compositing_log. Default for this is ADX but we’ve changed it to ACEScct in our config. (I suppose you could have it as ARRI LogC too, but I’m not clear why this would be desirable. Perhaps you can say more about this?). This chain will thus bake the pre & post LUT shapers into the cube file. To read that LUT file into Nuke you could use an OCIOfiletransform with the working space set to the compositing_log role to confirm it’s working as expected. You would then use this same color space in the “processing space” of the Look.

1 Like

Thanks Derek,

I was able to translate everything you said in OCIO configuration and it worked. Thanks a lot, that was helpful.