Vous êtes sur la page 1sur 2

Projet d'infographie n°1

Cours d'infographie
Master 1 : Ingénierie informatique
Modélisation et textures
Utilisation d’un quad-tree pour organiser et sélectionner les éléments d’un décors de
grande dimension en fonction de la position de la caméra.
Le but de ce travail est de modéliser un terrain couvert de végétation à partir d’une image représentant les altitudes de la
scène (height-map). Afin d’optimiser l’affichage d’une telle structure qui peut être très exigeante en ressources, le plan
de la zone sera stocké dans un quad-tree. Cet arbre permet d’affiner le décors lors de variation d’altitudes fortes et de le
simplifier lorsque les zones sont planes.
L’image d’altitude fournie code deux informations :
- dans le plan rouge, l’altitude de la zone couverte par le pixel,
- dans le plan vert la densité d’arbres dans cette zone.
Un fichier texte de description indique :
- Les dimensions de la zone à représenter,
- les altitudes minimum et maximum du terrain,
- la tolérance du quad tree
Ce travail doit être réalisé par groupe de 2 étudiants pour le ??. Chaque groupe doit rendre par mail à son intervenant de
TD :
- un court rapport (pdf) présentant le travail réalisé, les problèmes rencontrés et les solutions trouvées, quelques
illustrations d’exécution du programme.
- Le code source du programme accompagné des fichiers permettant de le compiler et de le tester.
Exercice 1 Création du quad-tree
1. Charger les fichiers d’entrée.
L’image décrivant l’altitude est carrée et admet comme nombre de pixels coté un exposant de 2. Charger cette image au
format PNG en utilisant le module de chargement vu en TD 6 pour charger cette image en mémoire.
Interprétez le fichier de description pour récupérer les paramètres qui y sont stockés.
2. Construction du Quad-tree
A partir de l’image, construire un quad-tree sur le principe suivant :
- On associe à la racine de l’arbre l’image entière.
- Si la partie de l’image d’altitude associée à un nœud admet des variations fortes (différence d’altitude maxi > valeur
indiquée dans le fichier de description), alors il faut subdiviser.
- Subdiviser consiste à découper la zone en 4 quartiers (NW,NE,SW,SE). Le nœud subdivisé admet donc 4 fils à
chacun desquels est associé un quartier de l’image.
Une fois ce quad-tree généré, chaque feuille est associée à une zone de l’image, on peut donc calculer une altitude
moyenne et une densité de végétation moyenne associée à cette feuille.
Exercice 2 Création du modèle géométrique du sol
1. Vertex-Array du sol
Réalisez une fonction qui construit un Vertex-Array stockant la géométrie du sol à partir des altitudes stockées dans les
feuilles du quad-tree. La construction des tableaux de description de la géométrie pourront être réalisés en plusieurs
étapes : un premier parcours de l’arbre pour mémoriser les sommets (en évitant les doublons) et un second parcours
pour définir les faces du maillage constituant le sol.
2. Liste des arbres
Réaliser une fonction qui construit la liste des positions des arbres en fonction des densités d’arbres mémorisées dans le
quad-tree.
Ecrivez une fonction permettant de placer un arbre sur le sol en tenant compte de l’altitude locale. Sachant que l’arbre
est placé en (x,y) sur la carte, calculer son altitude z à partir de l’altitude du sol (vous pouvez par exemple utiliser le
lissage bilinéaire applique à la valeur d’altitude).
Afficher l’ensemble de ces données, utilisez les bill-board vus en TD pour dessiner les arbres.
Exercice 3 Navigation dans la scène
1. Placement de la caméra
Utilisez une fonction similaire à celle permettant de placer les arbre sur le sol pour placer la caméra à une hauteur fixe
par rapport au sol.
Proposé une interface au clavier et à la souris permettant de déplacer le point de vue : avancer, reculer, changer la
direction de déplacement.
2. Réduction du terrain affiché
Sachant que la caméra est dirigée dans la direction (vx,vy,vz) et que la distance de visibilité est dv, calculez pour
chaque feuille du quad-tree si elle est visible, ou non par cette pyramide d’observation.
En déduire un nouveau maillage de terrain et une nouvelle liste d’arbres dépendant de cette zone d’observation.
Affichez uniquement les éléments visibles lors du déplacement de la caméra.

Vous aimerez peut-être aussi