Hi there!
I’m very new to ACES and OCIO, so please forgive me if I might come up with an obvious question. But searching through internet didn’t give me the answer that I am looking for, so I’m trying to present my issue here as clear and simple as possible.
We are switching to full OCIO color workflow based on ACES 1.3 to have correct color management in multiple DCCs.
Our first step is to convert our incoming plates into ACEScg. On a regular basis, we receive materiel that comes in different log spaces, e.g. ARRI LogC4 and Davinci Intermediate WideGamut, that has been shot with different cameras.
We have a little Nuke template that makes sure that every incoming material is converted correctly into ACEScg.
Now, we receive LUT files from the client that transform the look of the delivered plates into what it is supposed to look like in the edit. For all shots, those LUTs leave the colorspace in ARRI LogC4 (also for those drone shots that are coming from a different colorspace). We then, convert it back to ACEScg. So, in the end, I end up with a look definition in OCIO that looks like this (for the ARRI LogC4 case):
- !<Look>
name: shot_grade
process_space: ACEScg
description: Shot Grade
transform: !<GroupTransform>
children:
- !<ColorSpaceTransform> {src: scene_linear, dst: ARRI LogC4}
- !<FileTransform> {src: shot_grade.cube, interpolation: linear}
- !<ColorSpaceTransform> {src: ARRI LogC4, dst: scene_linear}
The shot_grade.cube
file is available inside a luts
folder for each shot and gets looked up automatically by OCIO using context variables. This works as expected for our ARRI LogC4 footage.
Now, we need to find a way to make this work with the footage coming in another log space as well.
The only way we found to have a dynamic workflow that does not need any further development is to bake the color conversions ACEScg → ARRI LogC4 and ACEScg → Davinci Intermediate WideGamut into LUTs and use the same dynamic file lookup mechanism as for the shot LUTs.
But we have 2 issues with that:
-
To have a correct result, we need to generate pretty heavy LUTs. We use the CMSTestPattern in Nuke and we need to go up to a cube size of 80 which ends up with a LUT of about 13MB. This does seem to take a little moment to “load” when switching to our ‘shot_grade’ look in Nuke, RV or other DCCs.
-
This does not work with overexposed footage. We get pretty strong clamping and end up with a completely wrong look.
Some ideas popped up:
- Might there be a way to convert the client LUTs so that they simply work in ACEScg? But I guess, the working in a non-log colorspace makes problems in high exposure situations as well.
- Use context variables to drive the first color space transform dynamically. That would be an option but needs additional development to set this environment variable correctly. We would like to avoid this.
- One solution seems to be to use as working space the original log space when applying our LUT. But this does not really help us since we can reproduce this only in Nuke (couldn’t find any ‘working space’ option on a file transform in OCIO) and we end up again with a color space that needs to be set somehow.
Is there anything basic that I’m missing here? I’m pretty sure that a lot of VFX houses have to deal with such situations. How do they do this?
Any help and input would be more than welcome!
Thanks a lot for you attention!
Greets,
Carlo