top of page
  • Writer's pictureDiana Lee

ACES for the Lighting Artist

Color management is a beast of a topic to try to digest. During the first six months of using color management most explanations went right over my head! If that has happened to you, don’t worry. You can use color management without understanding all the technical details. It's really just a simple set of rules!


This document will give you a basic introduction to the theory behind color management, and guide you through how to set it up using Maya 2019, Arnold, and Nuke. However I have seen people use the document to set up ACES in other versions of Maya and other render engines such as Redshift. (I will add updates to this post for Maya 2022.) If you have any doubts or questions don't hesitate to reach out!



Why You Might be Interested in using ACES Workflow


Image credit to Jordan Osborne

A picture is worth a thousand words - these are renders of before and after using ACES workflow. Take a look at the highlights on the hands, light to dark falloff on the chest, the information in the specular hits on the cave. There is much less value clipping and more saturation and contrast... Interested now?


So what is ACES? ACES stands for Academy Color Encoding System. Remember how color management is a simple set of rules? ACES is just a set of rules, created by the Academy of Motion Picture Arts and Sciences (yes, the one that does the Oscars!). Let’s start off by talking about some advantages of the ACES workflow, and why you might want to use it.


Surprise! You're actually probably using color management right now!


Windows > Settings/Preferences > Preferences > Color Management


However, the default color management in Maya applies an sRGB 2.2 gamma curve in the View Transform. (For now, think of a view transform like a filter on a photo. Maya renders your image, and applies this "view transform" before showing it to you.)


While sRGB 2.2 gamma curve is standard for most images, for our purposes in animation and film, it comes with some drawbacks. Here are two problems with this default curve that ACES aims to solve:



1. it doesn't create enough contrast.


The ACES sRGB view transform is an S-shaped curve that emulates film, giving higher contrast in the midtones and making the image look much more appealing and contrasty without having to do a lot of post processing. Compared to it, the default gamma curve makes the image look washed out. The images below are the same render with only different viewing transforms applied to it! Lots more contrast in the bottom image.

Image credit to Derek Flood

This is a comparison between the Filmic S-Curve and the standard 2.2 Gamma curve.

Image Credit to Chris Brejon


2. It clips any pixels with value over 1.


The default view transform also simply clips the rendered pixel values at 1, meaning it takes any value above 1, and rewrites it as 1. This means we will lose information in the highlights very easily. The ACES sRGB transform takes those pixel values over 1 (between 1-16!) and remaps them to be below 1 (between 0.8-1), so you can get a lot more detail in your highlights before clipping. This is called tone mapping.


Compare the two images below. All the highlights on the left have clipped, like on the yellow head, shirt, white sphere, and even the small highlight on the chrome ball. Using the default color management, you would have to make unrealistic changes, like making your lights dimmer or adjusting the material's color or specularity, just to avoid this kind of clipping! With ACES tone mapping you can have far more powerful, realistic lights in your scene without worrying about your highlights blowing out.


Image credit to Maxime Roz


 

psst... can you see this?


Some Basics About Color Management


Now, I've mentioned "view transform" a few times. What is that?

For this we need to know that a main objective of color management is to maintain a Linear Workflow.












Remember this stuff from math class? This is a linear graph.

Simply put, in the real world, light behaves linearly, meaning a light that has an intensity of 2, should be twice as bright as a light with an intensity of 1. But for a few reasons, most images today are not stored linearly by default. The first televisions ever created used a technology that did not allow for light to be represented linearly. So images had to be stored non-linearly to work with those screens. Technology has evolved since then, and while it is possible to make linear monitors now, none of those monitors would correctly display any images or video that already exists in the world! For now, we are stuck with non-linear monitors. Moreover, the human eye does not perceive light in a linear way either. We are more sensitive to variations in darker values than lighter values, and the non-linear gamma curve helps us store more values in the darker shades.


For our renders to be physically correct, and to better simulate real light, we want to work linearly. (Imagine having to multiply by something like 1.14 to make your light be twice as bright...)


Since that is the case, any image saved on your computer (think jpg, png) has to be converted into a linear image to be used with our linear workflow. Then lighting, rendering, and compositing is done in linear space (there is a reason EXR is recommended for renders—it's linear!). After all that is complete, the image has to be converted back to be non-linear, and suitable for viewing on everyone's phones, monitors, and TVs. And colorspace or transform is just fancy words for these conversions!

So these are the three main elements of color management. Input space, Working space, and Output space.

Now this is where the rules come in. What needs to be converted and what doesn't?? Which conversion do I choose? The settings in Maya and Nuke support a linear workflow by default. Let's first look at the Maya and Nuke defaults to identify where these settings are.



1. INPUT Colorspace

Applied when you are reading in an image or texture to your scene. It's likely you are familiar with this:

















Maya File node
Nuke Read Nodes


sRGB Colorspace:
  • For any texture that affects the color of rendered pixels, like diffuse color, sss color, etc.

  • Colored images you get from the internet, like an image of the sky that I used as a backdrop in compositing.

Base color map for a character Sky backdrop image downloaded from the internet


Raw / Linear Colorspace:
  • For all textures that do not affect the color, like roughness, bump, displacement, emission factor, masks, etc. It means no conversion.

  • HDRI for Skydome lights -- hdr files are high dynamic range, and are Raw by default.

  • EXR files. Your renders! They're already linear so no conversion needed.

Glossiness mask for a character HDRI for skydome light


2. working / rendering colorspace

This is where all the calculations of your render take place. This is always LINEAR.

You can see it is linear by default in both Maya and Nuke!

Maya Preferences
Nuke Project Settings


3. Viewing / Output Colorspace

Applied after the render is complete, for viewing or saving to disk.


It's important to note how the view transform and output transform differ. Remember how Maya renders, then applies the view transform before showing it to you? Well, the view transform is just that: a temporary conversion, or preview, so that you can see what it will look like while working on the image. It doesn't actually alter the pixel values, like an output transform does!

Notice that by default, output color transform is turned off. Maya expects that you will write out your render in a linear file such as EXR.


You can view display settings in the Arnold Render View by clicking the little gear button on the top right.






View transform in Nuke Viewer — making this the same colorspace as your view transform in the Render view will make sure you're seeing the same image in Maya and Nuke.













Output transform in Nuke Write node — when you write a png, jpg, etc, the output transform is then "baked into" the image.


For most cases, you'll want the View Transform and the Output transform to be the same.


Take photography. A RAW image might look washed out, or dark, and not at all like what you want the final image to be. This is because the RAW format is not meant to be viewed, but rather to hold as much information as possible, to make artistic edits easy. In computer graphics now, that format is EXR.


If you made it this far… First of all, Thank you!! I hope it made some sense. I just want to add, don't stress about understanding exactly what is going on. Focus on the rules below, because they are the only things that matter directly for your render! As you use this workflow more often, it will become familiar quickly.

Second of all, let's finally move on into implementing ACES!



 


Implementation of ACES Workflow in Maya and Nuke


Setting up the OCIO Config in Maya

  • Maya 2022 comes with ACES OCIO v2. You should see a dropdown to pick what color management config to use. Disclaimer: this config is vanilla straight from their github.

  • Take the attached zip folder aces_1.1, and un-zip it in a location you can find.

  • Windows > Settings/Preferences > Preferences > Color Management

  • Open the config.ocio file within the aces_1.1 folder

  • Check on Use OCIO Configuration

    • For existing projects, the conversion may take a while.

    • For existing projects, it is also a good idea to click “Reapply Rules to Scene” to make sure everything is reset to the ACES default before continuing.

  • Save preferences


  • The rendering space and view transform have been set automatically. No need to change or set these.

  • Note also that the default Input color space is Raw.




Setting the Right Colorspace for your Texture Files


Utility - Raw
















  • For all textures that do not affect the color. Roughness, bump, displacement, emission factor, masks, etc

  • This is the default input colorspace. For these maps you can just bring them in and not change anything.

  • “Raw” in Maya default


Utility - sRGB - Texture
















  • For any texture or file that affects the color of your rendered pixels.

  • Diffuse color, specular color, emission color, etc.

  • “sRGB” in Maya default.

  • Check on Ignore Color Space File Rules. This will make sure to keep the color space to the one you designated.



Utility - Linear - sRGB















  • For HDR Maps, for your skydome lights

  • Maya default used Raw colorspace for HDRs. ACES has a special colorspace for them.

  • Check on Ignore Color Space File Rules



Lighting and Rendering

  • Now light and render as you normally would! If you want to, check the Arnold Render view to make sure the view transform is set to the right one: sRGB (ACES)

  • Render out an EXR file

  • One thing to note is that color values will work a little differently. What previously was a Value of 1, will now be closer to 0.8 in ACES. If you are bringing ACES into an existing project and your lights or materials look very saturated or strong, try bringing it down to 0.8 first, then adjusting.








Setting up OCIO COnfig in Nuke

  • Find the Project Settings panel by pressing S in the Node Graph

  • Nuke (12.2 at least) ships with ACES 1.1. Set OCIO config to aces 1.1

  • If you don’t see it there, set OCIO config to Custom, and open the same config.ocio file from before

  • Set color management to OCIO

  • Note that the viewer now is showing that same color space — sRGB (ACES)



Reading and Writing Images in Nuke

  • Nuke recognizes things pretty well by default. By this point you should effectively be done with the set up. Nuke will automatically read in your EXR render as linear, and write png or jpg as sRGB. I will include images below to show you how it should look.


  • For the write node, set it to Output - sRGB (the same as the viewer!) to ensure that you are outputting what you were seeing.




AAAAND THAT'S IT!!!!

Now with all of this knowledge, your color managed lighting workflow would look like this:

  1. Apply all the correct input color spaces to your texture files.

  2. Light and render in linear space, viewing the render with a view transform applied.

  3. Output a linear image (exr) from Maya

  4. Bring exr into Nuke, setting the read node colorspace to linear

  5. Set the Nuke viewer colorspace to the same view transform as in Maya

  6. Comp your heart out! (Or don't. The first several times using this workflow, I used Nuke just to convert my EXR into a png.)

  7. Output a png or jpg, with appropriate output colorspace selected (most likely the same as viewer)




Lastly, if you want to learn more about color management, here are some great documents that helped me:

And of course, the bible.




Thank you so much for reading. I hope it helped! Feel free to leave a comment or contact me with feedback or questions :]




p.s. A version of this post was also uploaded to the Academy of Animated Art's blog. What an honor! Thanks Mike and Jasmine!

697 views

1 Comment


Guest
Nov 04, 2021

What a really nice article! it sure does helps a lot when learning ACES.

Like
bottom of page