UE LIFGraphique - Informatique Graphique en Licence 2e année -
semestre d'automne


L'objectif de l'UE "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 suivants :

  • pipeline de rendu,
  • représentation des maillages,
  • transformation,
  • modélisation par carte d'élévation, révolution ou extrusion,
  • éclairement,
  • textures,
  • 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.

Cette UE nécessite la connaissance de la programmation en C/C++ et d'avoir suivi au préalable l'UE LIFAPI ou équivalent.

       

Notions abordées durant les cours et les TDs

  • Introduction au domaine de l'informatique graphique
  • Outils mathématiques : vecteur, matrice
  • Plans, polygones, maillage
  • Transformation : pile de matrice
  • Modélisation : révolution, extrusion, carte de hauteurs
  • Rendu : rendu projectif, élimination des parties cachées
  • Modèle d'illumination (ambient, diffus et spéculaire)
  • Texture, transparence
  • Animation

Emploi du temps - Automne 2023-2024

A noter que cette UE est en cours intégré, c'est-à-dire que les cours et les exercices de type TDs sont mélangés. Il est indispensable que vous assistiez aux CMs et TDs, afin d'acquérir les compétences nécessaires pour effectuer les TPs et valider cette UE.

Cours et TDs

CM1 - Introduction : jeudi 07 septembre 2023 - 9h45-11h15 - Lippmann 107
CM2 - Notion de maths : jeudi 07 septembre 2023 - 11h30-13h - Lippmann 107
CM3 - Rendu/maillage : jeudi 14 septembre 2023 - 9h45-11h15 - Lippmann 107
TD1 - Formes de base : jeudi 14 septembre 2023 - 11h30-13h - Lippmann 107
CM4 - Modélisation : jeudi 28 septembre 2023 - 9h45-11h15 - Lippmann 107
TD2 - Vase/terrain : jeudi 28 septembre 2023 - 11h30-13h - Lippmann 107
CM5 - Illumination : jeudi 12 octobre 2023 - 9h45-11h15 - Lippmann 107
CM6 - Texture : jeudi 12 octobre 2023 - 11h30-13h - Lippmann 107
TD3 - Animation : jeudi 09 novembre 2023 - 9h45-11h15 - Lippmann 107
TD4 - Animation (suite) : jeudi 09 novembre 2023 - 11h30-13h - Lippmann 107 Attention : CC
Pour les TPs, regarder sur TOMUSS (colonne GroupeTP) quel est votre groupe pour aller dans la bonne salle du bâtiment Ariane
Florence Zara (groupe A), Eric Galin (groupe B)
  • TP1 : jeudi 21 septembre 2023
    • groupe A : 9h45-11h15, 11h30- 13h - Ariane 11
    • groupe B : 9h45-11h15, 11h30- 13h - Ariane 12
  • TP2 : jeudi 05 octobre 2023
    • groupe A : 9h45-11h15, 11h30- 13h - Ariane 11
    • groupe B : 9h45-11h15, 11h30- 13h - Ariane 12
  • TP3 : jeudi 19 octobre 2023
    • groupe A : 9h45-11h15, 11h30- 13h - Ariane 11
    • groupe B : 9h45-11h15, 11h30- 13h - Ariane 12
  • TP4 : jeudi 16 novembre 2023
    • groupe A : 9h45-11h15, 11h30- 13h - Ariane 11
    • groupe B : 9h45-11h15, 11h30- 13h - Ariane 12
  • TP5 : jeudi 23 novembre 2023
    • groupe A : 9h45-11h15, 11h30- 13h - Ariane 11
    • groupe B : 9h45-11h15, 11h30- 13h - Ariane 12
Contrôle Continu Final : jeudi 07 décembre 2023 - 09h45-10h45 - Amphi Themis 8
(consignes : arriver en avance ; avoir sa carte d'étudiant)

Modalité de Contrôle de Connaissances

Note de l'UE =
  • 25% CC (1 épreuve individuelle effectuée en TD - 30 minutes) : jeudi 10 novembre 2023 (Lippmann 107)
  • 35% TP (1 rendu individuel à la fin de l'UE) : TP à rendre le jeudi 30 novembre 2023 avant 13h
  • 40% ECA (1 Epreuve Commune Anonyme effectuée en amphi - 60 minutes) : jeudi 7 décembre 2023 à 9h45-10h45 (amphi ??)
  • 40% rattrapage de l'ECA (session 2 de l'ECA effectuée en amphi - 60 minutes) : juin/juillet 2024 à (amphi ??)


    • Information relative au CC
    • Objectif : évaluez votre compréhension de la matière à mi-parcours.
      Une absence (même justifiée) entraine un rattrapage lors de l'ECA : des questions et du temps supplémentaires.
    • Information relative au rendu du TP
    • Rappel : la présence en TP est obligatoire! et le TP se fait tout seul.
      Objectif : évaluez les pratiques de développement liées à la matière
      La grille d'évaluation du TP se trouve sur le sujet de TP
      Le non-rendu du TP entraine la note de zéro.

      Modalités pour rendre votre travail de TP :
      1. Sur TOMUSS (colonne Depot_Code_TP) : rendu d'une archive contenant vos fichiers de votre code : ViewerEtudiant.h, ViewerEtudiant.cpp, et tous les autres fichiers que vous avez pu modifier ou ajouter (comme des textures)
      2. Sur TOMUSS (colonne Depot_Rapport_TP) : rendu d'un rapport (au format pdf). Celui-ci devra contenir pour chacune des questions du TP, des captures d'écran de votre scène, ainsi que le code corespondant. Le code devra être correctement indenté et commenté (en-tête des fonctions expliquant ce qu'elles font, code des fonctions, appel des fonctions, etc.).
      3. En cas de souci (si archive / rapport trop volumineux) : envoyez un mail à votre intervenant de TP avec adresse de dépot de vos fichiers. Vous pouvez utiliser : FileSender.
    • Information relative à l'ECA Session 1
    • Objectif : évaluez votre compréhension finale de la matière.
      Consignes : arriver en avance ET avoir sa carte d'étudiant.
      Aucun document autorisé
      Une absence (même justifiée) à l'ECA session 1 équivaut à une note de l'ECA de 0/20 avec obligation de se passer à la session 2.
    • Information relative à l'ECA Session 2
      • 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 uniquement la note de l'ECA de la session 1 (même si elle est inférieure). Si vous ne vous présentez pas à la session 2, la note de l'ECA session 1 est conservée.
      • Les autres notes (CC de TD et rendu de TP) sont conservées
      • 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.

    Code du TP

    Nous vous fournissons un code de départ pour effectuer les TPs. Ce code est basé sur l'utilisation de la librairie gKit2 light développée par Jean-Claude Iehl

    Etape 1 - Récupération du code pour faire les TPs - Solution 1 : archive toute prête

    Archive zip pour codeblocks (gkit2light + code pour ce TP + librairies Windows). Version faite en 2022.
    Les projets se trouvent dans le répertoire build :
    • build/gkit2light.workspace pour codeblocks
    Version codeblocks 20.03 pour Windows

    Etape 1 - Récupération du code pour faire les TPs - Solution 2 : code sur git + compilation

    • 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
                                      

    Etape 2 - Compilation du code de TP - A faire si vous avez récupéré le code depuis Git

    • 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 20.03 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 qui se trouvent ici : http://perso.univ-lyon1.fr/jean-claude.iehl/Public/educ/M1IMAGE/gkit2light_extern_vs_mingw.zip. Puis, 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

    Récupération de vos données depuis votre compte Lyon 1

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

    • Il faut suivre les instructions mises sur le sujet de TP
    • Au niveau du code, il faudra modifier les fichiers ViewerEtudiant.h et ViewerEtudiant.cpp

    • Quelques explications lors du lancement de l'application
      • '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 (formes de base) et TP2 (transformations géométriques)

    • 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
    • A l'aide de transformations géométriques, assemblez ces formes de bases pour afficher un objet plus complexe (une fusée, un avion ou une voiture)

    TP3 (terrain) et TP4 (billboards, cubemap)

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

    TP5 (animation, monde virtuel)

    • Affichez le véhicule en mouvement au dessus du terrain. Le véhicule suit une courbe que vous pouvez afficher en appuyant sur 'z'. Regardez l'exemple de code dans le Animation.h
    • Complétez votre scène, afin d'obtenir un monde virtuel un peu plus complet.

    Livres et tutoriaux

    Quelques astuces à savoir

    - Problème de compilation avec Codeblocks

    Attention, les noms de répertoires ne doivent contenir ni espace, ni accent. Et cela sur tout le chemin d'accès au répertoire. Par exemple, ne pas mettre votre répertoire dans le dossier "Mes documents".

    - 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