Accueil » Rédactions » La Radiosité

La Radiosité



Rendu par algorithme de radiosité par Xavier Michelon




Introduction
Si vous vous êtes penchés sur les nouvelles fonctionnalités disponibles dans Blender depuis la fin du système de C-Key en juin 2000, vous avez sans doute remarqué un nouvel onglet dans votre fenêtre de travail : l’onglet Radiosity. Pareillment, vous avez pu remarquer dans Moonlight Atelier une entrée de menu portant le même nom. Vous l’avez peut-être ignoré, et vous avez eu tort, puisqu’en vous plongeant un peu dans les fichiers disponibles sur le site de Blender (notamment l’appendice au Manuel 1.8) ou de ressources 3D en général, vous auriez découvert les impressionnantes possibilités offertes par les méthodes de rendu par radiosité, aussi appelées méthodes d’illumination globale.

Au cours de cet article, je vous propose d’aborder le principe de la radiosité, afin d’en comprendre l’intérêt et les limitations. Nous ne nous intéresserons pas ici à l’aspect pratique de l’utilisation du moteur de radiosité dans Blender, qui est abordé dans un tutoriel disponible sur www.blender.org.

 

 


Reconstitution d’un navire Antique avec Blender, rendu en radiosité, par Frederic Toussaint

 

 

 

Comparatif

Pour commencer, je vous propose de jeter un coup d’oeil aux deux images ci-dessous. Elles sont issues de la même scène blender. La première à été calculée avec l’algorithme de rendu scanline classique. La seconde a été rendue avec le moteur de radiosité. Les différences sont nombreuses, constatez par vous même.



Rendu scanline
 
Rendu radiosité



 

 

Principe de la radiosité

Si vous avez fait un peu de physique au cours de votre vie, vous connaissez sans doute le principe de ‘dualité onde-particule de la lumière’, qui dit, pour résumer, que la lumière se comporte à la fois comme une particule et comme une onde (tout est dans l’intitulé du principe :). Les algorithmes classiques de rendu (lancer de rayon (raytracing), z-buffer (tampon de profondeur) et sa variante scanline (balayage)) utilisent l’aspect particulaire de la lumière en simulant le trajet des rayons lumineux. La radiosité est basée pour sa part sur les propriétés ondulatoires de la lumière.

Historiquement, les algorithmes de radiosité sont nés de l’adaptation à la lumière d’un modèle mis en place par des physiciens pour matérialiser les transferts de chaleur. Le principe global de la radiosité et de simuler les échanges énergétiques induits par les ondes lumineuses dont la longueur d’onde détermine la couleur.

Considérons une scène simple modélisée par un maillage polygonal : une pièce vide contenant un cube. Les éléments de base utilisés par la radiosité sont les patches (éléments de surface plans) : chacune des faces du cube et de la pièce est un patch. Chacun des patches va recevoir de l’énergie des autres faces en absorber une certaines partie (en fonction des propriétés du patch (le matériau)), et renvoyer le reste vers les autres patches. L’énergie transmise d’un patch A à un patch B est fonction de la distance entre les patches, de leurs orientations respectives, et de la présence éventuelle d’autres patches faisant occlusion.



Calculs des échanges
énergétiques entre patches

Cas d’occlusion

 

Bien sûr, pour obtenir un échange de lumière, il faut qu’il y ait des sources : certains patchs sont définis comme étant émetteurs de lumière. Dans notre scène exemple, on peut définir le plafond comme patch émetteur, ou bien rajouter une sphère dont chaque facette sera émettrice.

 

 

 

 

L’équation de radiosité

Nous avons jusqu’à présent parlé d’échanges énergétiques entre les différents patches de la scène. Cette énergie sera représentée dans le modèle d’illumination globale par la radiosité, qui est une énergie lumineuse émise par une unité de surface en une unité de temps, et que l’on note généralement B.

L’ensemble des échanges d’énergie est régi par une équation dite ‘de radiosité’ qui résume tout ce que nous avons dit jusqu’à présent :

 

 

 

 

La radiosité émise par un patch i (Bi) est égale à l’énergie autoémise (Ei) plus la somme de toutes les radiosités reçues des autres patches j pondérée par un facteur de ré-emission dépendant du matériau (Ri). L’énergie reçue par le patch i du patch j est égale au produit de la radiosité émise par j multipliée par un facteur de forme Fji, dépendant de l’orientation relative de i et de j, de leur distance et de la présence d’autre objets entre les deux patches.

L’équation de radiosité présentée ci-dessus est issue de la simplification d’une équation originale relativement chargée, contenant des intégrales doubles et autres amusements mathématiques. Les hypothèses faites pour arriver à la simplification feraient sans doute hurler un mathématicien, mais l’essentiel est d’obtenir un résultat correct. Ces hypothèses ont des conséquences non négligeables :

  • La radiosité est supposée constante sur chaque patch. Ainsi, si on reprend notre scène, chaque face du cube aura une couleur unique. Pour remédier à ce problème, les algorithmes subdivisent les patches en plus petits patches. Chaque sous-patch aura sa propre couleur. Dans notre scène, chaque mur et face du cube sera décomposé en centaines de petits patches qui auront chacun leur radiosité propre. Lors du rendu final, un lissage permet de donner un aspect continu à chaque face.
  • La lumière est réfléchie par les patches uniformément dans toutes les directions (lumière diffuse). Cela explique l’aspect mat des rendus par radiosité. Aucun objet n’a un aspect brillant.

 

 


Le processus de subdivision des pactches

 

 

 


Résolution de l’équation de radiosité

Le calcul d’une scène par un algorithme de radiosité implique la résolution de l’équation de radiosité pour chaque patch, sachant bien évidemment que les patches ont été subdivisés. Ceci équivaut à résoudre un système linéaire, de taille N, où N désigne le nombre de patches de la scène. Nos ordinateurs actuels n’ont pas la capacité de résoudre des systèmes d’un telle taille dans des temps humainement acceptables (et ils ne sont pas près de pouvoir le faire !).

Aussi, on fait appel à des méthodes de résolution itératives telles que celles de Jacobi ou Gauss-Seidel, que les plus matheux d’entre vous connaîtront sans aucun doute. Le principe est de résoudre le système par étapes successives, en se rapprochant de plus en plus de la solution exacte. Pour l’utilisateur, et notamment dans Blender, ceci se traduit par un raffinement progressif de l’image qui se forme au fur et à mesure, en tendant vers la solution correcte. La résolution complète (qui consiste à trouver une solution exacte du système linéaire) n’est jamais faite. Le processus de calcul s’arrête soit manuellement par intervention de l’utilisateur, soit automatiquement lorsque la quantité d’énergie restant à distribuer est inférieure à un certain seuil. En effet, les méthodes itératives ont pour signification physique la répartition jusqu’à absorption complète par les patches de toute l’énergie distribuée par les sources.

 

 

 

Avantages

L’un des avantages principaux de la radiosité est l’extrême qualité des rendus. Vous pourrez vous en rendre compte en admirant la qualité des images proposées par les utilisateurs de Blender dans les dernières moutures du Community Journal sur le site de Blender.

Autre avantage : la résolution du système d’équations linéaires est indépendante du point de vue. Une fois que vous avez effectué le calcul, vous pouvez déplacer votre caméra sans avoir à recalculer le modèle. L’abstraction ‘caméra’ qu’utilisent les modeleurs n’est qu’un point de visualisation qui ne représente pas un objet visible à l’écran. Le déplacement des caméras n’intervient pas dans les calculs d’échanges énergétiques puisque la caméra ne correspond à aucune face qui intervient dans le calcul. En revanche, le moindre déplacement d’objet dans la scène modifie la topologie de la scène et fait varier les échanges.

En conséquence, le modèle radiosité est parfait pour des domaines où on utilise le rendu de scène fixe, en architecture par exemple.

D’un point de vue programmation, la radiosité prend en charge elle-même le calcul des ombres grâce à la présence du facteur de forme présent dans l’équation de radiosité

 

 

 

 

inconvénients

Le principal inconvénient de la radiosité est le temps de calcul relativement élevé nécessaire à l’obtention d’un modèle correct. Ces temps sont bien sûr liés à la résolution de l’équation, et sont amplifiés par la nécessité de subdiviser les surfaces à calculer. Le calcul du facteur de forme entre 2 patches est également lourd, en partie à cause du calcul des éventuelles occlusions par d’autres faces.

Dans le cas de scènes animées où seule la caméra est animée, comme un seul calcul de radiosité est nécessaire, le temps de calcul est acceptable. En revanche, sur des scènes de type cinématographiques où les objets bougent, le modèle n’est vraiment pas approprié.

D’autres inconvénients sont liés à l’hypothèse faite que la radiosité est constante sur un patch et que le facteur de forme est constant sur ce même patch. Voici un exemple classique créé avec blender :

 

 


rendu final par radiosité

vue en mode solide

 

 

 

 

Une source lumineuse est placée dans le quart de sphère parfaitement plaqué contre le mur. On remarque que la lumière « bave » pourtant sous le spot. Si on regarde la vue en mode solide proposé pendant le calcul de la solution de radiosité, on peut expliquer le problème : certains patches (carrés de couleur uniforme) ont une partie à l’intérieur du bol, et une autre partie à l’extérieur. Comme le facteur de forme et la radiosité sont considérés comme constant sur un patch, l’algorithme prend un point du patch au hasard pour le calcul (pas forcément le centre). Sur les patches « à cheval », le point est pris à l’intérieur du bol, et la couleur est étendue à l’extérieur. En plus de cela, le lissage de gouraud appliqué pour le rendu final provoque un étalement de la couleur qui amplifie le phénomène de bavure

L’hypothèse simplificatrice consistant à considérer uniquement la lumière diffuse est un facteur limitant important pour la radiosité : pas d’objets brillants. Pour pallier à ce grave défaut, les principaux logiciels de rendu par radiosité autorisent, par différentes techniques, la combinaison du rendu radiosité avec du raytracing prenant en charge les lacunes de la première méthode et permettant de gérer les réflexions d’objets. Voici un exemple comparatif rendu avec Moonlight Atelier, proposé par André Pascual :

 

 

 

 


Les différences sont moins beaucoup moins flagrantes qu’avec l’exemple proposé au chapitre Comparatif. La radiosité accroit cependant içi la justesse physique du modèle d’éclairage.

 

 

 

 

Conclusion

Vous connaissez maintenant les principes de base de la radiosité. J’espère que cette article vous aura donné envie d’expérimenter avec Blender. Vous savez maintenant ce que vous pouvez envisager, et ce qui sera difficilement réalisable. Vous avez aussi un aperçu des raisons qui pourront faire que votre rendu n’est pas satisfaisant.

 

 

 

 

Si vous souhaitez en savoir plus sur la radiosité, je vous conseille de jeter un coup d’oeil aux références suivantes :

 

Introduction à l’infographie
J.Foley
Addison-Wesley
La référence de l’infographie, traduite en français et récemment réédité par Vuibert. Le livre contient une section sur l’illumination globale.

 

 

Radiosity & Global Illumination
F.Sillion
Morgan Kaufmann
Une livre entièrement dédié au sujet qui nous intéresse. Très Technique.
Chargement....

A Lire également