Introduction à l'Informatique Graphique
Noise et depth buffer
Le but de cet exercice est l'utilisation de la
fonction Noise
de Ken Perlin et du depth buffer pour simuler la chutte et
l'accumulation de neige sur des objets graphiques.
Récupérer le
fichier
noisy.tar.gz,
le décompresser puis faire
make test. Les
fichiers
ImprovedPerlinNoise.* implémentent la
fonction
Noise. Le programme
noisy utilise deux
fois cette fonction pour déplacer de manière pseudo aléatoire un point
dans la fenêtre.
Transformer ce point en un flocon : modifier la
manière dont Noise est utilisée pour faire en sorte que le
point "tombe" du haut de la fenêtre vers le bas, de manière plus ou
moins rapide et en déviant plus ou moins vers la gauche ou la
droite. Faire disparaître définitivement le flocon lorsqu'il sort des
limites de la fenêtres (par la gauche, la droite ou le bas).
Permettre la création à la souris d'autres
flocons. Utiliser random pour faire varier la taille des
flocons.
Ajouter un mode lié à une touche du clavier qui crée
automatiquement un nombre pseudo-aléatoire de flocons dans la partie
haute de la fenêtre pour simuler la chute de neige.
Compter les flocons qui sorte de la fenêtre vers le
bas. Utiliser ce nombre pour créer un polygone destiné à représenter
la couche de neige accumulée sur le sol. Utiliser à nouveau la
fonction noise pour que le bord haut du polygone soit
irrégulier.
Ajouter un ou plusieurs objet(s) graphique(s) dans
la scène, e.g. une théière à l'aide de la
fonction glutSolidTeapot. A l'aide de la
fonction glDepthMask, désactiver l'écriture dans
le depth buffer lors du dessin des flocons. Une fois toute la
scène dessinée, utiliser glReadPixels pour récupérer la
carte de profondeur. Utiliser cette carte pour connaître les endroits
où les flocons peuvent s'agglomérer...