1 OpenColorIO Configuration for ACES#
The OpenColorIO Configuration for ACES is an open-source Python package implementing support for the generation of the OCIO configurations for the Academy Color Encoding System (ACES).
It is freely available under the New BSD License terms.
1.1 Features#
The following features are available:
Automatic OCIO Reference configuration generation for aces-dev CTL reference implementation.
Discovery of aces-dev CTL transforms.
Generation of the CTL transforms graph.
Spreadsheet-driven generation.
Generators producing the OCIO CG and Studio configurations. - Spreadsheet-driven generation.
Included CLF transforms along with generator and discovery support.
1.2 User Guide#
User Guide#
The user guide provides an overview of OpenColorIO Configuration for ACES and explains important concepts and features, details can be found in the API Reference.
Installation Guide#
Cloning the Repository#
The OpenColorIO Configuration for ACES repository uses Git submodules thus cloning the repository requires initializing them:
git clone --recursive https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES.git
If you have already cloned the repository and forgot the –recursive argument, it is possible to initialize the submodules as follows:
git submodule update --init --recursive
Poetry#
The OpenColorIO Configuration for ACES repository adopts Poetry to help managing its dependencies, this is the recommended way to get started with development.
Assuming python >= 3.8 is available on your system along with OpenColorIO >= 2, the development dependencies are installed with Poetry as follows:
git clone --recursive https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES.git
cd OpenColorIO-Config-ACES
poetry install --extras "optional"
The aces-dev CTL reference graph can be plotted but it requires Graphviz to be installed on the system and having installed the optional pygraphviz: python package:
poetry install --extras "optional graphviz"
Docker#
Installing the dependencies for the previous config generator was not a trivial task. For ease of use an aswf-docker based container is now available.
Creating the container from the Dockerfile is done as follows:
docker build -t aswf/opencolorio-config-aces:latest .
or alternatively, if the dependencies described in the next section are satisfied:
invoke docker build
Then, to run bash in the container:
docker run -it -v ${PWD}:/home/aswf/OpenColorIO-Config-ACES aswf/opencolorio-config-aces:latest /bin/bash
Pypi#
The OpenColorIO Configuration for ACES package requires various dependencies in order to run and be able to generate the OCIO configurations:
Primary Dependencies#
Optional Dependencies#
Development Dependencies#
Once the dependencies are satisfied, the OpenColorIO Configuration for ACES package can be installed from the Python Package Index by issuing this command in a shell:
pip install --user opencolorio-config-aces
Usage#
Tasks#
Various tasks are currently exposed via invoke.
This is currently the recommended way to build the configuration until a dedicated CLI is provided.
Listing the tasks is done as follows:
invoke --list
Reference Config#
Task |
Command |
Build |
invoke build-config-reference |
Build (Docker) |
invoke docker-run-build-config-reference |
Updating Mapping File |
invoke update-mapping-file-reference |
CG Config#
Task |
Command |
Build |
invoke build-config-cg |
Build (Docker) |
invoke docker-run-build-config-cg |
Updating Mapping File |
invoke update-mapping-file-cg |
Studio Config#
Task |
Command |
Build |
invoke build-config-studio |
Build (Docker) |
invoke docker-run-build-config-studio |
Updating Mapping File |
invoke update-mapping-file-studio |
Process#
aces-dev Discovery & Classification#
The config generation process starts with a set of definitions and classes to discover, parse and classify the CTL transforms from aces-dev:
Note
This approach allowed us to improve the consistency of the CTL transforms ACEStransformID
while fixing various filename issues.
Using ACES2065-1
and OCES
as connection spaces, it is possible to build a colour conversion graph with all the high-level relevant transforms.
Analytical & Reference Configs Generation#
The colour conversion graph is then used to create the Analytical config that maps 1-to-1 the aces-dev CTL transforms to theoretical OpenColorIO builtin transforms. This config does not work but it is useful to test basic generation capabilities whilst diagnosing issues in the mapping.
The Reference config is driven by a CSV file generated from a spreadsheet mapping the ACEStransformID
to OpenColorIO builtin transforms.
CLF Transforms Generation, Discovery & Classification#
The working group decided to express additional colour transforms using CLF.
Some CLF transforms can be serialised into a config which reduces the need for external files. Each CLF transform has a CLFtransformID
specified according to the CLF Formatting for ACES OCIO Config document.
The repository contains code to generate, discover and classify the additional CLF transforms that the CG and Studio configs require.
CG Config Generation#
The CG config generator also uses a CSV file generated from a spreadsheet that expresses which ACEStransformID
should be used from the Reference config and which CLFtransformID
should be used from the shipped CLF transforms.
The conversion process is as follows:
aces-dev Discovery & Classification -> Reference Config Generation -> CLF Transforms Generation, Discovery & Classification -> CG Config Generation
Studio Config Generation#
The Studio config generator follows the same approach but uses a different pivot table of the spreadsheet.
The conversion process is as follows:
aces-dev Discovery & Classification -> Reference Config Generation -> CLF Transforms Generation, Discovery & Classification -> Studio Config Generation
1.3 API Reference#
API Reference#
OpenColorIO Configuration for ACES#
Common LUT Format Discovery#
opencolorio_config_aces
Classify given CLF transforms. |
|
|
Discover the CLF transform paths in given root directory: The given directory is traversed and the *.clf files are collected. |
|
Filter given CLF transforms with given filterers. |
Print the builtins CLF taxonomy: |
|
Unclassifie given CLF transforms. |
Common LUT Format Generation#
opencolorio_config_aces
|
Take a list of transforms and some metadata and write a CLF transform file. |
Ancillary Objects
opencolorio_config_aces.clf
|
Generate CLF files for ARRI color encodings and save to disk. |
|
Make the CLF file for BMDFilm_WideGamut_Gen5 plus matrix/curve CLFs. |
|
Make the CLF file for Canon C-Log3 Cinema Gamut plus matrix/curve CLFs. |
|
Make the CLF file for DaVinci Intermediate Wide Gamut plus matrix/curve CLFs. |
|
Generate OCIO Utility CLF transforms. |
|
Generate OCIO Utility CLF transforms. |
Make the CLF file for V-Log - V-Gamut plus matrix/curve CLFs. |
|
|
Make the CLF file for RED Log3G10 REDWideGamutRGB plus matrix/curve CLFs. |
|
Make all the Sony CLFs. |
Generation#
Profile Version#
opencolorio_config_aces
|
Define the data container for an OpenColorIO config profile version. |
Define the data container for an OpenColorIO config profile version. |
|
Built-in mutable sequence. |
Config Generation Common Objects#
opencolorio_config_aces
|
Define the data container for an OpenColorIO config. |
|
Deserialize the JSON OpenColorIO config data container at given path. |
|
Generate the OpenColorIO config from given data. |
|
Serialize the OpenColorIO config data container as a JSON file. |
|
Validate given OpenColorIO config. |
Factories#
opencolorio_config_aces
Mapping of OpenColorIO builtintransforms to their profile version. |
|
OpenColorIO transform factories. |
|
|
OpenColorIO Colorspace factory. |
|
OpenColorIO GroupTransform factory. |
|
OpenColorIO Look factory. |
|
OpenColorIO NamedTransform factory. |
|
Produce given transform. |
|
OpenColorIO transform factory. |
|
OpenColorIO ViewTransform factory. |
Reference Configuration#
aces-dev Discovery#
opencolorio_config_aces
Return the current aces-dev version, trying first with git, then by parsing the CHANGELOG.md file. |
|
Classifie given ACES CTL transforms. |
|
|
Discover the ACES CTL transform paths in given root directory: The given directory is traversed and the *.ctl files are collected. |
|
Filter given ACES CTL transforms with given filterers. |
Print aces-dev taxonomy: |
|
Unclassifie given ACES CTL transforms. |
aces-dev Conversion Graph#
opencolorio_config_aces
|
Build the aces-dev conversion graph from given ACES CTL transforms. |
|
Return the conversion path from the source node to the target node in the aces-dev conversion graph. |
|
Return the node name from given ACES CTL transform. |
|
Filter given aces-dev conversion graph nodes with given filterers. |
|
Return the ACES CTL transform from given node name. |
|
Plot given aces-dev conversion graph using Graphviz and pyraphviz. |
aces-dev Reference Config Generator#
opencolorio_config_aces
|
Enum storing the various OpenColorIO Colorspace description styles. |
|
Return the current version of given CSV mapping file. |
|
Generate the aces-dev reference implementation OpenColorIO config using the Mapping method. |
ACES Computer Graphics (CG) Config Generator#
opencolorio_config_aces
|
Generate the ACES Computer Graphics (CG) OpenColorIO config. |
ACES Studio Config Generator#
opencolorio_config_aces
|
Generate the ACES Studio OpenColorIO config. |
Utilities#
Common#
opencolorio_config_aces.utilities
Path subclass for non-Windows systems. |
|
A |
|
|
Return the first item of given iterable. |
|
Return the common ancestor of given iterables. |
|
Return the common ancestor path from given paths. |
Implement supports for vivification of the underlying dict like data-structure, magical! |
|
|
Convert given vivified data-structure to dictionary. |
|
Print a message inside a box. |
|
Return if Colour is installed and available. |
|
Return if jsonpickle is installed and available. |
|
Return if NetworkX is installed and available. |
Mapping of requirements to their respective callables. |
|
|
Decorate a function to check whether various ancillary package requirements are satisfied. |
|
Return if given \(a\) variable is a string like variable. |
|
Return if given \(a\) variable is iterable. |
Describe the current OpenColorIO Configuration for ACES git version. |
|
Convert given 3x3 matrix \(M\) to a raveled 4x4 matrix. |
|
|
Update given name by applying in succession the given patterns and substitutions. |
|
Regularise given version name by either adding or removing a v affixe. |
|
Validate whether given method exists in the given valid methods and returns the method lower cased. |
|
Return the title from given Google Sheet url. |
|
Generate a SEO friendly and human-readable slug from given object. |