Chapitre 2.3 : illumination #
Afin de voir une scène 3D et les objets qui la composent, il faut rajouter des lumières et les effets associés (ombres, brouillard, réflexions, etc).
Il existe 3 classes de lumières :
- temps-réelles : elles sont calculées à l’exécution par Unity. Par conséquent, elles utilisent des techniques peu gourmandes en calculs. Ces lumières sont appropriées lorsque les objets de la scène sont dynamiques (changent à l’exécution);
- pré-calculées : on parle de
Baked Lights. Ici, l’illumination est calculée avant l’exécution. Les résultats sont dans un premier stockés dans desLightmaps, puis réutilisés en temps-réel. Les techniques utilisées sont plus complexes mais donnent des résultats plus réalistes. Ces lumières sont appropriées pour des scènes statiques c’est-à-dire qui ne changent pas à l’exécution; - hybrides : enfin, il est possible de mélanger les 2 types de lumières selon les objets 3D considérés.
Ce chapitre se focalise uniquement sur les lumières temps-réelles. Les techniques plus avancées permettant de faire des rendus photoréalistes seront abordées dans le chapitre dédié à l’illumination globale.
Light Component #
Dans Unity, les Lights1 sont composées et représentées de la manière suivante :
- le
Gizmode laLightet son icône associée dans la scène 3D; - le
Light Componentavec les paramètres des lumières.
Il faut noter qu’une Light est un GameObject, et donc contient aussi un Transform.
Pour créer une Light, il faut aller dans le menu GameObject > Light et choisir le type de lumière désiré, comme indiqué sur la figure suivante :
Lights peuvent être de 4 types :
- Directional : ici, seule l’orientation est importante;
- Point : pour ce type de lumières, seule la position a une incidence sur l’illumination;
- Spot : dans ce cas, modifier la position ou l’orientation de la lumière modifie aussi l’illumination;
- Area : ce type de lumières est particulier car c’est toute la surface qui a son importance. Ces lumières sont plus complexes à calculer et sont forcément Baked et non Realtime.
Les principaux paramètres des Lights sont modifiables facilement grâce au Light Explorer atteignable par le menu Window > Rendering > Light Explorer.
La figure suivante en donne un aperçu :
Culling Mask #
De manière similaire aux Cameras, le paramètre Culling Mask permet de spécifier quels groupes d’objets 3D doivent être considérés (rendus) par la Light.
Les figures suivantes montrent la différence entre une lumière qui considère tous les objets 3D de la scène, et une lumière que ne considèrent qu’un sous-ensemble de ces objets.
Tous les objets 3D

Seulement les objets 3D sélectionnés

Lumière environnementale #
En plus des Light Components, l’environnement participe aussi à l’illumination et a un impact sur l’aspect final de la scène 3D.
La fenêtre de configuration pour les différents paramètres de lumière environnementale est appelée la Lighting window2 et est accessible dans le menu Window > Rendering > Lighting comme indiqué sur la figure suivante :
On obtient alors une fenêtre contenant les onglets Scene, Environment et Baked Lightmaps.
En sélectionnant l’onglet Environment, la fenêtre affiche quelque chose de similaire à ce qui suit :
- les
Skybox; - La lumière ambiante;
- les réflexions associées à l’environnement;
- et le brouillard dans la scène 3D.
Les sous-sections suivantes introduisent ces notions à l’exception des réflexions qui sont, quant à elles, abordées dans un chapitre dédié.
Skybox #
Une Skybox représente ce qui est visible à l’arrière-plan, quand il n’y a aucun objet 3D pour obstruer la vue.
URP vs HDRP
Le système deSkyboxest différent selon qu’on utilise URP ou HDRP. Dans ce cours, nous nous focalisons sur URP.
Dans Unity, une Skybox est en fait un Material avec un Shader de type Skybox.
Une fois créée, cette Skybox peut être soit globale (donc partagée par tous les objets), ou locale pour chaque caméra.
Si elle est globale, alors on peut rajouter le Material dans le paramètre Skybox Material de la fenêtre Lighting window.
Si elle est locale à une caméra, alors il faut dans un premier temps rajouter un Component de type Skybox à la caméra, puis y associer la Skybox.
Lumière ambiante #
La lumière ambiante (Ambient Light) est une lumière diffuse, qui vient de toutes les directions à la fois.
Elle est très utile car Les techniques de rendus actuelles “perdent” en général un peu de lumière par rapport à la réalité.
La lumière ambiante est donc une technique simple pour “rehausser” artificiellement le niveau de lumière dans la scène.
Cette lumière permet aussi de rajouter des ambiances particulières en fonction de la teinte utilisée.
Brouillard #
Le brouillard (Fog) dans une scène 3D offre plusieurs avantages :
- il permet de cacher les éléments éloignés de la caméra, et donc d’éviter les effets de
clipping(lorsqu’un objet dépasse soudainement lefar clipping plane); - il permet de mettre en évidence les objets qui sont aux premier-plan, par rapport aux éléments plus éloignés de la caméra.
Ombres #
Les ombres sont un élément essentiel de toute scène 3D.
Ce sont elles qui donnent l’information de profondeur.
En particulier, sans les ombres nous avons souvent l’impression que les objets flottent au lieu d’être posés sur une surface.
La technique principale pour calculer les ombres est appelée Shadow Mapping
Elle consiste à faire un pseudo-rendu de la scène en positionnant la caméra sur chacune des lumières.
Ainsi, on peut calculer toutes les surfaces vues (et donc éclairées) pour chaque lumière.
Le résultat de ce calcul correspond en fait à la Depth Map calculée durant le rendu.
Dans le cas du calcul d’ombres, on parle plutôt de Shadow Map.
Dans un deuxième temps, grâce aux différentes Shadow Maps calculées, on peut rapidement déduire les parties ombragées, et ceci pour chaque lumière.
Les ombres sont configurables de 3 manières différentes :
- les paramètres de qualité des ombres. Ils sont globaux et appliqués à toute la scène;
- les paramètres liés à chaque objet;
- et enfin les paramètres liés à chaque lumière.
Les paramètres de qualité des ombres sont stockés dans des Assets.
En allant dans le répertoire Assets/Settings, on peut trouver plusieurs Assets contenant les paramètres de qualité pour le rendu.
ATTENTION
Il est important de sélectionner le bon
Asseten fonction de celui qui est appliqué dans le projet. Pour ce faire, il faut regarder dans lesProject Settingspuis dans la sectionQuality.
En sélectionnant Universal Render Pipeline (le nom peut varier), la section concernant les ombres ressemble à la figure qui suit :
En sélectionnant le GameObject qui nous intéresse, alors on peut consulter le Mesh renderer associé.
En particulier, il contient les paramètres pour définir les ombres spécifiquement à ce GameObject comme indiqué sur la figure qui suit :
Enfin, on peut configurer les ombres projetées pour chaque lumière.
Pour ce faire, il faut aller dans le Light Component et modifier les paramètres présents :
Slides #
À savoir #
- Savoir reconnaître une caméra dans la scène (frustum).
- Savoir à quoi sert une lumière ambiante.
- Connaître les différentes types de lumières temps-réelles, les différences entre elles, et les paramètres associés.
- Savoir à quoi servent les paramètres des caméras et des lumières.
- Savoir ce qu’est le Light Explorer et à quoi il sert.
- Savoir ce qu’est la Skybox.
- Savoir ce qu’est le brouillard dans une scène 3D et à quoi il sert.
- Savoir ce qu’est une ombre et à quoi elle sert.
- Savoir ce qu’est une Light Map.
- Savoir ce qu’est une Shadow Map.