Génération de terrain
(2/2) Par Xavier Michelon |
Nous avons vu que lorsque vous décrivez un polygone avec OpenGL, vous avez la possibilité de spécifier la méthode utilisée pour colorer la primitive grâce à la commande glShadeModel() qui peut prendre comme valeur GL_FLAT (mode à plat) ou GL_SMOOTH (mode dégradé) :
- Si vous utilisez le
mode à plat GL_FLAT, le polygone sera rempli de façon uniforme. Même si vous
affectez une couleur différente à chaque sommet, le polygone sera rempli avec
la couleur du premier sommet du polygone. Ce mode de dessin peut vous sembler
désuet, mais il est utile si vous dessinez une scène en fil de fer ou si vous
souhaitez créer un effet 'cartoon' en superposant un rendu à plat et un rendu
fil de fer.
- Avec le mode dégradé GL_FLAT, le remplissage du polygone se fait par interpolation
des couleurs des sommets (algorithme de Gouraud). Derrière ces termes techniques
se cache en fait un principe simple : le remplissage du polygone se fait par
un dégradé de couleurs.
Lorsque nous avons étudié la question de l'éclairage, nous avons vu qu'éclairer une scène consistait à modifier la couleur des objets en fonction des paramètres d'éclairage et de matériau. Pour être plus précis, l'éclairage modifie la couleur des sommets constituant les objets. L'algorithme de shading propage ensuite ces modifications de couleur à l'ensemble des objets. L'avantage de ce principe est qu'il est relativement peu coûteux. Cependant, il est source d'erreur.
Prenons un cas simple, illustré sur les figures 2 et 3, qui représentent un plan éclairé par un spot : sur la figure 2, le plan est constitué d'un unique polygone. Sur la figure 3, il est représenté par un maillage de polygones. Compte tenu des explications que je viens de vous fournir concernant l'éclairage et le shading, vous devriez avoir deviné l'explication de ce phénomène : dans le cas de la figure 2, l'éclairage n'est calculé qu'aux quatre coins du plan et ce dernier est rempli avec l'algorithme de dégradé. Comme la tache spéculaire créée par le spot ne 'touche' aucun sommets, elle n'apparaît pas lors du rendu de la scène. Bien entendu, ce problème n'apparaît avec le maillage de la figure 3 puisque la tâche spéculaire éclaire certains vertice du maillage.
Figure
2 : Eclairage d'un plan constitué d'un unique polygone
|
Figure
3 : Eclairage d'un plan défini par un maillage
|
|