Irradiance Particles (Traduction)

De FdWiki
Aller à : navigation, rechercher

Cette page est la traduction d'un pdf de la documentation de mental ray 3.9

Introduction

Irradiance particles est le nom d'une nouvelle méthode pour calculer l'illumination globale dans mental ray, simple à configurer et plus rapide que les autres algorithmes.

Ce document est une introduction succincte à cette méthode, on y explique le principe ainsi que la manière de configurer et optimiser une scène simple.

Les bases

Le calcul de l'illumination globale via les irradiances particles, est composé de plusieurs étapes de pre-process.

  1. Les importons sont shootés depuis la caméra vers la scène.
  2. Les importons sont collectés en tant qu'irradiance particles. Ils sont organisés dans une structure appelée "particle map" et contiennent des informations concernant l'illumination directe à leur position.
  3. En fonction du nombre de rebonds de lumière ("light bounces") que vous choisissez d'utiliser, plusieurs autres passes sont calculées pour inclure l’irradiance indirecte de ces particules.
  4. Si l'interpolation est utilisée, une étape finale de précalcul est effectuée durant laquelle l’irradiance de chaque particule est collectée afin d'être utilisée plus tard, durant le rendu.

Une fois que le preprocess est fait, les particules peuvent être sauvegardé dans un fichier.

Durant le rendu, la particle map est utilisé pour estimer l'illumination indirect (l'irradiance) de chaque shading point (point d'une surface calculé).

Rendre la scène

Dans ce tutorial, nous rendons une simple scène d’intérieur avec les irradiances particles.

Afin de comparer les temps de rendu, nous désactivons l'irradiance particles (figure1).

IP tutorial Fig001.png
Figure 1
temps de rendu relatif: 1

La chambre est assez sombre, elle est uniquement éclairée par l'illumination directe de la sun light.

Pour activer les irradiance particles en utilisant les options par défaut, nous devons ajouter les lignes suivantes aux options:

"irradiance particles" on
"importon" on
IP tutorial Fig002.png
Figure 2
temps de rendu relatif: 2.3

La chambre de la Figure 2 est bien mieux éclairée car une passe d'illumination indirecte est effectuée.

Irradiance particles options

Evidement, il y a d'autres options liées aux "irradiance particules".

Les plus importantes étant:

"irradiance particles indirect passes" int    default 0
"irradiance particles rays"            int    default 256
"irradiance particles scale"           scalar default 1.0
"irradiance particles interpolate"     string default "always"
"irradiance particles interppoints"    int    default 64
"irradiance particles env"             bool   default on
"irradiance particles env scale"       scalar default 1.0
"irradiance particles env rays"        int    dynamic default
"irradiance particles file"            string default ""
"irradiance particles rebuild"         bool   default on

La plupart d'entre elles sont assez simples à comprendre mais il est vivement conseillé de les essayer pour cerner leur fonctionnement.

C'est ce que nous faisont dans ce tutorial.

Les importons

Dans le cas des irradiances particles, vous pouvez imaginer les importons comme des positions où l'illumination indirecte peut être stockée.

Par conséquent, il est important de couvrir d'importons toutes les parties de la scène qui sont vues par la caméra, en incluant les importons qui sont indirectement vus, par exemple, à travers un miroir.

Dans la cas du miroir, nous avons besoin qu'ils rebondissent dans la scène.

Nous faisons ça en settant "importon trace depth" à une valeur supérieure à 0. Généralement, des valeurs élevées sont utiles mais la bonne valeur d'un "trace depth" dépends de la scène.

Pour éviter la prolifération d'irradiance particles, l'option "importon traverse" est toujours sur "off". Cette valeur ne peut pas être settée.

Les rayons

L'option "irradiance particles rays" détermine le nombre de rayons shootés depuis un point pour récupérer les informations d'illumination.

La contribution de ces rayons est moyennée. Ce qui veut dire que shooter plus de rayons produit un éclairage plus précis.

Les Figures 3 à 5 montrent différents résultats en faisant varier le nombre de rayons sans utiliser l'interpolation (en settant "irradiance particles interpolate" sur "never").

"irradiance particles rays" 2
"irradiance particles interpolate" "never"
IP tutorial Fig003.png
Figure 3
temps de rendu relatif: 2.6
"irradiance particles rays" 256
"irradiance particles interpolate" "never"
IP tutorial Fig004.png
Figure 4
temps de rendu relatif: 25.3
"irradiance particles rays" 512
"irradiance particles interpolate" "never"
IP tutorial Fig005.png
Figure 5
temps de rendu relatif: 50

Les temps de rendu pour les Figures 3, 4 et 5 sont très long car l'interpolation est désactivée, ce qui oblige mental ray à estimer l'irradiance en shootant des rayons sur chaque shading point (le nombre de rayons à shooter est déterminé par l'option "irradiance particles ray").

Ceci est la façon la plus précise de calculer l'illumination indirecte avec les irradiance particles. C'est également la plus lente.

L'image de la Figure 3 est très bruitée.

Pour chaque shading point, mental ray sample seulement dans deux directions, ce qui est très peu.

Pour produire l'image de la Figure 5, mental ray sample la particle map avec 512 rayons pour chaque shading point, c'est pour cette raison que l'image prend 50 fois plus de temps à rendre que l'originale.

Le temps de rendu peuvent être raccourci de manière significative en utilisant l'interpolation.

L'interpolation

Il y a deux string options lié à l'interpolation:

"irradiance particles interpolate" "always" / "never"
"irradiance particles interppoints" int

L'interpolation est activée en settant "irradiance particles interpolate" sur "always" et désactivée en la settant sur "never", comme c'était fait dans la section "Les rayons".

En utilisant l'interpolation, mental ray ajoute une dernière passe supplémentaire d'irradiance dans l'étape de preprocess; Il sample la particle map pour rassembler les informations d'illumination pour chaque irradiance particle, informations qui seront ensuite utilisées en tant que points d'interpolation.

Quand mental ray calcule l'irradiance d'un shading point (durant le rendu), il va chercher les n irradiance particles les plus proches, ou n est le nombre donné dans l'option "irradiance particles interppoints" et calcule la somme des poids de ses irradiances.

Ce processus est plus rapide que de tracer les rayons pour chaque shading point.

Rendre la même scène, mais cette fois, avec l'interpolation (en settant l'option "irradiance particles interpolate" sur "always"), se traduit par des temps de rendu plus courts.

"irradiance particles rays" 2
"irradiance particles interpolate" "always"
IP tutorial Fig006.png
Figure 6
temps de rendu relatif: 1.6
"irradiance particles rays" 256
"irradiance particles interpolate" "always"
IP tutorial Fig007.png
Figure 7
temps de rendu relatif: 2.4
"irradiance particles rays" 512
"irradiance particles interpolate" "always"
IP tutorial Fig008.png
Figure 8
temps de rendu relatif: 3.2

Les valeurs entrées pour l'image de la Figure 7 sont bonnes, nous les gardons.

La prochaine étape va consister à déterminer la valeur optimale de l'interpolation des points.

Dans l'exemple précédent, 64 points d'interpolation étaient utilisés (c'est la valeur par défaut).

Les Figures qui suivent montrent ce qui ce passe quand ce paramètre est changé.

"irradiance particles interppoints" 3
"irradiance particles rays" 256
"irradiance particles interpolate" "always"
IP tutorial Fig009.png
Figure 9
temps de rendu relatif: 2.4
"irradiance particles interppoints" 64
"irradiance particles rays" 256
"irradiance particles interpolate" "always"
IP tutorial Fig010.png
Figure 10
temps de rendu relatif: 2.4
"irradiance particles interppoints" 256
"irradiance particles rays" 256
"irradiance particles interpolate" "always"
IP tutorial Fig011.png
Figure 11
temps de rendu relatif: 4

Trois points d'interpolation (le minimum), c'est trop peu. L'image a des artefacts car l'irradiance au shading point est calculé en construisant la somme des poids de ces trois points uniquement.

Quand 64 points d'interpolations sont utilisés, les artefacts disparaissent car chaque point d'interpolation, individuellement, contribue moins à l'irradiance final.

Cependant, augmenter le nombre de points se traduit par des temps de rendu plus longs.

Utilisez assez de points d'interpolations pour éviter les artefacts et ne pas perdre des détails importants.

La valeur par défaut, 64, fonctionne très bien pour la plupart des scènes.

Options supplémentaires

L'environment

Les irradiance particles peuvent également récupérer les informations d'éclairage des environment shaders.

Trois options sont liées à l'environement:

"irradiance particles env"       bool   default on
"irradiance particles env rays"  int    dynamic default
"irradiance particles env scale" scalar default 1.0

"irradiance particles env" active/désactive la possibilité de récupérer l'éclairage des environment shaders.

"irradiance particles env scale" est un simple facteur d’échelle.

"irradiance particles env rays" est le nombre de rayons utilisés pour évaluer l'irradiance venant des environment shaders.

La valeur par défaut de "irradiance particles env rays" est le même nombre que celui fournit pour l'option "irradiance particles rays" (dynamique).

Ces réglages par défaut fonctionnent bien pour des scènes exterieures, mais pour des scènes d'interieur, ou l’environnement est seulement vu depuis une petite fenêtre, il est préférable d'augmenter la valeur de l'option "irradiance particles env rays" et de laisser la valeur de l'option "irradiance particles rays" inchangée.

Quand c'est possible, la meilleure solution est de désactiver "irradiance particles env" et d'utiliser un "mia_portal_light" à la place.

Les IP Map

Il peut arriver que vous ne vouliez pas reconstruire l'intégralité de la particle map.

Dans ce cas, il est également possible d'écrire la particle map sur le disque pour la réutiliser plus tard. Les deux options ressemblent à celles des photons et finalgather maps.

"irradiance particles file"    string default ""
"irradiance particles rebuild" bool   default on

Si le fichier spécifié dans "irradiance particles file" existe et que "irradiance particles rebuild" est "off", mental ray lit le fichier au lieu de calculer une nouvelle particle map. Si mental ray ne peut pas trouver le fichier, il calcule la map et la sauve sous le même nom.

En settant "irradiance particles rebuild" sur "on", mental ray calculera toujours la map.