Direct3D L'éclairage

Un article de Mangue.org, l'encyclopéde libre.


Lumière diffuse, spéculaire, ambiante... Ces termes vous semblent obscurs ? Nous allons de ce pas éclairer vos lanternes à propos de la notion d'éclairage dans le monde de la 3D.


L'éclairage peut servir à créer une foule d'effets visuels et d'ambiances: impasses glauques, tavernes aux lumières tamisées... Mais avant tout cela, il sert à obtenir une image à l'écran. En effet, dans un monde 3D comme dans la réalité, s'il n'y a pas de lumière, on ne voit rien. Ainsi, plusieurs types de lumières sont à notre disposition afin de donner vie à nos objets.


Sommaire

Lumières ambiante et émissive


Imaginez une lampe halogène telle que sur l'image ci-dessous. Celle-ci n'éclaire que vers le plafond, et pourtant toute la pièce est éclairée, du plafond jusqu'au sol. Cela est dû au fait que les rayons lumineux rebondissent sur les murs, le plafond, et les divers objets de la pièce. La lumière ambiante sert à simuler ce phénomène. Chaque objet possède une couleur ambiante, qui sera plus ou moins visible et modifiée suivant l'intensité et la couleur de la lumière ambiante globale.
La lumière émissive sert à affiner la représentation de ce phénomène. Grâce à elle, on peut définir la quantité de lumière émise par chaque objet.


Image:D3d_cours2-01.gif

Une lampe halogène (si, si...).


Lumière diffuse


Ce type de lumière sert à modéliser ce qui se produit lorsqu'un rayon de lumière frappe un objet et est réfléchi. (ce qui va contribuer à la lumière ambiante) Selon l'objet, le rayon pourra gagner ou perdre en intensité, et prendre une teinte différente que celle qu'il avait avant de rebondir sur l'objet. Le rayon étant réfléchi dans toutes les directions, son rendu ne varie pas en fonction de l'endroit où se trouve la caméra.


Lumière spéculaire


Les surfaces brillantes reflètent la lumière d'une façon particulière: la lumière est diffusée dans des directions spécifiques plutôt que dans toutes les directions, ce qui crée la "tache" blanche que l'on peut voir sur l'image ci-dessous. La lumière ainsi reflétée est modifiée, tout comme cela était le cas avec la lumière diffuse. La différence tient dans le fait que, comme les rayons lumineux ne sont pas reflétés dans toutes les directions, mais vers une direction spécifique, la représentation de la lumière spéculaire varie en fonction de la position de la caméra.


Image:D3d_cours2-02.gif

Un exemple de lumière spéculaire.


Autre types de lumières


Alors que les types de lumières précédents tendaient à reproduire des phénomènes liés à la réflection sur un objet, nous allons maintenant nous pencher sur les sources de lumière. Il en existe deux types: les lumières omnidirectionnelles (les "point lights" et les "omni lights") qui émettent dans toutes les directions, comme par exemple le soleil ; et les spots lumineux ("spotlights") qui émettent de la lumière dans une direction précise, comme par exemple un lampadaire. La différence entre les point lights et les omni lights est que la point light possède une source bien précise, comme par exemple une torche, tandis que l'omni light éclaire globalement dans une direction donnée, comme , dans une certaine mesure, le soleil. Les spots lumineux sont quant à eux composés de trois éléments : le premier est le point à partir duquel la lumière est émise. A partir de ce point, la lumière est projetée dans un cône, qui produit un cercle de lumière (le second élément) et une zone, le long de ce cercle, dans laquelle la lumière s'atténue peu à peu jusqu'à s'éteindre. (c'est le troisième élément)


Image:D3d_cours2-03.gif

Omni light et spotlight.


Types d'ombrage


Direct3D supporte deux types d'ombrages : les faces pleines (aussi appelé "flat shading") et l'ombrage de Gouraud. Les faces pleines utilisent la normale de chaque surface pour l'éclairer, ce qui fait qu'une seule couleur est associée à chaque surface, d'où l'aspect "facetté". L'ombrage de Gouraud, lui, fonctionne non pas au niveau de la surface mais du vertex: il calcule la normale d'un vertex en faisant la moyenne des normales des surfaces qui l'utilisent. Pour une surface donnée, il interpole ensuite les valeurs de ses vertices afin de produire un dégradé.


Image:D3d_cours2-04.gif

Faces pleines et ombrage de Gouraud.


Conclusion


Nous venons de présenter rapidement la notion d'éclairage et d'ombrage en 3D : ces notions sont importantes, car ce sont ces deux composantes qui déterminent en grande partie l'apparence de l'image générée. Nous verrons au fil des articles comment il est possible de manipuler et de paramètrer l'éclairage et l'ombrage avec Direct3D.

Outils personels