Installation¶The easy way¶While prebuilt binaries are not yet available for all paltforms, OCIO is available via several platform’s package managers. Fedora and RHEL¶In Fedora Core 15 and above, the following command will install OpenColorIO: yum install OpenColorIO
Providing you are using the Fedora EPEL repository (see the FAQ for instructions), this same command will work for RedHat Enterprise Linux 6 and higher (including RHEL derivatives such as CentOS 6 and Scientific Linux 6) OS X using Homebrew¶You can use the Homebrew package manager to install OpenColorIO on OS X. First install Homebrew as per the instructions on the Homebrew homepage (or see the Homebrew wiki for more detailed instructions) Then simply run the following command to install: brew install opencolorio
Building from source¶While there is a huge range of possible setups, the following steps should work on OS X and most Linux distros. The basic requirements are:
To keep things simple, this guide will use the following example paths - these will almost definitely be different for you:
First make the build directory and cd to it: $ mkdir /tmp/ociobuild
$ cd /tmp/ociobuild
Next step is to run cmake, which looks for things such as the compiler’s required arguments, optional requirements like Python, Nuke, OpenImageIO etc As we want to install OCIO to a custom location (instead of the
default Still in $ cmake -D CMAKE_INSTALL_PREFIX=/software/ocio /source/ocio
The last argument is the location of the OCIO source code (containing the main CMakeLists.txt file). You should see something along the lines of: -- Configuring done
-- Generating done
-- Build files have been written to: /tmp/ociobuild
Next, build everything (with the $ make -j8
This should complete in a few minutes. Finally, install the files into the specified location: $ make install
If nothing went wrong, $ cd /software/ocio
$ ls
bin/ include/ lib/
$ ls bin/
ocio2icc ociobakelut ociocheck
$ ls include/
OpenColorIO/ PyOpenColorIO/ pkgconfig/
$ ls lib/
libOpenColorIO.a libOpenColorIO.dylib
Enabling optional components¶The OpenColorIO library is probably not all you want - the Python libraries bindings, the Nuke nodes and several applications are only built if their dependencies are found. In the case of the Python bindings, the dependencies are the Python headers for the version you wish to use. These may be picked up by default - if so, when you run cmake you would see: -- Python 2.6 okay, will build the Python bindings against .../include/python2.6
If not, you can point cmake to correct Python executable using the
$ cmake -D PYTHON=/my/custom/python2.6 /source/ocio
Same process with Nuke (although it less likely to be picked up
automatically). Point cmake to your Nuke install directory by adding
$ cmake -D PYTHON=/my/custom/python2.6 -D NUKE_INSTALL_PATH=/Applications/Nuke6.2v1/Nuke6.2v1.app/Contents/MacOS/ /source/ocio
The If set correctly, you will see something similar to: -- Found Nuke: /Applications/Nuke6.2v1/Nuke6.2v1.app/Contents/MacOS/include
-- Nuke_API_VERSION: --6.2--
The Nuke plugins are installed into Note If you are using the Nuke plugins, you should compile the Python bindings for the same version of Python that Nuke uses internally. For Nuke 6.0 and 6.1 this is Python 2.5, and for 6.2 it is Python 2.6 The applications included with OCIO have various dependencies - to determine these, look at the CMake output when first run: -- Not building ocioconvert. Requirement(s) found: OIIO:FALSE
Quick environment configuration¶The quickest way to set the required Environment variables is to
source the For a simple single-user setup, add the following to source /software/ocio/share/ocio/setup_ocio.sh
The only environment variable you must configure manually is
To do this, you would add a line to export OCIO="/path/to/my/config.ocio"
Nuke Configuration¶If you specified the If you have followed Quick environment configuration, the plugins should be functional. However, one common additional configuration step is to register an OCIODisplay node for each display device/view specified in the config. To do this, in a menu.py on import ocionuke.viewer
ocionuke.viewer.populate_viewer(also_remove = "default")
The Alternatively, if your workflow has different requirements, you can copy the function and modify it as required, or use it as reference to write your own, better viewer setup function! import nuke
def register_viewers(also_remove = "default"):
"""Registers the a viewer process for each display device/view, and
sets the default viewer process.
``also_remove`` can be set to either:
- "default" to remove the default sRGB/rec709 viewer processes
- "all" to remove all processes
- "none" to leave existing viewer processes untouched
"""
if also_remove not in ("default", "none", "all"):
raise ValueError("also_remove should be set to 'default', 'none' or 'all'")
if also_remove == "default":
nuke.ViewerProcess.unregister('rec709')
nuke.ViewerProcess.unregister('sRGB')
nuke.ViewerProcess.unregister('None')
elif also_remove == "all":
# Unregister all processes, including None, which should be defined in config.ocio
for curname in nuke.ViewerProcess.registeredNames():
nuke.ViewerProcess.unregister(curname)
# Formats the display and transform, e.g "Film1D (sRGB)"
DISPLAY_UI_FORMAT = "%(view)s (%(display)s)"
import PyOpenColorIO as OCIO
config = OCIO.GetCurrentConfig()
# For every display, loop over every view
for display in config.getDisplays():
for view in config.getViews(display):
# Register the node
nuke.ViewerProcess.register(
name = DISPLAY_UI_FORMAT % {'view': view, "display": display},
call = nuke.nodes.OCIODisplay,
args = (),
kwargs = {"display": display, "view": view, "layer": "all"})
# Get the default display and view, set it as the default used on Nuke startup
defaultDisplay = config.getDefaultDisplay()
defaultView = config.getDefaultView(defaultDisplay)
nuke.knobDefault(
"Viewer.viewerProcess",
DISPLAY_UI_FORMAT % {'view': defaultView, "display": defaultDisplay})
Environment variables¶
|