IMAC3 - Programmation Temps-Réel

TD3 - Les beaux paysages

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)

En ce qui concerne la hauteur au point correspondant, il est donné par la formule :

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:

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