top of page
Photo du rédacteurJean-Philippe

3D Pipeline Serie - Les éclairages (lightning)



La lumière en générale

Dans le monde réel, la lumière se déplace en ligne droite. Elle part d’une source comme le soleil ou une ampoule puis est réfléchie par les objets. Les rayons réfléchis continuent ensuite vers l’oeil humain ou vers l’objectif d’une caméra, où ils décrivent les objets qu’ils ont rencontrés. La lumière réelle se compose de plusieurs longueurs d’onde qui donnent les couleurs. Si un objet paraît bleu, c’est que l’objet absorbe toutes les autres couleurs à l’exception du bleu.

Les lumières virtuelles

Dans le domaine virtuel, tout se passe de la même manière : la perception des objets dépend de la lumière, ce serait impossible autrement. L’oeil est remplacé par une caméra virtuelle qui retranscrira sur une image l’entièreté des rayons qui l’auront traversée. Chaque pixel à l’écran est la résultante de quelques rayons produits par une source lumineuse, qui ont eu un parcours riche en rebonds, et qui ensemble définiront l’image dans sa totalité.

Si vous avez un peu de mal à comprendre, nous pouvons prendre un équivalent réel : le polaroïd, qui capte la lumière et fait apparaître l’image petit à petit sur le papier. Cette image résulte de tous les rayons qui ont traversé le diaphragme en une fraction de seconde lors de la pression sur le bouton. Virtuellement, tout se passe de la même manière à l’exception que c’est la machine qui simule le résultat, l’image, par rapport à la scène virtuelle qui se substitue au monde réel. Ce que nous appelons alors rendu est l’ensemble des calculs qui permettent de simuler la lumière et de composer une ou plusieurs images.

La lumière fait donc partie intégrante des méthodes de rendu, qu’elle soit en temps réel ou non. La plupart des méthodes utilisent une technique appelée le ray-tracing, notamment pour le rendu physique réaliste (PBR : Physically Based Rendering) qui tend à imiter au maximum les modèles physiques décrivant le comportement de la lumière dans le monde réel. Cette propension à vouloir se rapprocher de la réalité implique des temps de calculs plus longs. Même si ces temps de rendu diminuent avec l’évolution des technologies du numérique.


Bien que les rendus en temps réel pré-calculent les éclairages et utilisent quelques raccourcis algorithmiques, l’ensemble des résultats aura toujours pour objectif de simuler les comportements d’éclairage réels. Dans le cas particulier du temps réel, l’objectif sera d’optimiser au maximum les calculs pour permettre cet affichage quasi instantané des images, ou tout du moins suffisamment rapide pour que l’oeil perçoive l’illusion du mouvement.


Voyons ensemble les différents types d’éclairage virtuels :

Sun light - Cet éclairage crée une source lumineuse dont chaque rayon est parallèle. Ce comportement est similaire au rayon de lumière provenant du soleil, soit une lumière lointaine et de forte puissance. L’avantage de ce type de lampe est qu’elle sera identique en tout point de la scène. Ce type de lumière donnera naissance à des ombres relativement marquées surtout dans les scènes extérieures avec une météo clémente.


Point light - À la différence des types sun, les rayons proviennent tous d’un même point et ont tendance à s’éloigner les uns des autres. Leur influence diminue donc très rapidement avec la distance, à moins d’en augmenter la puissance. C’est exactement le comportement d’une ampoule à incandescence.


Area light - Il s’agit d'une lampe projetée à partir d’un objet « plat », carré ou ovale, mais uniquement dans une seule direction. Il est parfait pour recréer la lumière traversant une fenêtre ou des lumières diffusées. Les rayons ne seront pas parallèles et comme pour le point light, leur influence diminuera avec la distance.


Spot light - Comme son nom l’indique, il s’agit d’un spot. La lumière est projetée et circonscrite à un cône et l’intensité diminue à l’identique des point lights avec la distance. Les rayons émis étant non parallèles, on pourra aussi augmenter la portée en augmentant la puissance du spot, comme on le ferait avec un spot réel.

Enfin, l’objet tridimensionnel lui-même peut être utilisé comme source lumineuse. Avec un matériau utilisant un shader d’émission, l’objet simulera l’émission de lumière en tout point, un peu comme un sabre laser.


Illumination globale

L’illumination globale définit un ensemble d’algorithmes d’illumination permettant non seulement de calculer les rayons de lumière totalement absorbés par les objets donc bloqués, mais aussi les rayons qui ont été réfléchis et qui constituent donc une illumination indirecte. En pratique, la réflexion, la réfraction et la radiance constitueront une illumination indirecte, car l’objet n’absorbe pas la totalité de l’énergie et les rayons réfléchis sont donc « marqués » par l’objet et imprimeront sur le prochain objet croisé les longueurs d’onde non absorbées lors du contact avec le premier objet.

Un exemple simple est celui d’un cube rouge. Sur un support blanc, une partie des rayons réfléchis par le cube, même relativement mat, aura tendance à colorer le support. Aussi, si un objet en verre teinté de vert est traversé par un rayon de lumière blanche, ce dernier ressortira de l’autre côté dévié et coloré en vert.


Il est possible de déterminer le nombre de « rebonds » qu’un rayon peut effectuer avant de ne plus être pris en compte. Cela permet de limiter la simulation pour optimiser le temps de calcul. La plupart des softs permettront de limiter les rebonds par rapport au type de propriété des objets, la réflexion, la réfraction, la diffusion etc et cela permettra d’optimiser davantage le temps de rendu.

Les rendus utilisant l’illumination globale semblent plus réalistes mais demandent des temps de calculs plus longs. L’affichage des images en temps réel (gaming) impose plus de contraintes et ces derniers utiliseront des approximations ou des pré-calculs permettant de préserver les ressources de la machine, avec des méthodes telles que le lightmapping, les lights probes, et les reflexion probes.


Light mapping

Pour tous les objets et lumières relativement immobiles dans une scène, il est possible de pré-calculer les effets de lumière sur les objets. Ces informations sont stockées dans un ensemble de textures, qui viendront se superposer aux textures des objets et donneront l’impression que ceux-ci sont éclairés.


Les light maps sont donc rendues avant et utilisées ensuite en temps réel pour gagner du temps et des ressources. Même s’il existe un light mapping dynamique permettant de changer les conditions lumineuses générales de la scène en cours de jeu, cette méthode n’est possible que pour des sources lumineuses fixes ou dont le mouvement est prévu et pré-calculé.


Light probes

Pour solutionner les light maps un peu trop rigides et rendant impossible l’éclairage réaliste d’objets en mouvement, il est possible de faire appel aux light probes. Celles-ci, à l’opposé des light maps, stockent des informations sur la lumière traversant l'espace vide de la scène plutôt qu’uniquement les surfaces. Cette méthode se caractérise par un maillage continu de light probes qui mesurent la lumière en fonction de leur position. Lorsqu’un objet en mouvement traverse un « champ » de light probes, la lumière qu’il reçoit est calculée en prenant en compte les informations lumineuses stockées des light probes les plus proches. Mais comme pour les light maps, les données d’éclairage en fonction de la position des light probes doivent être pré-calculées.



Reflexion probes

Les reflexion probes sont des espaces où la réflexion d’un objet est toujours identique. La réflexion est pré-calculée sous forme d’une texture qui interviendra dans l’apparence des objets possédant des propriétés de réflexion. L’influence de cette texture de réflexion sur l’apparence de l’objet dépendra de l’angle d’observation et variera avec ce dernier.

En utilisant ces reflexion probes, nous épargnons à la machine de calculer de nombreux rebonds de rayon, tout en donnant à nos objets une réflexion réaliste et convaincante. L’influence d’une reflexion probe est limitée dans un espace précis déterminé par le designer. Tout objet situé dans l’espace d’influence réfléchira la même image.


Notons par ailleurs que nous ne pouvons pas simuler un miroir en utilisant cette solution. Il sera nécessaire de passer par une illumination globale (rendu long) ou par une projection d’une caméra sur un objet (rendu en temps réel).


Les méthodes illustrées ici sont utilisables en tout temps et il est tout à fait possible par exemple d’utiliser des méthodes adaptées au rendu en temps réel pour un rendu d’images d’un film d’animation, dans l’idée d’optimiser les temps de rendu.

Conclusion

Comme dans le monde réel, l’éclairage est indispensable pour percevoir la scène et les objets qu’elle contient. Les softs actuels mettent à disposition du designer toute une série de lampes et de méthodes dont l’objectif est d’imiter au mieux le comportement de la lumière. Les rendus en temps réel sont optimisés par l’utilisation d’outils tels que les light maps, les light probes et les reflexion probes.


Nous espérons que vous avez apprécié la lecture de cet article. Si c’est le cas, rendez-vous pour le prochain qui sera dédié au rigging et au skinning !


A très bientôt,

Jean-Philippe 🔥

50 vues0 commentaire

Comments


bottom of page