META

II.F - Concevoir une chaîne de fabrication avec OCIO

L’intérêt d’OCIO* réside dans le fait que l’on va pouvoir, en l’utilisant, configurer toute la chaîne de production en une seule fois, pour tous les logiciels de la chaîne (pour autant qu’ils soient compatibles avec OCIO).

En général, quand on configure une chaîne de fabrication utilisant OCIO, on part d’une config existante qu’on modifie en fonction des besoins du projet et des choix artistiques et de fabrication.

Un ensemble de config est disponible dans les téléchargements de OpenColorIO, comprenant notamment ACES, spi-anim et spi-vfx, développé par Sony Pictures Imageworks. Une autre config est disponible avec Blender.

F.1 - Mise en place

La mise en place de OCIO sur une chaine de production est relativement simple. Il faut d’abord choisir une configuration à utiliser, et éventuellement la modifier et l’adapter à ses besoins (voir section suivante “Anatomie d’une config OCIO”).

Le principe est ensuite de donner à chaque application le chemin du fichier de configuration config.ocio. Cela peut être fait facilement pour toutes en modifiant la variable d’environnement OCIO, en lui donnat le chemin du fichier de configuration.

On peut aussi en général donner un chemin spécifique à chaque application ; dans ce cas la méthode varie suivant l’application.

F.2 - Anatomie d’une config OCIO

Une configuration OCIO consiste en fait en un ensemble de LUT* accompagnées d’un simple fichier texte contenant la configuration proprement dite, toujours nommé config.ocio.

Voici par exemple la config Filmic utilisée par Blender:

Le fichier de config se divise en plusieurs sections, en général dans l’ordre suivant :

D’autres sections peuvent être ajoutées, voir la documentation officielle pour les détails sur opencolorio.org.

Des commentaires sans incidence sur la configuration peuvent aussi être ajoutés dans le fichier. Une ligne contenant un commentaire doit simplement commencer par le caractère #.

Hint

La syntaxe suit en fait la norme YAML.

Nous expliquons ici seulement les différentes section qu’un utilisateur courant peut être amené à modifier, mais toutes les sections peuvent être manipulées par les utilisateurs plus avancés. Il faut alors se référer à la documentation officielle de OpenColorIO.

F.2.a - Métadonnées

Exemple :

ocio_profile_version: 1
search_path: "luts:filmic"
strictparsing: true
luma: [0.2126, 0.7152, 0.0722]
description: RRT version ut33

Voici la description de quelques paramètres courants :

F.2.b - Roles

La section roles est celle qu’on modifiera le plus souvent ; c’est celle qui définit comment sont utilisés les différents espaces colorimétriques disponibles, quels doivent être les espaces par défaut lors des différentes étapes de fabrication, etc.

Exemple (commenté) de Blender :

roles:
  reference: Linear
  # Internal scene linear space
  scene_linear: Linear
  rendering: Linear
  # Default color space for byte image
  default_byte: sRGB
  # Default color space for float images
  default_float: Linear
  # Default color space sequencer is working in
  default_sequencer: sRGB
  # Color spaces for color picking and texture painting (not internally supported yet)
  color_picking: sRGB
  texture_paint: Raw
  # Non-color data
  data: Non-Color
  # CIE XYZ color space
  XYZ: XYZ

Sur chaque ligne, on définit le role, puis l’espace colorimétrique à utiliser. Le nom de l’espace doit être celui d’un des espaces disponibles dans la liste de la section suivante.

Exemple de ACES :

roles:
  color_picking: Output - sRGB
  color_timing: ACES - ACEScc
  compositing_linear: ACES - ACEScg
  compositing_log: Input - ADX - ADX10
  data: Utility - Raw
  default: ACES - ACES2065-1
  matte_paint: Utility - sRGB - Texture
  reference: Utility - Raw
  rendering: ACES - ACEScg
  scene_linear: ACES - ACEScg
  texture_paint: ACES - ACEScc

Voici quelques explications sur les différents roles (classement alphabétique) :

Note

Toutes les applications ne respecteront pas forcément tous les rôles : certains ne sont pas supportés, ou bien l’application ne permet pas de les changer (par exemple, Blender ne permet pas de modifier l’espace de son sélecteur de couleurs)

Certaines applications peuvent aussi comprendre d’autres roles additionnels qui ne sont pas listés ici. C’est notamment le cas de Blender avec les roles commençant par default_ par exemple.

F.2.c - Displays

La section displays définit la liste des différents affichages possible, par exemple les écrans de travail et projecteurs de salle de projection.

Chaque “display”, affichage, a une liste de vues, “views”, possible, permettant de modifier l’affichage, par exemple pour une validation technique, pour mieux discerner les couleurs sombres, etc.

Exemple de Blender :

displays:
  sRGB:
    - !<View> {name: Standard, colorspace: sRGB}
    - !<View> {name: Filmic, colorspace: Filmic sRGB}
    - !<View> {name: Filmic Log, colorspace: Filmic Log}
    - !<View> {name: Raw, colorspace: Raw}
    - !<View> {name: False Color, colorspace: False Color}
  XYZ:
    - !<View> {name: Standard, colorspace: XYZ}
    - !<View> {name: DCI, colorspace: dci_xyz}
    - !<View> {name: Raw, colorspace: Raw}
  None:
    - !<View> {name: Standard, colorspace: Raw}

La vue standard affiche directement les valeurs sRGB ; Filmic Log peut être utilisé pour contrôler les zones sombres. Raw affiche les données sans conversion, pour par exemple effectuer une vérification technique d’une couche de données (normal map, occlusion, etC.). False Color sert aussi aux vérifications techniques de l’image.

Exemple de ACES :

displays:
  ACES:
    - !<View> {name: sRGB, colorspace: Output - sRGB}
    - !<View> {name: DCDM, colorspace: Output - DCDM}
    - !<View> {name: DCDM P3 gamut clip, colorspace: Output - DCDM (P3 gamut clip)}
    - !<View> {name: P3-D60, colorspace: Output - P3-D60}
    - !<View> {name: P3-D60 ST2084 1000 nits, colorspace: Output - P3-D60 ST2084 (1000 nits)}
    - !<View> {name: P3-D60 ST2084 2000 nits, colorspace: Output - P3-D60 ST2084 (2000 nits)}
    - !<View> {name: P3-D60 ST2084 4000 nits, colorspace: Output - P3-D60 ST2084 (4000 nits)}
    - !<View> {name: P3-DCI, colorspace: Output - P3-DCI}
    - !<View> {name: Rec.2020, colorspace: Output - Rec.2020}
    - !<View> {name: Rec.2020 ST2084 1000 nits, colorspace: Output - Rec.2020 ST2084 (1000 nits)}
    - !<View> {name: Rec.709, colorspace: Output - Rec.709}
    - !<View> {name: Rec.709 D60 sim., colorspace: Output - Rec.709 (D60 sim.)}
    - !<View> {name: sRGB D60 sim., colorspace: Output - sRGB (D60 sim.)}
    - !<View> {name: Raw, colorspace: Utility - Raw}
    - !<View> {name: Log, colorspace: Input - ADX - ADX10}

ACES ne trie pas par différents affichages, et tout est rassemblé sous un seul affichage.


Sources et références