Programmation graphique TD 2 : Lego Star Wars, la revanche des Sith

Transcription

Programmation graphique TD 2 : Lego Star Wars, la revanche des Sith
Programmation graphique TD 2 :
Lego Star Wars, la revanche des Sith
11 février 2009 et après
On continue le TD précédent. Vous allez avoir uniquement besoin des fichiers
supplémentaires elsa2:/home/enseign/scollang/graphique/2009/td2/face.c
et vador.c.
1
Arrondir les angles
1. On voit les facettes du faux cylindre sur le manche du sabre laser. Calculer le
vecteur normal en chaque sommet et le donner à OpenGL.
2
Le vrai visage d’Obi-Wan Kenobi
L’utilisation de textures en OpenGL se fait en plusieurs étapes.
1. Récupération d’un (ou plusieurs) identifiant(s) de texture avec glGenTextures.
L’identifiant 0 est réservé pour dire « pas de texture ».
2. Création de la texture avec glBindTexture.
3. Sélection des paramètres de la texture avec glTexParameter.
4. Sélection de l’image bitmap associée avec glTexImage2D.
5. Activation du texturage avec glEnable.
6. Au moment de dessiner, sélection de la texture avec glBindTexture (encore).
7. Pour chaque sommet, définition des coordonnées de texture avec glTexCoord.
2. On veut dessiner le visage d’Obi-Wan Kenobi. Où va-t-on placer le code pour
chacun des points ci-dessus ?
(Attention, les pièces d’Obi-Wan (dont sa tête) déclarées en global sont construites
au moment de l’initialisation du programme, donc avant l’initialisation d’OpenGL. On
ne peut donc pas mettre d’appels OpenGL dans le constructeur, et il faut appeler une
fonction membre Init de Tete à la fin d’InitGL.)
3. La tête d’Obi-Wan est un cylindre. Calculer et ajouter les coordonnées de texture
dans primitives.cpp.
4. Écrire le reste du code de texturage. Pour charger l’image, faire simplement un
#include de face.c et accèder aux champs de bonhomme face.
5. Les modes de filtrage par défaut nécessitent des mipmaps, il faut donc choisir explicitement un autre mode (glTexParameteri avec GL TEXTURE MIN FILTER
et GL TEXTURE MAG FILTER). Essayer avec GL NEAREST et GL LINEAR.
1
6. Générer une hiérarchie de mipmaps avec gluBuild2DMipmaps. Essayer les
autres modes de filtrage.
7. Même chose pour Dark Vador.
3
Lego Star Wars : le dessin animé
On veut faire un rendu de type dessin animé (toon shading). On veut :
– des traits sur les bords des objets,
– des aplats de couleur au lieu de dégradés.
8. Pour les objets aux arêtes vives comme les parallélépipèdes, on rajoute des lignes
à dessiner (en les décalant légèrement devant l’objet).
9. Pour les objets courbes comme les cylindres les bords vont dépendre du point de
vue. Comment les dessiner avec le pixel shader ?
10. Toujours avec le pixel shader, comment faire des aplats de couleur ?
2

Documents pareils