Infographie en Licence 2e année - LIFGraphique
semestre d'automne


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 - Automne 2020-2021

Cette UE fonctionne en cours-TDs intégrés, c'est-à-dire que la présence est indispensable durant les séances de CMs et de TDs où il y aura un mélange entre cours théorique et exercices permettant de faire le sujet de TP

  • CM1 : jeudi 10 septembre 2020 - 9h45-11h15 - Nautibus C5
  • CM2 : jeudi 10 septembre 2020 - 11h30-13h - Nautibus C5
  • CM3 : vendredi 11 septembre 2020 - 14h-15h30 - Nautibus C5
  • TD1 : vendredi 11 septembre 2020 - 15h45-17h15 - Nautibus C5
  • TD2 : jeudi 17 septembre 2020 - 9h45-11h15 - Nautibus C5
  • TD3 : jeudi 17 septembre 2020 - 11h30-13h - Nautibus C5
  • CM4 : vendredi 25 septembre 2020 - 14h-15h30 - Nautibus C5
  • CM5 : vendredi 25 septembre 2020 - 15h45-17h15 - Nautibus C5
  • TD4 : vendredi 09 octobre 2020 - 14h-15h30 - Nautibus C5 - attention : CC
  • TD5 : vendredi 09 octobre 2020 - 15h45-17h15 - Nautibus C5
Pour les TPs, regarder sur TOMUSS qui est votre encadrant pour aller dans la bonne salle
Florence Zara (groupe A), Guillaume Damiand (groupe B), Jean-Claude Iehl (groupe C)
  • TP1 : vendredi 18 septembre 2020 - 14h-17h15 - Bât. Ariane - salles 14 (gr A), Ariane 21 (gr B), Ariane 22 (gr C), Ariane 23 (gr D)
  • TP2 : vendredi 02 octobre 2020 - 14h-17h15 - Bât. Ariane - salles 14 (gr A), Ariane 21 (gr B), Ariane 22 (gr C), Ariane 23 (gr D)
  • TP3 : vendredi 16 octobre 2020 - 14h-17h15 - Bât. Ariane - salles 14 (gr A), Ariane 21 (gr B), Ariane 22 (gr C), Ariane 23 (gr D)
  • TP4 : vendredi 06 novembre 2020 - 14h-17h15 - Bât. Ariane - salles 14 (gr A), Ariane 21 (gr B), Ariane 22 (gr C), Ariane 23 (gr D)
  • TP5 : vendredi 13 novembre 2020 - 14h-17h15 - Bât. Ariane - salles 14 (gr A), Ariane 21 (gr B), Ariane 22 (gr C), Ariane 23 (gr D)
  • TP6 : vendredi 20 novembre 2020 - 14h-17h15 - Bât. Ariane - salles 14 (gr A), Ariane 21 (gr B), Ariane 22 (gr C), Ariane 23 (gr D)
  • Contrôle Continu Final : vendredi 04 décembre 2020 - 14h-15h - Amphi Jussieu

Modalité de Contrôle de Connaissances

  • Note de l'UE = 25% CC effectué en TD + 35% TP + 40% CCF
  • CC de 30 min effectué en TD : vendredi 09 octobre 2020 (salle C5 Nautibus)
  • Les TPs sont notés (appréciations d'avancement à chaque séance + une évaluation finale du TP le vendredi 20 novembre 2020). A la fin de chaque séance, l'enseignant de TP vous demandera de faire tourner votre programme pour voir où vous en êtes. Rappel : la présence en TP est obligatoire! et le TP se fait tout seul.
  • CCF Session 1 - vendredi 04 décembre 2020 à 14h00 (amphi Jussieu)
  • Objectif : évaluez votre compréhension finale de la matière.
  • CCF Session 2 - ?? juillet 2020
    • Vous pouvez passer la session 2 si vous n'avez pas validé votre UE (note UE inférieure à 10 et pas de compensation au semestre)
    • Attention : La note de session 2 remplace la note du CCF de la session 1 (même si elle est inférieure). Si vous ne vous présentez pas à la session 2, la note de session 1 est conservée.
    • Une absence (même justifiée) au CCF session 1 équivaut à une note de CCF de 0/20 avec obligation de se présenter à la session 2.
    • Pour les étudiants ajournés compensés, le fait de se présenter en session 2 implique un refus de compensation que vous signerez à votre arrivée dans la salle d'examen. Vous prenez alors le risque de ne plus compenser si votre note d'UE de session 2 est inférieure à celle de session 1.

Contenu des 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
Feuille de TD Téléchargement des PDF des cours ici en 1pp Téléchargement des PDF des cours ici en 6pp

Récupération du code pour faire les TPs

  • Nous allons utiliser la librairie gKit2 light développée par Jean-Claude Iehl
  • Le code de départ (gkit2light + code pour ce TP) se récupère avec Git comme ceci :
  • 
    git clone https://forge.univ-lyon1.fr/Alexandre.Meyer/gkit2light
    cd gkit2light/
    git checkout -b l2_lifgfx origin/l2_lifgfx
                                    

Compilation du code de TP

  • Pour compiler sous Linux avec codeblocks
  • 
    cd gkit2light
    premake/premake4.linux --file=l2_lifgfx.lua codeblocks
                                    
    Puis, ouvrir le projet l2_lifgfx.cbp
  • Pour compiler sous Linux - makefile
  • 
    cd gkit2light
    premake/premake4.linux --file=l2_lifgfx.lua gmake
    make -f l2_lifgfx.make
    bin/l2_lifgfx
                                        
  • Pour compiler sous Mac - makefile
  • 
    cd gkit2light
    premake/premake4.macosx --file=l2_lifgfx.lua gmake
    make -f l2_lifgfx.make
    bin/l2_lifgfx
                                    
  • Pour compiler sous Linux de chez vous (ubuntu)
    • voir le apt-get install ... ici
    • puis comme indiqué plus haut
    • Si probleme avec premake (qui est une application 32bits) pour l'executer sur un système 64 bits, il faut installer les librairies 32bits.
    • 
      sudo apt-get install libc6-i386
                                          
  • Pour compiler sous windows chez vous avec CodeBlocks
    • Installez Git avec tortoiseGit
    • Installez Codeblocks, la version 16 avec Mingw
    • Explorateur de fichier, placez vous dans le répertoire de vos fichiers, bouton droit menu 'TortoiseGit puis cloner', puis entrez le chemin Git 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-l2.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 Git contient une version compilée des librairies (SDL2, glew, etc.) pour windows donc rien à installer
  • Si vous avez une erreur de compilation
    • Changez build target en debug|x32 au lieu de debug|x64
  • Si vous avez une erreur de compilation sur les machines de l'université sous codeblocks
    • Vérifiez le compilateur utilisé par codeblocks : menu Setting/Compiler/Toolchain executable
    • C:\ProgramFiles\x86\CodeBlocks\MinGW

Votre code prendra place dans le répertoire "gkit2light/src/l2_lifgfx"

  • Il faudra modifier les fichiers Viewer.h et Viewer.cpp
  • Feuille de TP Fiche d'évaluation des TP
  • Quelques explications sur le code
    • 'h' pour l'aide
    • 'a'=affiche/enlève les axes
    • 'g'=affiche/enlève la grille
    • Flèches+pageup+pagedown/souris bouton droit : pour déplacer la caméra
    • Ctrl+flèches/souris bouton gauche : pour tourner la tête

TP1 et TP2

  • Affichez un cylindre, un cône et une sphère de taille unitaire, centrés sur l'origine et avec leurs normales et leurs textures
  • Avec la multiplication des matrices, assemblez ces formes de bases pour afficher un objet plus complexe (une fusée, un avion ou une voiture)

TP3 et TP4

  • Affichez un terrain avec les normales et une texture
  • Affichez des arbres sur le terrain sous forme de billboards (donc avec les textures)

TP5 et TP6

  • 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

Quelques astuces à savoir

- Problème de place mémoire

Si vous avez dépassé votre quota, vous pouvez avoir des erreurs à la compilation, car l'ordinateur n'a plus assez d'espace mémoire pour sauvegarder les fichiers de compilation et/ou l'exécutable.
- Il faut que vous fassiez du ménage sur votre compte, en supprimant des répertoires/fichiers qui ne vous servent plus (faire des sauvegardes sur un autre support de stockage avant pour les archiver).
- Vider le cache de votre navigateur.

- Fichiers Viewer.cpp Viewer.h vides

Suite à un manque de place mémoire, le code mis dans vos fichiers peut disparaître : Viewer.cpp Viewer.h vides. Pour restaurer une version précédente d'un de vos fichiers :
  • ouvrez l'Explorateur de fichiers sous Windows (même si le problème est survenu sous Linus - redémarrez),
  • cliquez sur le fichier,
  • puis cliquez sur Historique, sous l'onglet Accueil, dans le groupe Ouvrir. Cette action ouvre la fenêtre Historique des fichiers. Vous pouvez vous déplacer dans les différentes versions disponibles de ce fichier en utilisant les boutons Version précédente et Version suivante.

Quelques captures d'écran de projets rendus