Vous n’allez peut-être pas me croire mais je viens seulement de comprendre une notion importante d’Octane : la différence entre les nœuds RGBSpectrum et GaussianSpectrum. Jusqu’à présent je pensais que ces nœuds avaient une fonction équivalente et qu’il ne correspondaient qu’à des conventions d’écriture : l’un en RVB ou TSL classique et l’autre dans un format abscons destiné aux seuls scientifiques. Il n’en est rien car en réalité ce choix de nœud a un impact en terme de génération de bruit dans les émetteurs de lumière colorée.

Bien entendu, j’avais déjà lu des informations sur ce nœud GaussianSpectrum mais ces infos n’avaient pas traversé la barrière de la langue, Je n’avais pas perçu toute la portée de ce que je lisais et j’en étais resté à une conclusion du genre « ça m’a l’air très compliqué et pas très utile… ». Aujourd’hui, je me rends compte que je suis passé à côté de quelque chose et j’ai décidé de partager ma découverte. Le nœud GaussianSpectrum est très utile dans tout ce qui concerne le filtrage et surtout la génération de lumière car son mode de fonctionnement permet la définition d’une zone du spectre plutôt qu’un point précis pour une couleur donnée, ce qui réduit assez bien la génération de bruit avec des émetteurs contenant une couleur.

Mais aussi, comme le nœud GaussianSpectrum offre une saturation globalement plus prononcée et partiellement dissociée de la luminosité, il peut être utile également dans un nœud Scattering ou un Absorption medium ou bien encore dans le port Transmission. Pour ma part, après l’avoir essayé, je trouve qu’il offre des avantages dans un nœud de type medium mais je n’ai néanmoins pas constaté d’amélioration notable pour ce qui est du bruit.

Quelques explications

Si j’ai bien compris, en interne Octane utilise des couleurs de type GaussianSpectrum. Toutes les valeurs de couleur RGBSpectrum sont converties automatiquement en GaussianSpectrum. Donc le nœud RGBSpectrum n’est en quelque sorte qu’un sous-nœud du GaussianSpectrum. Jusque là rien de bien grave si ce n’est que la méthode de conversion ne permet pas de respecter toute la logique intrinsèque du nœud GaussianSpectrum : la définition d’un éventail de couleurs, d’une tendance, d’un ensemble de longueurs d’ondes plutôt qu’une couleur précise. C’est la valeur de Width du GaussianSpectrum qui détermine cet éventail mais, si je comprends bien, avec la conversion du RGBSpectrum c’est comme si cette valeur était à son minimum, comme si ce n’était qu’un point dans le spectre plutôt qu’une zone.

Dans le GaussianSpectrum, plus la valeur du Width est basse, plus cette zone du spectre est étroite et plus la couleur sera saturée (jusqu’à devenir sombre puis noire) mais même dans des valeurs assez basse, ça reste néanmoins une zone de longueur d’ondes plutôt qu’une longueur d’onde spécifique. Du coup, lorsqu’on utilise une valeur GaussianSpectrum, même relativement saturée, dans une source lumineuse à la place d’une valeur en RGBSpectrum, Octane génère beaucoup moins de bruit.

Comment fonctionne le nœud

En réalité, le noeud GaussianSpectrum est plus simple à utiliser qu’il n’y paraît et est très proche d’une mécanique TSL (Teinte, Saturation, Luminosité, HSV en anglais) si ce n’est que la valeur de Wavelength ne correspond pas à une roue chromatique (tournant sur elle-même où les rouges à 0 et 360° sont équivalents) mais à une longueur d’onde du spectre visible : les valeurs basses étant proches de l’ultraviolet et les valeurs hautes proches des infrarouges comme un arc-en-ciel (https://fr.wikipedia.org/wiki/Spectre_visible).

Pour définir la teinte sur base de données réelles (d’une lampe par exemple), le calcul est assez simple. Les valeurs utilisées par Octane sont les suivantes :

μ = 380 + 340 * longueur d’onde (donc les valeurs se situent entre 380 et 720 nm)
σ = 800 * Width.

Imaginons que vous voulez une valeur de 470 nm qui correspond par exemple à une lampe LED spécifique. Il suffit de soustraire de cette valeur (470) la valeur de départ du spectre visible pris en compte par Octane, soit 380 nm, ce qui donne 90. Comme le champ Wavelength d’Octane est un nœud Float (de 0 à 1), on va tout simplement diviser 1 par 340 (la largeur du spectre visible pris en compte par Octane) et multiplier le résultat par la valeur du calcul précédent, soit 90. On obtient alors une valeur approximative de 0.265 (comme ce calcul contient exclusivement des valeurs constantes, une simple formule dans une feuille Excel ou OpenOffice devrait faire l’affaire…).

Le Width, la largeur du spectre pris en compte (une bande ou zone en quelque sorte) va définir la saturation globale. Plus cette valeur est basse, plus la saturation sera forte. Bien entendu, si la valeur est radicalement basse, on risque de voir réapparaître du bruit donc, comme toujours, c’est un compromis à trouver. Globalement, la saturation est naturellement plus forte avec un nœud GaussianSpectrum, ce qui fait qu’il n’est généralement pas nécessaire d’atteindre ces extrémités.

Le Power est l’équivalent de la luminosité des valeurs TSL si ce n’est qu’ici ont est moins dans un cadre chromatique soustractif et plus dans un cadre lumineux additif. D’où l’appellation de Power et non de luminosité. Il s’agit bien ici de puissance lumineuse et non de luminosité… La différence semble très « linguistique » dans mon explication mais vous verrez en essayant que le comportement d’Octane est différent.

Obtenir ce type de lumière sans bruit avec un nœud RGBSpectrum serait quasi impossible.

Déroutant mais puissant

D’une manière générale, ce nœud peut sembler déroutant de prime abord car, dans un matériau Diffuse avec un GaussianSpectrum connecté au port Diffuse par exemple, un Wavelength de 0.75 avec un Width à 0.1 et un Power à 0.8 donneront un jaune prononcé alors que les mêmes Wavelength et Power avec un Width à 0.025 donneront un rouge orangé. Dans le même ordre d’idée, j’avoue que j’ai été très surpris de constater que je ne pouvais obtenir de pourpre, de violet ou de magenta qu’en utilisant deux GaussianSpectrum (l’un à ± 0 en Wavelength et l’autre à ± 1) et un CosineMix. Si on se réfère à Wikipedia (https://fr.wikipedia.org/wiki/Pourpre), ça semble assez logique puisque les pourpres font partie des couleurs qui n’apparaissent pas dans l’arc-en-ciel et qui nécessitent un mélange (au sens strict des longueurs d’onde). Cela étant, mes représentations symboliques ont eu la vie dure et j’ai eu de la peine à y croire…

Juste pour les émetteurs de lumière ?

Jusqu’à présent, j’ai surtout parlé d’émission de lumière car c’est surtout dans ce cadre que l’utilisation du nœud GaussianSpectrum est immédiatement utile. Mais comme tout est flux de lumière dans Octane : réflexion, réfraction, filtrage, etc ; le bénéfice de l’utilisation de ce nœud est perceptible dans d’autres cadres comme la translucidité avec les nœuds Absoption et Scattering medium puisqu’ils agissent comme des filtres, ou même avec de la couleur spéculaire ou de la réflexion. Bien entendu, ce n’est pas pour autant qu’il faut l’utiliser dans toutes les situations car c’est certain qu’il est moins aisé à paramétrer mais si on est confronté à du bruit généré par une couleur, il me semble que c’est la première chose à tester.

Pour le nœud Scattering medium, j’ai constaté que le nœud GaussianSpectrum fonctionne bien avec l’Absorption mais pas avec le Scattering. Je suppose qu’il doit s’agir de la nécessité de donner au Scattering une valeur stricte au lieu d’une plage de valeurs mais je n’en ai aucune certitude. À tester plus en profondeur donc…

Octane, Cinema 4D et les instances de rendu

Depuis bien longtemps, Cinema 4D est capable d’effectuer un rendu en tâche de fond dans le visualiseur pendant qu’on effectue des modifications et des rendus de test. On serait donc en droit d’espérer les mêmes possibilités de la part d’un moteur de rendu moderne...

Le Subsurface scattering (SSS) et Octane

Cette fois j’ai décidé de me pencher plus avant sur les matériaux translucides ou SSS (SubSurface Scattering) dans le moteur de rendu Octane Render d'Otoy. Composée d’assez peu de paramètres, la translucidité dans Octane n’en est pas moins puissante et permet de...

Octane: déplacement sous-polygonal et tag de lissage

Le moteur de rendu de Cinema 4D effectuant un lissage interne lors de l'utilisation du déplacement sous-polygonal, bien souvent on ne se préoccupe pas beaucoup du tag de lissage (Phong) lorsqu'on utilise ce type de technique. À priori, on n'a pas tendance à s'en...

Octane : lumière et GaussianSpectrum

Vous n'allez peut-être pas me croire mais je viens seulement de comprendre une notion importante d'Octane : la différence entre les nœuds RGBSpectrum et GaussianSpectrum. Jusqu'à présent je pensais que ces nœuds avaient une fonction équivalente et qu'il ne...

Octane render : optimisation du rendu

Comme tout moteur de rendu, Octane a ses paramètres pour optimiser la vitesse d'exécution selon les situations. Même si Octane est probablement le moteur de rendu non-biaisé le plus rapide du moment, il n'en reste pas moins que des paramètres inadaptés peuvent ruiner...

Démos vidéo Octane render et Cinema 4D

En attendant de nouveaux articles, j'ai publié deux petites vidéos de démonstration autour de l'éclairage. La qualité technique n'est pas exceptionnelle mais elle est suffisante pour donner un aperçu des possibilités du plugin d'intégration d'Octane render 2.xx à...

Octane dans la brume

Générer de la brume dans Octane render sous Cinema 4D est assez simple à faire… quand on sait comment faire. Les moyens à déployer ne sont pas très nombreux mais assez précis : un ou deux cubes et un matériau Specular. Outre la brume, c'est également la technique...

Octane render : les nouveautés de la version 2.xx

Depuis le début de l'année 2014, les améliorations et les nouveautés se sont succédé pour le moteur de rendu Octane. Il est donc grand temps pour moi de faire le bilan des derniers ajouts. Bien entendu ce ne sera qu'un instantané, tant les versions s'enchaînent à un...

Octane render : plugin C4D ou standalone ?

C'est une question qui revient de temps en temps sur les forums que je parcours régulièrement. Avec le temps et les avancées des versions plugin Cinema 4D et standalone d'Octane render, les arguments s'étoffent et les contours se précisent. Selon moi, il n'y a ni...

Octane render : verre et liquide

Travailler avec des speculars multiples. Travailler avec des réflexions et des réfractions imbriquées n'est pas toujours simple. Il est parfois très difficile d'obtenir un résultat convainquant. Voici un petit pense-bête sur le rendu via Octane d'un liquide dans un...

Pin It on Pinterest

Share This