A color manager is a connection between Arnold and an external color management library like OpenColorIO or synColor. Color managers hold information about the availability of different color spaces and also transform RGB colors to and from the rendering color space.

Built-in Color Manager

Arnold has a built-in color manager to simplify the transition to Arnold 5. If no color manager is linked to in options.color_manager, the built-in one will take over.

This built-in color manager only knows about two color spaces:

  • 'sRGB' which corresponds to the sRGB colorspace with its corresponding gamma.
  • 'linear' which corresponds to a linear color space with the sRGB gamut and white point. This "sRGB linear" color space was the default rendering color space in Arnold 4.

OCIO Color Manager

Through the 'color_manager_ocio' node Arnold can access color spaces defined in an OCIO config file.

Node Parameters

config

A path to the OCIO config file to use, if this is empty OCIO will try to load the config file from the 'OCIO' environment variable.

color_space_narrow

If it exists in the OCIO config, this should be set to the name of the 'sRGB Gamma' color space. This is used internally for input and output color spaces in 'auto' mode. If set by the user, this color space is also used as a reference to detect the rendering color space gamut and white point.

color_space_linear

This is the default linear color space that Arnold will use as its rendering color space. Arnold's default color space is 'sRGB linear, ' but this can correspond to any linear color space if needed. If chromaticities for this linear color space can be guessed or are user specified certain spectral effects will take them into account, but not other adaptations for albedos, transparencies, etc. are applied.

linear_chromaticities

The specific RGB and white point chromaticities of the rendering color space can be specified manually here. Arnold can also try to guess them if the reference 'sRGB gamma' color space is set in 'color_space_narrow'. 

View (Display) enumeration 

It's possible to enumerate all the view/display combinations available by specifying the "View (Display)" family when enumerating color spaces. This lets client programs filter color spaces when only a display transform is appropriate. For instance, in python you can get a list of available view/display combinations like this:

 

   total_spaces = AiColorManagerGetNumColorSpaces(cm)
view_displays = AiColorManagerGetNumColorSpaces(cm, "View (Display)")
for cs in range(0, view_displays) :
cn = AiColorManagerGetColorSpaceNameByIndex(cm, cs, "View (Display)")

 

Role enumeration 

It's possible to enumerate all the roles available in the current config by specifying the "Role (OCIO)" family when enumerating color spaces. This lets client programs filter color spaces when only roles are needed. In python you can get a list of available roles like this: 

   total_spaces = AiColorManagerGetNumColorSpaces(cm)
view_displays = AiColorManagerGetNumColorSpaces(cm, "Role (OCIO)")
for cs in range(0, roles) :
cn = AiColorManagerGetColorSpaceNameByIndex(cm, cs, "Role (OCIO)")

OCIO defaults

If certain roles are defined in the config, they will be used for the required color spaces, if node parameters do not override them. These roles are:
  • For linear color space (the rendering color space): rendering role, and if not present scene_linear or linear roles
  • For "narrow" bit width color space (the color space that will be used as sRGB, see above): srgb_equivalent role. If this role is not present a suitable equivalent will be chosen based on the current config's path and the available color space names.


If no chromaticities for the linear color space are supplied, a suitable default will be chosen based on the path to the current config and the name of the rendering color space. This enables the more accurate rendering of effects that generate very saturated colors (thin film, dispersion, physical sky, blackbody radiation)


All color spaces and chromaticities used by default will be reported in the render log and can be overridden as needed by setting the corresponding node parameters.




  • No labels