Pour ceux qui ont connu le passage un peu « bidouillage » en workflow linéaire…eh bien rebelote !
Pour les autres, bienvenu au club, encore que le passage d’un workflow classique à un workflow ACES est carrément mieux implémenté, et du coup l’idée était ici de faire un petit récap résumant les infos glannées au fin fond de forums obscurs (ou pas), après possible que des erreurs traînent dans le tas, en tout cas si vous en voyez n’hésitez pas à me le dire que je mette ça à jour !
Alors ACES, c’est quoi, pour qui et surtout avec quels bénéfices ? C’est ce que nous allons voir !
Sommaire
- ACES
- PRINCIPE
- COMMENT çA MARCHE
- MAYA/ARNOLD
- NUKE
- BLENDER
- RENDERMAN
- MARI
- AFTER EFFECTS
- UNREAL ENGINE
- SUBSTANCE
- UNITY
- SOurces et trucs intéressants
ACES ?
ACES, c’est l’acronyme de Academy Color Encoding System, et comme son nom l’indique c’est un système d’encodage des couleurs développé par l’Academy of Motion Pictures Arts and Sciences (qui organise notamment les oscars, et qui regroupe tout un tas de gens liés au cinéma).L’idée sous-jacente était d’uniformiser tout le bordel lié aux différents espaces colorimétriques afin que films, photos, images 3d et 2d, quel que soit le médium de fin (cinéma,télé, jeu vidéo etc) puissent cohabiter joyeusement et durablement. Joyeusement car au fil des évolutions matérielles (caméras, écrans,etc) et logicielles chacun s’était dit que ce serait super chouette de bosser dans un espace colorimétrique propriétaire et changent régulièrement. Durablement car vu que les espaces colorimétriques sont propriétaires, bah ça risque d’être galère d’avoir les sources nécessaires si la boîte derrière le format propriétaire fait faillite ou ne les archive pas correctement et qu’on veut sortir un remaster quelques années plus tard. Du coup, l’Academy s’est dit (‘fin surtout les studios de VFX qui se trouvent en bout de chaîne à devoir compositer des tas de sources avec des espaces colorimétriques différents) , hop ça suffit, ça devient la grosse galère, on n’a qu’à créer un espace colorimétrique commun.
PRINCIPE
Quand j’ai commencé la 3d début 2000 je bossais avec Maya / Mental Ray et je ne me posais pas trop de questions sur l’espace colorimétrique dans lequel j’importais mes textures, faisais mon rendu ou compositais tout ça, par contre j’avais vite remarqué que les lights avaient tendance à cramer très vite les objets proches et perdre très vite en intensité, mais je mettais ça sur le compte du quadratic decay.
Le problème provenait à l’époque de l’inadéquation de la fonction de transfert de courbe (notre ami le gamma). Pour résumer, nos yeux perçoivent mieux les différences de teintes dans les tons sombres que dans les tons clairs, du coup, hop, pourquoi ne pas optimiser en utilisant une fonction qui nous permet de « compresser » les infos en laissant de côté celles que l’oeil humain perçoit moins bien. Du coup on gagne en confort visuel et au passage on a des fichiers plus légers et plus rapides à traiter. Une caméra filme par exemple en linéaire (ou log, ou tout espace propriétaire) et le sRGB passe derrière pour lui appliquer le gamma (la fonction de transfert) et l’afficher. Forcément l’écran ou la caméra n’ont pas de biais perceptif comme l’oeil humain et bossent donc en linéaire.
Du coup, bah on avait des zones surexposées super vite, et une intensité qui diminuait trop vite. Là est arrivé le workflow « linéaire » pour pallier à ces problèmes, l’idée c’était de « contrecarrer » la fonction de transfert de courbe (le gamma) intégrée dans les sRGB, et de calculer notre image avec une courbe linéaire et ensuite de ré-appliquer la courbe pour l’affichage. Un tone mapping est également appliqué en bout de chaîne (en effet on va se retrouver avec des valeurs de couleurs qui sortent de l’intervalle supporté par nos écrans, le tone mapping va dicter l’adaptation de celles-ci)
Et c’est bien mieux ! Très pratique, on calcule avec une courbe et on affiche avec une autre, pour garantir des calculs plus proches de la réalité, et un affichage adapté.
Il y a également un problème de gamut (l’espace de phase des couleurs que le périphérique peut reproduire) employé. Le plus courant sur écran c’est le sRGB, défini par HP et Microsoft, qui se sont basé sur les types d’écran les plus communs et qui du coup sert à faire en sorte que les couleurs soient suffisamment bien représentées sur la grande majorité des écrans. Le problème de ce gamut, bah c’est qu’il est très petit, comme vous pouvez le voir ci-dessous, il y a pleins de pauvres couleurs qui sont laissées pour compte, ce qui nous arrange pas, à nous qui bossons dans le lookdev.
C’est là qu’arrivent ACES et ses espaces colorimétriques
Bon en fait c’est mieux mais…c’est trop ! les résultats son trop saturés. Et c’est là qu’arrive le ACEScg
- ACES, c’est en fait plusieurs espaces colorimétriques, voués à englober tous les cas de figure d’une prod (film/tv, jeux vidéo etc). On va retrouver :
- ACES2065-1, la version complète, dédiée à l’archivage et aux master
- ACEScc : cc pour « color correction », donc l’espace pour le grading et la retouche colorimètrique
- ACESproxy : pour la préviz sur site et l’affichage sur site (en vidéo/film)
- ACEScg : pour le rendu 3d
COMMENT çA MARCHE ?
Déjà faut télécharger pack OpenColorIO (OCIO) pour avoir les espaces colorimétriques dans son appli favorite ici.
Après bah, forcément en fonction des softs, ça change !
Pour la partie display dans les softs, j’ai mis en sRGB, après ça dépend de vos écrans, genre si vous avez un écran HDR, rec2020 pour de la télé UHDTV, etc.
En règle générale on utilisera l’espace ACES2065-1 pour le stockage et l’échange, et on convertira pour travailler à l’intérieur de nos softs en ACEScg (‘fin c’est la façon dont s’est conçu pour fonctionner, à la base c’est pour le travail entre des entités séparées qui se feront passer les master en ACES2065-1). En terme de format de fichier, c’est en .EXR 16-bit non compressé.
Alors c’est chouette mais on va avoir tout un tas d’espaces colorimètriques, le ACE a pour vocation d’unifier la prod, du coup on va trouver les cas de figures d’input qu’on peut trouver. Pour l’usage courant en 3d, on va utiliser :
- ACES – ACES2065-1 pour les fichiers qui ont été archivés en… ACES – ACES2065-1
- Utility – sRGB-Texture pour les fichiers en sRGB
- Utility – Linear-sRGB pour les fichiers en sRGB mais linéaire (genre les hdri, exr, ou ce que vous sortez en linéaire de Mari,etc)
- Utility – Linear-rec709 pour les vidéos (mais ça arrive pas très souvent de mettre des vidéos dans Maya)
- Utility – Raw pour les maps scalaires, c’est à dire tout ce qui n’est pas infos de couleurs mais d’intensité, pour le coup on ne veut pas leur appliquer d’espace colorimétrique, c’est le cas des maps de Displacement, Roughness, les masques etc
- Utility-Rec.709-Camera pour les images sRGB qui vont servir de MattePainting
Set OCIO=I:\OpenColorIO-Configs-feature-aces-1.2-config\OpenColorIO-Configs-feature-aces-1.2-config\aces_1.2\config.ocio
START "BLENDER 2.8.2" "F:\Program Files\Blender Foundation\Blender 2.82\blender.exe"
A personnaliser suivant vos chemins à vous !
- ACES – ACES2065-1 pour les fichiers qui ont été archivés en… ACES – ACES2065-1
- Utility – sRGB-Texture pour les fichiers en sRGB
- Utility – Linear-sRGB pour les fichiers en sRGB mais linéaire (genre les hdri, exr, ou ce que vous sortez en linéaire de Mari,etc)
- Utility – Linear-rec709 pour les vidéos (mais ça arrive pas très souvent de mettre des vidéos dans Maya)
- Utility – Raw pour les maps scalaires, c’est à dire tout ce qui n’est pas infos de couleurs mais d’intensité, pour le coup on ne veut pas leur appliquer d’espace colorimétrique, c’est le cas des maps de Displacement, Roughness, les masques etc
Ah bah...pas trop supporté pour le moment, le workflow est pour le moment de convertir ses textures en ACEScg avant de les utiliser dans Renderman (que les textures avec des infos de couleur, tout ce qui est scalar (displace,mask, roughness etc) ce n'est pas la peine.
Pour convertir on peut passer par Nuke.
On règle Nuke pour bosser en ACES (voir onglet Nuke), dans le read on met l'espace colorimétrique correspondant à notre texture (utility - srgb - texture ou si l'image est en linéaire utility - srgb - linear).
Pour le OcioColorSpace , le in c'est l'espace colorimétrique de notre read, et le out ce sera ACES-ACEScg, et le Write sera aussi en ACEScg
Alors pour After, on va aller télécharger le plug-in OpenColorIO
On copie le .aex dans le dossier plug-ins d'After Effects
Depuis la 4.15, on a un filmic tonemapper ACES, pour se "rapprocher" du standard ACES. C'est plutôt à destination des écrans HDR, et les infos pour l'activer se trouvent ici
Pour Substance Painter, on peut juste "émuler" le display ACES, pour cela il faut utiliser une LUT (LookUp Table).
Si vous voulez créer la votre, la marche à suivre est indiquée ici sur le site de Substance.
Sinon, Brian Leleux en a crée une chouette que vous pouvez retrouver ici.
Cela ne marche que pour l'affichage dans le viewport.
Comme pour Unreal, ça se passe dans la partie tonemapper.
SOURCES ET TRUCS INTERESSANTS
- LA bible pour tout ce qui concerne le lighting : https://chrisbrejon.com/
- La base, avec pleins d’infos et de discussions intéressantes et qui font mal à la tête : https://acescentral.com/
- Doc officielle Arnold/Maya : https://docs.arnoldrenderer.com/display/A5AFMUG/ACES+Workflow
- Doc officielle Unity https://docs.unity3d.com/Packages/com.unity.postprocessing@2.0/manual/Color-Grading.html
- Doc officielle Blender https://docs.blender.org/manual/en/latest/render/color_management.html
- OpenColorIO : https://opencolorio.org/CompatibleSoftware.html