This tutorial provides information on how to configure Color Management to work with the OpenColorIO implementation of the Academy Color Encoding System (ACES), as well as a summary of what ACES is. The article is divided into two parts, theoretical and practical. The theoretical part will help you understand some of the basics of ACES, and how it works, before you get down to the practical part, and consider some of the nuances in setting up Color Management.
What is ACES and Why is it Recommended?
The Academy Color Encoding System (ACES) - is a free, expandable, device-independent color management and image sharing system developed under the auspices of the Academy of Motion Picture Arts and Sciences. It is also a set of technical specifications for working with color, coding, and transformation. This system allows you to store all the data of digital images in the same mathematical space, which allows a more consistent workflow during the transfer of working material between different departments. It is also important that ACES allows you to create archival materials with a high dynamic range and wide color gamut, even taking into account possible future devices.
ACES 1.1 (current release). Some of its features include:
- Wide range of color and light, exposure.
- Predictable image display on a wide range of display devices.
- Preserving the full range of highlight, shadows, and colors.
- Simplifying the matching of images from different cameras.
- More accurate color display with no incorrect color values.
- Work in Linear color space.
- No over highlight and clamp, on bright areas of the image.
- And more...
ACES consists of several components:
- Input Device Transform (IDT) - Color conversion from input material. More properly called an Input Transform.
- Reference Rendering Transform (RRT) - Color transformation from scene-referred to display-referred space, using an S-shaped tone curve, image preparation for output.
- Output Device Transform (ODT) - Transforms to an output device, a transformation such as Rec. 709, DCI-P3, Rec.2020.
In practice, the RRT and ODT are combined and called an Output Transform.
ACES Output Transform Choices
One of the benefits of the ACES system is that it provides Output Transforms for a wide assortment of displays and projectors. You'll want to choose the appropriate Output Transform for your situation based on the following factors:
- Your device (monitor or projector) and how it is calibrated. This could range from a simple sRGB monitor to an HDR monitor calibrated to Rec.2100-PQ, to a digital projector calibrated to DCI-P3. Note that the ACES system documents the viewing environment to be used for each type of device. For monitors such as sRGB or Rec.709, this is a dim environment (rather than a dark environment).
- Your creative white point. The native white point of ACES is D60 and most cinema-oriented projects use this white point. However ACES also provides transforms that adapt to D65, which is commonly used for video-oriented projects. Ideally, the display device would be calibrated to match the creative white point, but this is not always possible. In those cases, the ACES system provides Output Transforms labeled "D60 sim." to simulate the D60 white point on a device calibrated to another white point (such as D65 or DCI).
The D60 native white point of the ACES system was chosen because experiments showed that humans subjectively preferred D60 over other white points such as D65. It is also closer to the white point of the motion picture system. If the creative white chosen for your project is D60 but you need to work on a device calibrated to D65, the "D60 sim." version of the Output Transform for your device will give you a more colorimetrically accurate result. Nevertheless, some people prefer using the non-"D60 sim." version since having the image displayed at D60 but the surrounding user interface displayed at D65 can make color judgments more difficult.
ACES Color Spaces
Gamut comparison (image courtesy of Haarm-Pieter Duiker and Thomas Mansencal)
ACES contains different color spaces, we will look at the main ones:
- ACES 2065- 1 - This is a wide-range Linear, color space, with a larger coverage than the human eye, so it is used for archival copies and transfer of material between departments.
- ACEScc and ACEScct - Logarithmic color spaces intended for color correction.
- ACEScg - This is a Linear space for working with CG/VFX. This is the space you need to use as the main color space for working with color set-up and light in your rendered images. More information is available here.
The main color spaces for conversion will be:
- Utility-Linear - Rec.709 or sRGB - choose this for Linear images that use the Rec.709 or sRGB primaries/gamut (which are the same).
- Utility-RAW - for images that do not require conversion (scalar masks, Displacement, Roughness).
- Utility-Rec.709-Camera - for sRGB images, 8-16 bit (lightmaps, matte paints), (JPEG, PNG).
- Utility-sRGB - Texture - recommended color space for sRGB image textures 8-16 bit (JPEG, PNG).
ACEScg - Color space for images that are already converted to ACEScg.
When converting images to Utility-sRGB-Textures, they will become darker than the original. This is normal and gives you the opportunity to work with higher light values without losing contrast.
Remember, if you create a project with ACEScg as the rendering space, you will need to set the Color Space so that all images get correctly converted to ACEScg. Images in other color spaces will look wrong without conversion.
- First, you will need to download the OpenColorIO (OCIO) configuration package for core ACES transforms https://github.com/imageworks/OpenColorIO-Configs/tree/master/
in Katana you can set up the OCIO color management by creating an Arnold material of type 'colorManager' and then select 'color_manager_ocio', where you can configure it based on your config and preference. Then in your 'ArnoldGlobalSettings' under 'Misc Settings' you can point the 'color_manager' slot to the material node or scene graph location. Then when you set up your render passes using 'RenderOutputDefine' you can select the target 'colorSpace' for the given output.