TP numéro 5 : éclairages, déplacement dans un labyrinthe
Travail à faire
-
Récupèrez et compilez le programme teapots.c
issu de l'OpenGL Programming Guide. Vous pourrez piquer dans le source
les caractéristiques des différentes surfaces pour les utiliser
dans vos propres programmes.
-
Reprenez le code du dernier TP, et placez une lampe de type spot, située
à 5 mètres au-dessus du sol, qui éclaire le sol.
-
Modifiez la fonction de dessin du sol de la manière suivante :
-
Affectez une normale à chaque case du sol
-
n'affichez plus le sol en fil de fer mais en mode plein, blanc, relativement
mat. Affectez une touche pour pouvoir changer les paramètres de
diffusion et de spécularité du sol.
-
Affectez une touche du clavier pour éteindre ou allumer cette lampe
-
Affectez une touche pour modifier la hauteur de la lampe. On devra pouvoir
"voir" la lampe (dessinez un cube ou un cone, regardez l'exemple du polycopié
distribué en cours).
-
Modifiez la couleur de la lampe, essayez de changer ses paramètres
d'éclairage (intensité, angle, orientation, etc...)
-
Placez une autre lampe sur la caméra, qui éclaire dans la
direction Z de la caméra.
-
Essayez de placer des parallèlépipèdes sur le sol
de manière à créer un labyrinthe et déplacez-vous
dedans. Pour vous simplifier la vie et ne pas se fatiguer à construire
les cubes et les normales à la main, vous utiliserez la fonction
glutSolidCube qui fait tout ça pour vous. Pensez à scaler
le cube (glScale) pour obtenir un parallèlépipède
et à renormaliser les normales avec glEnable(GL_NORMALIZE). L'effet
de la lampe placée sur la caméra devra être bien visible,
à la manière des phares d'une voiture.
-
Pour ceux qui ont fait visu l'an dernier, pourquoi ne pas utiliser le parseur
qui se trouvait dans le fichier objet.c afin de pouvoir lire la description
d'un labyrinthe depuis un fichier de configuration ?