Table des matières
LIFGRAPHIQUE Informatique Graphique (Licence 2e année)
L'objectif du cours « Informatique Graphique » est de donner les bases de la réalisation de scènes graphiques interactives en 3 dimensions. Après avoir révisé les notions de mathématique et géométrie, nous abordons les notions importantes de l'informatique graphique : modélisation, rendu et animation. Nous détaillons les points suivant : pipeline de rendu; représentation des maillages ; pile de transformation ; modélisation par carte d'élévation, révolution ou extrusion; éclairement ; textures; et première notion d’animation. Ces points sont abordés en cours/TD et en TP à travers la réalisation d’un monde virtuel inspirés du domaine du jeu vidéo ou de l'architecture.
Emploi du temps
Evaluation
- Une ou des interrogations en TD avec pour objectif de vous préparer aux TP
- Un CCF de 1h/1h30 à la fin du semestre. Objectif : évaluez votre compréhension finale de la matière.
- Les TPs sont notés (appréciations d'avancement à chaque séance + une interro spécifique TP + une note finale). Rappel : la présence en TD et TP est obligatoire.
Cours
- Introduction
- Outils mathématiques : vecteur, matrice.
- Rendu : rendu projectif, élimination des parties cachées
- Plans, polygones, maillage
- Transformation : Pile de matrice
- Modèle d'illumination (ambient, diffus et spéculaire)
- Modélisation : révolution, extrusion, carte de hauteurs
- Texture, transparence
- Animation
TD 1, 2, et 3 :
- Affichage des formes de bases
- Affichage d'un objet constitué de formes de base (avion, fusée) : pile de matrices
- Affichage d'un terrain avec ses normales
- Affichage de billboard
- Affichage d'une cubemap
TP
3 TP de 2 séances (6 séances de 3h en tout) sous LINUX.
Le code de départ se récupère avec Mercurial/HG comme ceci:
hg clone https://forge.univ-lyon1.fr/hg/gkit2light -b l2_lifgfx
Il est possible que la forge vous fasse une erreur de certificat. Dans ce cas :
gedit ~/.hgrc
et ajouter ceci dans le fichier
[hostfingerprints] forge.univ-lyon1.fr = A0:3C:B0:22:EE:72:36:83:A0:C2:EC:39:C8:DB:A5:AF:6C:05:D0:27 [ui] username = votre_numéro_étudiant avec p12233445 [auth] forge.univ-lyon1.fr.prefix = forge.univ-lyon1.fr forge.univ-lyon1.fr.username = votre_numéro_étudiant avec p1234567
Pour compiler sous Linux avec codeblocks
cd gkit2light premake/premake4.linux codeblocks ouvrir le projet l2_lifgfx.cbp
Pour compiler sous Linux avec make
cd gkit2light premake/premake4.linux gmake make -f l2_lifgfx.make bin/l2_lifgfx
- Attention : il faut bien être dans le répertoire gkit2light pour l’exécutable trouve le répertoire data
Pour compiler sous Linux de chez vous (ubuntu)
- puis comme indiqué plus haut
Pour compiler sous windows chez vous avec CodeBlocks
- Installez Mercurial avec tortoiseHG
- Installez Codeblocks, la version 16 avec Mingw
- Explorateur de fichier, placez vous dans le répertoire de vos fichiers, bouton droit menu 'TortoiseHG puis export', puis entrez le chemin HG indiqué plus haut commençant par https …
- Téléchargez les librairies (SDL,Glew, etc.) pour windows ici, copiez le répertoire 'extern' dans le répertoire principale de gkit2light
- Vous devez aussi copier toutes les .dll du répertoire extern/mingw/lib dans gkit2light/bin (répertoire des exécutables), sinon vous aurez des erreurs à l’exécution des programmes
- Lancez le script gkitlight/premake/premake.bat qui va créer les projets makefile/codeblocks dans le répertoire gkitlight
- Ouvrez le projet gkitlight/l2_lifgfx.cbp
- Remarque : le code exporté avec HG contient une version compilée des librairies (SDL2, glew, etc.) pour windows donc rien à installer
gKitLight la doc
Quelques explications sur le code
- 'h' pour l'aide
- 'a'=affiche/enlève les axes; 'g'=affiche/enlève la grille;
- souris bouton gauche= rotation du monde
- souris bouton droit et translation horizontale : pour zoomer
- Votre code prendra place dans le module src/l2_lifgfx/Viewer.h .cpp
3 TP de 2 séances
TP1
- Affichez un cylindre, un cône et une sphère de taille unitaire, centrés sur l'origine et avec leurs normales;
- Avec la multiplication des matrices, assemblez ces formes de bases pour afficher une fusée ou un avion ou une voiture.
TP2
- Affichez un terrain avec les normales (le + : avec la texture)
- Affichez des arbres sur le terrain sous forme de billboards (donc avec les textures)
TP3
- Affichez un cubemap autour du terrain
- Affichez le véhicule du TP1 en mouvement au dessus du terrain du TP2. Le véhicule suit une courbe que vous pouvez afficher en appuyant sur 'z'. Regardez l'exemple de code dans le Animation.h
Livres et tutoriaux
- Introduction to Computer Graphics,James D. Foley, Andries van Dam, Steven K. Feiner, John F. Hughes, Richard L. Phillips. ISBN 0201609215
- Version francaise : Introduction à l'infographie. ISBN 2711786722
- 3D Computer Graphics. Alan H. Watt. ISBN 0201398559