Browse the wiki

CG Animation Colour Pipeline

An overview on the ACES colour pipeline we are using for CG Animation projects, and how to set things up in applications such as Maya, Mari, Nuke, etc.

Suggested Reading

For CAVE CG Animation projects, we’ll be implementing an ACES colour pipeline. This is to ensure we work consistently across projects for all things colour related, and so that we have a larger gamut of colour to play with.

If you are new to ACES, it can be a pretty intimidating subject. Anything colour related is a hot potato in the CG world I find. Lukily for us, there are many docs and videos on ACES, from technical explanations to more artist-facing walkthroughs, so if ACES is new to you, I recommend you work through the following docs to become more acquainted with ACES:

CAVE ACES Config

At CAVE, our colour team have put together modified version of what you’d typically find online. This is a simplified config to create less confusion when setting things up, and has been tailored for better results when displaying content on sRGB monitors for output.

You can download the CAVE config using this link: CAVE_cgAnim_slim_aces_ocio_config

There are two colorspaces in this config:

  • Utility – sRGB – Texture: which is the sRGB Gamma curve and the sRGB primaries (so normal sRGB)
  • Utility – Curve – sRGB: which is the sRGB Gamma curve but uses ACEScg primaries

The first space (Utility – sRGB – Texture) will match most normal texture uses (hence the name) and will make interchange between apps such sa Substance Painter/Mari simpler. The latter (Utility – Curve – sRGB) uses the sRGB gamma curve but use wide gamut primaries, and would make interchange with Substance Painter/Mari more complicated. For most cases, we should be able to stick with: Utility – sRGB – Texture

…and I’d also recommend you download some colour checker charts to test your setup. For the below walkthroughs on setting up Maya, Nuke, etc, I’ll be using the ACEScg_ColorChecker2014.exr chart that has been very kindly provided by colour-science here: ColorChecker2014

Setting up your Applications

If you only need to stick to one config, you can hook this into your environment variables. However, as we’ll be working on a mix of VFX and CG Animation projects at CAVE, we’ll occasionally switch between different configs, and therefore we’ll show you how to manually set up your applications. In the future, we’ll be looking to create a set of tools that will automate this process.

Maya

Launch Maya and set your project. Next, go Windows > Settings/Preferences > Preferences, and click on the Color Management catergory.

Click on the folder icon to the right of OCIO Config Path and then select the config.ocio from the CAVE_cgAnim_slim_aces_ocio_config:

Make sure Use OCIO Configuration is enabled and check your Color Transform Preferences are set to:

  • Rendering Space: ACES – ACEScg
  • View Transform: sRGB (ACES)

If you click on the View Transform drop-down, you’ll notice we are only making available 3 transforms: sRGB (ACES), Raw (ACES) and Log (ACES).

The next thing to do is check that all looks good in the render. Below are the steps to create a macbeth geometry plane, and you can also grab the macbeth geo that I am using here: CAVE_prop_macbeth_model_prim_default_lod1_v001

Start by creating a polygon plane (Create > Polygon Primitive > Plane) and set the following:

  • Width to 27.900
  • Height: 21.000

Rename this plane to macbeth_GEO.

Next, hold down the right-mouse-button (RMB) over the plane and go: Assign New Material, and then select the aiFlat shader. In the Attribute Editor, rename the shader to: macbeth_MAT and then click on the checker input icon for Color.

Next,  select File and then add the ACEScg_ColorChecker2014.exr to the file input. As this is an exr file, make sure to set the Color Space to ACES – ACEScg. In the viewport, hit 6 to jump to textured mode and if the macbeth texture looks a bit funky, you’ll probably need to update the UVs on the geo.

Now to test this in render.

Maya/Arnold

Frame your macbeth chart and then launch the Arnold render window by going: Arnold > Arnold RenderView

Make sure the View Transform is set to sRGB (ACES) and hit render. If you get something like this, then you are good to go:

For more information on ACES Workflows in Maya/Arnold, check out the official docs here: Maya/Arnold ACES Workflow

Colour picking in Maya

When using the colour picker in Maya, you will see the one option for Mixing Color Space, which is Output – sRGB. This is being driven by the OCIO Roles:
  • color_picking: Output – sRGB
So with the color_picking role set to this, It is assuming that you’re in more of a Nuke/Comp/Matte Painting context where you want to do an inverse LUT operation to approximate full-dynamic range scene-linear content, rather than the scenario you have where you’re just doing diffuse 0.0-1.0 texture color picking.

Nuke

In Nuke, hit the S key on the keyboard to bring up the Project Settings window (or go Edit > Project Settings).

Then set the OCIO config to custom, and load the config.ocio file into the custom OCIO config slot.

To see how this looks on the colour checker image, drop down a Read node (R) in the NodeGraph and load ACEScg_ColorChecker2014.exr. Make sure the Colorspace is set to scene_linear (ACES – ACEScg) on the Read node, and your viewer lut is set to sRGB (ACES). Then press 1 on the keyboard to plug the image into the viewer and hopefully you get something like this:

Houdini

Coming soon!

Mari

Coming soon!

Substance Painter

Coming soon!

Substance Designer

Coming soon!

Photoshop

Coming soon!

Resolve

Coming soon!

Leave a Comment