Introduction
Ce TD a pour but de vous faire toucher les problematiques liées à la représentation de paysages virtuels, grand consommateurs de triangles
Exercice 1 - Génération d'un terrain
En règle générale, un terrain se construit à l'aide d'une carte de hauteur. Cette carte est une simple image codée en niveau de gris ou chaque pixel indique la hauteur du terrain au sommet correspondant au pixel. On crée en effet une correspondance entre les pixels de l'image et les coordonnées des sommets du terrain. Ainsi, si le terrain occupe le rectangle (xmin,ymin) (xmax,ymax) et que l'image est de résolution (w,h) alors à un pixel (i,j) correspond le point :
x = xmin + j * (xmax-xmin)/(w-1)
y = ymin + i * (ymax-ymin)/(h-1)
z = hmin + pixel * (hmax-hmin)/255
Faites un programme qui charge une carte de hauteur (au format PPM) et visualise le paysage correspondant. Vous utiliserez pour ce faire une 'display list' ainsi qu'un 'vertex array'. Les données xmin, xmax, ymin, ymax, hmin, hmax seront fournies sur la ligne de commande ou dans un fichier.Exercice 2 - Illumination !
Maintenant que nous avons généré notre terrain, il nous reste à l'éclairer. Faites une fonction permettant de calculer, en chaque point du maillage de terrain, la normale. Celle ci sera égale à la moyenne des normales des facettes adjacentes à ce point. Une fois les normales calculées, intégrez à votre programme une lumière directionnelle. Puis faites varier la direction et l'intensité lumineuse de cette dernière afin de simuler une journée.Exercice 3 - Herbe, paquerettes, tout ça...
Un terrain en noir et blanc ça peut être chouette mais côté réalisme c'est plutôt limité. Un moyen pour améliorer le réalisme de notre scène consiste à texturer le sol avec par exemple une image d'herbe.
Vous allez donc ajouter donc une texture d'herbe à votre sol! Au boulot.
Remarques en vrac:
- A moins d'avoir quelques teraoctets de RAM sur votre carte graphique, il va falloir faire attention à la taille de vos textures.
- On peut réutiliser une même texture pour des zones de terrain adjacentes on choisissant correctement les coordonnées de textures et le mode d'application de texture qui va bien.
- Dans le cas où on suivrait la remarque précédente, c'est une bonne idée de faire attention aux jointures de la texture.
Exercice 4 - Herbe, paquerettes, TOUT ÇA...
En appliquant les remarques de l'exercice précédent on peut avoir l'idée d'utiliser des textures différentes pour différentes zones du terrain. Proposez et implémentez une solution permettant d'appliquer cette idée. Vous pourrez par exemple utilisez une carte supplémentaire permettant de stocker les types de terrains associés à chaque zone du terrain.
Bon courage