Infographie 3D - TP 1 OpenGL

lun. 21 mars 2016

Initiation, chaîne de transformation

Objectifs : à partir d'un programme OpenGL simple, vous allez vous familiariser avec sa syntaxe et ses concepts. Pendant le TP, vous modifierez peu à peu ce programme pour inclure des fonctions de modélisation et de manipulation d'objets.

Préparation

  • Recopiez chez vous le fichier planet.py.
  • Allez voir dans le source planet.py quelles touches sont prises en compte.
  • Exécutez le programme planet.py.

Le reste du TP consiste à augmenter le programme planet.py de nouvelles fonctionnalités.

Examen du source existant

Commentez le source de planet.py, en commençant par le bloc MAIN, pour en comprendre le fonctionnement grossier : on définit des callbacks sur les évènements du clavier, puis on initialise la géométrie et on lance la boucle de traitement des évènements.

Ajout de fonctionnalités

  • Francisez l'application i.e plutôt que de devoir utiliser les touches d (pour day) et y (pour year) pour animer la scène, on leur préfèrera les touches j et a. Supprimez la possibilité de revenir en arrière dans la gestion de la course de la planete autour de son astre. Avec une seule touche, simulez la course de la planète autour de son soleil (attention au type entier pour le calcul du modulo ainsi qu'à la finesse de la simulation).
  • Obtenez une scène avec des objets représentés par des solides et non plus en "fil de fer" (ou wireframe). Pour cela, il va falloir activer une fonctionnalité propre à la visualisation d'une scène constituée de solides 3D (cf. glEnable). Changez le modèle d'ombrage (cf. glShadeModel) afin d'obtenir des ombres plus douces et plus réalistes.
  • Ajoutez des propriétés surfaciques (cf. glMaterial) afin de changer les couleurs des deux objets (jaune pour l'astre et bleu pour la planète par exemple). N'oubliez pas de définir une ou plusieurs sources lumineuses (cf. glLight).
  • Ajoutez le satellite lunaire à votre mini système solaire (celui-ci doit tourner sur lui-même tout en tournant autour de la Terre durant son périple autour du Soleil).
  • Mouvements de la caméra : ajoutez la possibilité de bouger la caméra d'avant en arrière, de gauche à droite et enfin autour du système solaire (à distance prudente !).
  • Complétez le contenu du fichier suivant en initialisant les textures dans la fonction init_texture() (qui associe un identifiant, par exemple SOLEIL, à une image de texture via LoadTexture()) et en modélisant de nouveau les objets dans les fonctions display_...() (qui font appel à glBindTexture pour les planètes et le soleil ainsi que glBlendFunc pour l'atmosphère terrestre). Les textures à utiliser sont : earth.bmp, earthcld.bmp, sun.bmp et moon.bmp.