Calibrer un éclairage HDRI

Les problèmes rencontrés avec un éclairage Hdri sont le plus souvent, un manque d’éclairage direct (ombres peu marquées), ou un équilibre des teintes difficile à trouver entre les zones ombragées et les zones éclairées (trop de bleu ou pas assez dans les ombres, et le jaune dans la lumière, arff…). Pour remédier à ces problèmes, je me suis inspiré de toutes les techniques vues sur le web ces dernières années, de Peter Guthrie à Bertrand Benoit, en passant par Ronen Bekerman. Certains ont longtemps adopté la baisse du gamma pour accroître l’intensité et le contraste du hdr. Très bien mais au détriment de la colorimétrie qui sature et un background sur-exposé en linear workflow. D’autres ont préféré ajouté un sun dans leur scène afin de combler le manque de lumière directe de la map hdr. Cette solution me semble cohérente mais coûteuse en temps de rendu. Aussi, il est souvent difficile de trouver la teinte juste à cette lumière additionnelle. Enfin une petite poignée d’infographistes a choisit d’augmenter l’exposition du soleil directement sur la map dans Photoshop. Parfait car aucune lumière additionnelle à ajuster et un temps de rendu « normal ». Mais à condition d’avoir tout de même une image hdri de bonne facture, ou alors attention à la couleur du background qui se dégrade avec le réglage de la balance des blancs. C’est néanmoins cette dernière méthode qui a retenue mon attention et que j’ai longtemps pratiqué, et ce, même si les allers et retours qu’elle implique entre Photoshop et le soft 3d, m’ont toujours ennuyés. Aujourd’hui, inspiré par toutes ces ressources, j’utilise une autre solution que je vais maintenant vous exposer.

La première étape (cf pic.01) consiste à créer un masque, correspondant à la position et au diamètre du soleil sur la map HDRI. Dans le cas ou une partie du soleil serait masquée par un nuage, il conviendra de le détourer approximativement.
• Dans Photoshop, baissez l’exposition de l’image afin de bien visualiser le contour du point le plus lumineux, en l’occurrence le soleil. (1)
• Créez deux calques, le premier rempli de blanc, et le second rempli de noir. (2)
• faites une sélection du contour du soleil, puis créez un masque de fusion sur le calque blanc. Vous obtenez ainsi un masque de votre « sun ». (3)
• Sauvegarder l’image en hdr de préférence (même si un simple jpg pourrait convenir).
Et c’est la seule partie consacrée à Photoshop puisque le reste se déroule sous 3ds max.

pic.01

Sur cette scène (cf pic.02), j’ai placé un Vray Dome Light sur lequel je connecte mon environnement HDRI à l’aide d’un VrayHDRI. Le rendu obtenu (cf pic.03) est terne, et manque de contraste comme bien souvent, le soleil n’étant pas assez présent.

pic.02
pic.03

Afin de remédier à ce problème, je vais modifier la connexion établie  sur le Vray Dome Light. Je duplique tout d’abord le VrayHDRI. Je connecte les deux images dans un Mix, derrière un ColorCorrection, en Color 1 et Color 2. J’ajoute un troisième VrayHDRI, qui contient l’image du masque préparé sous Photoshop, et je le connecte sur le MixAmount (cf pic.04). Enfin, des nodes Bezier float sont ajoutés sur les 3 map et les ColorCorrection. Ils m’apportent un contrôle simultané des paramètres qui m’intéressent, à savoir la rotation en X du dôme, l’intensité, ainsi que le Hue et la Saturation. Ces nodes sont optionnels mais néanmoins utiles.

pic.04

Le mix est maintenant connecté au slot de texture du Vray Dome Light. Je vais maintenant ajuster le niveau de contraste trop faible de la scène, en augmentant  l’intensité du soleil (Mix Color2 -> sun VrayHDRI), ou en descendant celle du ciel (Mix Colo1 -> Sky VrayHDRI). Mais comment trouver le bon niveau de contraste? Je répondrai à l’œil avec l’expérience. Néanmoins, je peux créer un éclairage avec un Vray Sun&Sky et caler mon Vray Sun sur mon éclairage HDRI. Ce rendu me servira de référence pour le niveau de contraste à obtenir. (cf pic.05 & pic.06)

pic.05
pic.06

En me basant sur cette référence de lighting, je vais pouvoir ajuster l’intensité du soleil et du ciel, dans le Mix Color2 -> Sun VrayHDRI , avec les deux paramètres Overall Mult et Render Mult. Le premier étant lié via un bezier float, je n’ai pas d’allers et retour à effectuer dans les maps pour régler l’intensité du soleil et du ciel (cf pic.07). Le paramètre Overall Mult contrôle l’intensité du ciel, et le Render Mult celle du soleil. L’intensité du ciel étant convenable sur le premier rendu, je vais simplement augmenter la valeur du Render Mult, jusqu’à obtenir une image cohérente avec ma référence. Ici, avec une valeur de 6 le niveau de contraste des deux rendus semble bien « matcher ». (cf pic.08)

pic.07
pic.08

La part de lumière émise par le soleil et le ciel étant réglée, je vais m’intéresser à la couleur. Le ciel en background mériterait un peu moins de rouge et plus de saturation. Pour cela, je vais jouer sur les paramètres de Hue et Saturation des ColorCorrection. Une fois encore, peu importe le node, les valeurs étant liées via les Bezier float. je mets respectivement -3 et 10 pour les valeurs de Hue et Saturation. Le background me plaît d’avantage. (cf pic.09)

pic.09

Il reste cependant un dernier problème. En effet, bien que le background et donc le ciel, paraissent justes, le rendu semble tirer vers le bleu. Pourquoi? On peut imaginer que lors de la prise de vue, l’appareil photo n’ayant pas capturé toute l’intensité du soleil, il n’a pas non plus capturé toute la couleur, le bleu du ciel demeurant dominant. On pourrait corriger le problème avec la balance des blancs, cependant, celle-ci affecterait le rendu et le background en même temps. Hors, le background est correct à l’oeil ! Il nous faut donc réaliser une balance des blancs du rendu uniquement. Pour cela, je vais utiliser les valeurs rgb du Sun ColorCorrection en les activant (cf pic.10). Je crée ensuite une sphère, et je lui attribue comme pour le reste de la scène, un VrayMtl blanc (180,180,180). Je lance le rendu en IPR et en Render Region autour de cette sphère, et j’affiche les informations de couleur. En cliquant sur le point le plus blanc de cette sphère, et après lecture du panneau d’information (pixel information), je vois très clairement qu’il y a trop de bleu et pas assez de rouge. Les 3 valeurs RGB doivent êtres égales afin que la balance des blancs soit correcte (cf pic.11). J’ajuste donc progressivement les valeurs RGB du Sun ColorCorrection jusqu’à obtenir des valeurs égales en RGB dans le pixel information (cf pic.12).

J’attire votre Attention sur un point important : quand j’enlève par exemple 2 unités dans le rouge, je les reporte soit dans le bleu soit dans le vert, ou encore je rajoute 1 unité dans le vert et 1 unité dans le bleu. je modifie ainsi la teinte mais je ne touche pas à l’intensité. La somme des 3 valeurs R+G+B doit rester à 300.

pic.10
pic.11
pic.12

Le rendu est désormais bien calibré, avec une balance des blancs correcte, qui n’a pas eu d’impacte sur le background, mais uniquement sur le rendu. Il ne reste qu’à exporter le Vray Dome Light ou simplement le shader afin de pouvoir utiliser cet éclairage dans n’importe quelle scène 3D. Je vous encourage à refaire cette balance des blancs à chaque déplacement de caméra. Comme en photographie, à chaque prise de vue, une balance des blancs…

J’espère vous avoir « éclairés » sur le sujet. N’hésitez pas à poster vos impressions ou vos idées!