<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>OpenColorIO</title> <link rel="stylesheet" href="../_static/ocio.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/print.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '1.0.9', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/theme_extras.js"></script> <link rel="top" title="OpenColorIO 1.0.9 documentation" href="../index.html" /> <link rel="up" title="User Guide" href="index.html" /> <link rel="next" title="Config syntax" href="config_syntax.html" /> <link rel="prev" title="Contexts" href="contexts.html" /> </head> <body> <div class="header"><h1 class="heading"><a href="../index.html"> <span>OpenColorIO</span></a></h1> <h2 class="heading"><span>Open Source Color Management</span></h2> </div> <div class="topnav"> OpenColorIO 1.0.9 documentation </div> <div class="content"> <table width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="200"> <div class="sidebar2"> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li> <li class="toctree-l1"><a class="reference internal" href="../CompatibleSoftware.html">Compatible Software</a></li> <li class="toctree-l1"><a class="reference internal" href="../configurations/index.html">Configurations</a></li> <li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li> <li class="toctree-l1 current"><a class="reference internal" href="index.html">User Guide</a><ul class="current"> <li class="toctree-l2"><a class="reference internal" href="tool_overview.html">Tool overview</a></li> <li class="toctree-l2"><a class="reference internal" href="baking_luts.html">Baking LUT’s</a></li> <li class="toctree-l2"><a class="reference internal" href="contexts.html">Contexts</a></li> <li class="toctree-l2 current"><a class="current reference internal" href="">Looks</a></li> <li class="toctree-l2"><a class="reference internal" href="config_syntax.html">Config syntax</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../developers/index.html">Developer guide</a></li> <li class="toctree-l1"><a class="reference internal" href="../FAQ.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="../downloads.html">Downloads</a></li> <li class="toctree-l1"><a class="reference internal" href="../ChangeLog.html">ChangeLog</a></li> <li class="toctree-l1"><a class="reference internal" href="../License.html">License</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="../search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </td> <td width="100%" id="bodycontent"> <div class="section" id="looks"> <span id="userguide-looks"></span><h1>Looks<a class="headerlink" href="#looks" title="Permalink to this headline">¶</a></h1> <p>A “look” is a named color transform, intended to modify the look of an image in a “creative” manner (as opposed to a colorspace definion which tends to be technically/mathematically defined)</p> <p>Examples of looks may be a neutral grade, to be applied to film scans prior to VFX work, or a per-shot DI grade decided on by the director, to be applied just before the viewing transform</p> <p>Looks are defined similarly to colorspaces, you specify a name and a transform (possibly a GroupTransform containing several other transforms), and optionally an inverse transform.</p> <p>Where looks differ from colorspace definions are in how they are applied. With a look, you also specify the “process space” - the colorspace in which the transform is applied.</p> <div class="section" id="example-configuration"> <h2>Example configuration<a class="headerlink" href="#example-configuration" title="Permalink to this headline">¶</a></h2> <p>Step 1: Setup a Look</p> <p>A look is a top-level OCIO configuration object. Conceptually, it’s a named transform which gets applied in a specific color space. All of the changes below to the .ocio configs can be done manually by editing the text, or using the Python API.</p> <p>Example look definition in a OCIO config:</p> <div class="highlight-yaml"><div class="highlight"><pre><span class="l-Scalar-Plain">looks</span><span class="p-Indicator">:</span> <span class="p-Indicator">-</span> <span class="kt">!<Look></span> <span class="l-Scalar-Plain">name</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">di</span> <span class="l-Scalar-Plain">process_space</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">rclg16</span> <span class="l-Scalar-Plain">transform</span><span class="p-Indicator">:</span> <span class="kt">!<FileTransform></span> <span class="p-Indicator">{</span><span class="nv">src</span><span class="p-Indicator">:</span> <span class="nv">look_di.cc</span><span class="p-Indicator">,</span> <span class="nv">interpolation</span><span class="p-Indicator">:</span> <span class="nv">linear</span><span class="p-Indicator">}</span> </pre></div> </div> <p>The src file can be any LUT type that OCIO supports (in this case, it’s a file that contains the <tt class="docutils literal"><span class="pre"><ColorCorrection></span></tt> element from a CDL file.) You could also specify a .3dl, etc.</p> <p>Once you define a look in your configuration, you’ll see that the <tt class="docutils literal"><span class="pre">OCIOLookTransform</span></tt> node in Nuke will provide the named option. In this example, the ‘DI’ look conceptually represents a look that will be applied in DI. Other look names we often used are ‘onset’, ‘editorial’, etc. The <tt class="docutils literal"><span class="pre">process_space</span></tt> specifies that the transform should be applied in that space. In this example, if you provide linear input to the <tt class="docutils literal"><span class="pre">OCIOLookTransform</span></tt> node, the pixels will be converted to <tt class="docutils literal"><span class="pre">rclg16</span></tt> before applying the <tt class="docutils literal"><span class="pre">look_di.cc</span></tt> file-transform.</p> <p>Step 2: Update the Display to use a look.</p> <p>You can specify an optional ‘looks’ tag in the View tag, which will apply the specified look(s). This lets application in the viewer provide options which use the looks.</p> <p>Example:</p> <div class="highlight-yaml"><div class="highlight"><pre><span class="l-Scalar-Plain">displays</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">DLP</span><span class="p-Indicator">:</span> <span class="p-Indicator">-</span> <span class="kt">!<View></span> <span class="p-Indicator">{</span><span class="nv">name</span><span class="p-Indicator">:</span> <span class="nv">Raw</span><span class="p-Indicator">,</span> <span class="nv">colorspace</span><span class="p-Indicator">:</span> <span class="nv">nc10</span><span class="p-Indicator">}</span> <span class="p-Indicator">-</span> <span class="kt">!<View></span> <span class="p-Indicator">{</span><span class="nv">name</span><span class="p-Indicator">:</span> <span class="nv">Log</span><span class="p-Indicator">,</span> <span class="nv">colorspace</span><span class="p-Indicator">:</span> <span class="nv">rclg10</span><span class="p-Indicator">}</span> <span class="p-Indicator">-</span> <span class="kt">!<View></span> <span class="p-Indicator">{</span><span class="nv">name</span><span class="p-Indicator">:</span> <span class="nv">Film</span><span class="p-Indicator">,</span> <span class="nv">colorspace</span><span class="p-Indicator">:</span> <span class="nv">p3dci16</span><span class="p-Indicator">}</span> <span class="p-Indicator">-</span> <span class="kt">!<View></span> <span class="p-Indicator">{</span><span class="nv">name</span><span class="p-Indicator">:</span> <span class="nv">Film DI</span><span class="p-Indicator">,</span> <span class="nv">colorspace</span><span class="p-Indicator">:</span> <span class="nv">p3dci16</span><span class="p-Indicator">,</span> <span class="nv">looks</span><span class="p-Indicator">:</span> <span class="nv">di</span><span class="p-Indicator">}</span> <span class="l-Scalar-Plain">sRGB</span><span class="p-Indicator">:</span> <span class="p-Indicator">-</span> <span class="kt">!<View></span> <span class="p-Indicator">{</span><span class="nv">name</span><span class="p-Indicator">:</span> <span class="nv">Raw</span><span class="p-Indicator">,</span> <span class="nv">colorspace</span><span class="p-Indicator">:</span> <span class="nv">nc10</span><span class="p-Indicator">}</span> <span class="p-Indicator">-</span> <span class="kt">!<View></span> <span class="p-Indicator">{</span><span class="nv">name</span><span class="p-Indicator">:</span> <span class="nv">Log</span><span class="p-Indicator">,</span> <span class="nv">colorspace</span><span class="p-Indicator">:</span> <span class="nv">rclg10</span><span class="p-Indicator">}</span> <span class="p-Indicator">-</span> <span class="kt">!<View></span> <span class="p-Indicator">{</span><span class="nv">name</span><span class="p-Indicator">:</span> <span class="nv">Film</span><span class="p-Indicator">,</span> <span class="nv">colorspace</span><span class="p-Indicator">:</span> <span class="nv">srgb10</span><span class="p-Indicator">}</span> <span class="p-Indicator">-</span> <span class="kt">!<View></span> <span class="p-Indicator">{</span><span class="nv">name</span><span class="p-Indicator">:</span> <span class="nv">Film DI</span><span class="p-Indicator">,</span> <span class="nv">colorspace</span><span class="p-Indicator">:</span> <span class="nv">srgb10</span><span class="p-Indicator">,</span> <span class="nv">looks</span><span class="p-Indicator">:</span> <span class="nv">di</span><span class="p-Indicator">}</span> </pre></div> </div> <p>Option for advanced users: The looks tag is actually a comma-delimited list supporting +/- modifiers. So if you you wanted to specify a View that undoes DI, and then adds Onset, you could do “-di,+onset”.</p> <p>Step 3: Get per-shot looks supported.</p> <p>In the top example, look_di.cc, being a relative path location, will check each location in the config’s search_path. The first file that’s found will be used.</p> <p>So if your config contains:</p> <div class="highlight-python"><pre>search_path: luts</pre> </div> <p>... then only the ‘luts’ subdir relative to the OCIO config will be checked.</p> <p>However if you specify:</p> <div class="highlight-python"><pre>search_path: /shots/show/$SHOT/cc/data:luts</pre> </div> <p>...the directory ‘/shots/show/$SHOT/cc/data/’ will be evaluated first, and only if not found will the ‘luts’ directory be checked.</p> <p>env-vars, absolute, and relative paths can be used both in the config’s <tt class="docutils literal"><span class="pre">search_path</span></tt>, as well as the View’s src specification.</p> <p>Example:</p> <div class="highlight-yaml"><div class="highlight"><pre><span class="p-Indicator">-</span> <span class="kt">!<Look></span> <span class="l-Scalar-Plain">name</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">di</span> <span class="l-Scalar-Plain">process_space</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">rclg16</span> <span class="l-Scalar-Plain">transform</span><span class="p-Indicator">:</span> <span class="kt">!<FileTransform></span> <span class="p-Indicator">{</span><span class="nv">src</span><span class="p-Indicator">:</span> <span class="nv">looks/$SHOT_di/current/look_$SHOT_di.cc</span><span class="p-Indicator">,</span> <span class="nv">interpolation</span><span class="p-Indicator">:</span> <span class="nv">linear</span><span class="p-Indicator">}</span> </pre></div> </div> <p>Note that if the per-shot lut is not found, you can control whether a fallback LUT succeeds based on if it’s in the master location. You can also use this for multiple levels (show, shot, etc).</p> <p>Advanced option: If some shots use .cc files, and some use 3d-luts currently there’s no simple way to handle this. What we’d recommend as a work around is to label all of your files with the same extension (such as .cc), and then rely on OCIO’s resiliance to misnamed lut files to just load them anyways. Caveat: this only works in 1.0.1+ (commit sha-1: 6da3411ced)</p> <p>Advanced option: In the Nuke OCIO nodes, you often want to preview looks ‘across shots’ (often for reference, same-as, etc). You can override the env-vars in each node, using the ‘Context’ menu. For example, if you know that $SHOT is being used, in the context key1 you should specify ‘SHOT’, and the in value1 specify the shot to use (such as dev.lookdev). You can also use expressions, to say parse a shot name out of <tt class="docutils literal"><span class="pre">[metadata</span> <span class="pre">"input/filename"]</span></tt></p> <p>Advanced option: If you are writing your own OCIO integration code, <tt class="docutils literal"><span class="pre">getProcessor</span></tt> will fail if the per-shot lut is not found, and you may want to distinguish this error from other OCIO errors. For this reason, we provide OCIO::ExceptionMissingFile, which can be explicitly caught (this can then handled using <tt class="docutils literal"><span class="pre">OCIO::DisplayTransform::setLooksOverride()</span></tt>). I’d expect image flipbook applications to use this approach.</p> </div> </div> </td> </tr></table> <br> </div> <div class="bottomnav"> <p> </p> </div> <div class="footer"> © Copyright 2010, Sony Pictures Imageworks. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b3. </div> </body> </html>