Travaux pratiques de Rendu Temps Réel et Modélisation géométrique

Rendu du TP : le 07/02/2011 avant 13h30

Mise à jour

2011-01-17 Ajout de screenshots pour le sujet sur le parallax mapping

2011-01-10 Bug dans la classe tranform : en TP je vous ai fait corriger un bug dans la classe transform. Cette correction n'est pas juste, voici (enfin j'espere) une version correcte :

Matrix4 getMatrix (void) const {

	Matrix4 mat (Matrix4::IDENTITY);
	Matrix3 rotMat;
	mOrientation.ToRotationMatrix (rotMat);

	mat = rotMat;
	mat[0][0] *= mScale.x;
	mat[1][0] *= mScale.x;
	mat[2][0] *= mScale.x;

	mat[0][1] *= mScale.y;
	mat[1][1] *= mScale.y;
	mat[2][1] *= mScale.y;

	mat[0][2] *= mScale.z;
	mat[1][2] *= mScale.z;
	mat[2][2] *= mScale.z;

	mat.setTrans (mPosition);
	return mat;
}
Matrix4 getInverseMatrix (void) const {
        return getMatrix().inverse();
}

2010-01-10 petite modif dans le sujet des normals map pour l'équation d'un point du triangle.

Dans skybox.cpp, pour avoir la skybox inversé dans le miroire ...

void SkyBox::render (bool activateMaterial) {

//...
    Vector3 scale = sceneToView.getScale();
    glScalef (scale.x*10., scale.y*10., scale.z*10.);

//...
}
haut

Objectif

Le but de ces travaux pratiques est de se familiariser avec les techniques fondamentales pour le rendu temps réel en synthèse d'images. Ces TPs sont réalisé en C++ et OpenGL mais les concepts qui seront abordés sont reproductibles dans tout autre langage ou API graphique
Il est fortement recommandé de se munir de son cours pour effectuer les travaux demandés.
Il est vivement conseillé aux étudiants de travailler leurs TPs en dehors des séances encadrées afin d'avancer le plus possible et de profiter de l'encadrement pour se faire expliquer les difficultés qu'ils ont rencontrées.

haut

Évaluation des travaux pratiques

L'évaluation des travaux pratiques se fera à partir d'un contrôle continu pendant les séances. Le code produit jusqu'au début du TP4 sera remis pour être évalué sur les trois premiers TPs. Il sera de même au début du TP7 pour les TPs 4 à 6, et à la fin du TP10 pour les TPs 7 à 10. À chaque remise intermédiaire, un corrigé sera donné afin que les étudiants puissent se concentrer sur les nouveaux sujets, et ne soient pas trop pénalisés par une difficulté rencontrée dès le départ. séance.

haut

Installation des outils fournis

Nous vous fournissons une trame de départ pour commencer vos TPs. Cette structure est composée d'un ensemble de classes C++ dont certaines sont vides et devront être remplies pour réaliser les TPs. Cet ensemble est compilable à l'aide d'un projet qmake. Ce dernier peut être utilisé dans l'environnement de développement kdevelop disponible sous Linux/KDE.  ATTENTION, la version de QT utilisée pour ce projet est la 4.x. Veuillez vous assurer de disposer de cette version pour pouvoir compiler et executer le programme

Afin d'installer les composants logiciels de départ, suivez les instructions suivantes :

  1. Créez un répertoire qui sera votre répertoire de travail pour ces TPs.
  2. Téléchargez dans ce répertoire le fichier 2010-tp1.tar.gz
  3. Vous pouvez la décompresser avec ark : bouton droit de la souris sur le nom du fichier et sélectionner "extract here".
  4. Cette archive contient trois dossiers. OpenGLRenderer contient le code de l'application. Canape contient un objet "CanapeQuad.obj" qui permettra d'avoir des géometries plus complexes que celles que l'on peut faire rapidement, avec une paramétrisation correcte des coordonnées de textures. Des scènes complètes au format obj seront aussi mises à disposition. Enfin, le dossier textures contient des skybox. Toutes les opérations de compilation sont supposées etre faites depuis le dossier OpenGLRenderer.
  5. Avant la première compilation, générez les fichiers Makefile en utilisant la commande "qmake-qt4".
  6. Si vous utilisez kdevelop, cliquez sur openglrenderer.kdevelop pour ouvrir le projet. Vous pouvez ensuite compiler (F8) et exécuter (F9) le programme sous cet environnement de développement.
  7. Pour les inconditionnels de vim ou d'emacs et de la ligne de commande, générez le makefile associé en tapant "qmake-qt4". Par la suite, il suffira d'utiliser la commande "make" pour compiler votre programme.
  8. Pour lancer l'éxécutable, utilisez la commande : "./openglrenderer" depuis le dossier "bin"
  9. Vous pouvez générer la documentation de référence du logiciel avec la commande "doxygen". Elle sera alors accessible par l'url "doc/html/index.html"
    La documentation initiale complète des classes C++ est accessible à cette page
  10. Les éléments à compléter du code sont délimités par des entêtes du type :
    /**************************************************/
    /* beginning of code to be completed (TPn)        */
    /* method --- description of what the method does */
    /**************************************************/								   
        
    et
    /**************************************************/
    /* end of code to be completed (TPn)              */
    /* method                                         */
    /**************************************************/								   
        

haut

Travail à réaliser

Dans premier temps, en vous aidant de la documentation, faites un diagramme de classes de manière à bien visualiser l'organisation des différentes classes du programme. Donnez aussi un bref descriptif de chaque classe (pas les méthodes, mais ses fonctionnalités). Une fois que vous aurez pris en main votre environnement logiciel, les tâches à réaliser dans ces TPs sont les suivantes (cette liste sera complétée au fur et à mesure, il y a 10 sujets au total pour le rendu temps réel, deux sujet en modélisation géométrique) :

  1. Rendu temps-réel : Rendu d'une géométrie en utilisant les VBO
  2. Rendu temps-réel : Shaders GLSL
  3. Rendu temps-réel : Calcul de reflexions planes
  4. Rendu temps-réel : Éclairage par accumulation
  5. Rendu temps-réel : Ombrage par carte d'ombre
  6. Rendu temps-réel : Ombres douces par filtrage
  7. Rendu temps-réel : Bump mapping/Normal mapping
  8. Rendu temps-réel : Parallax mapping

  1. Modélisation géométrique : Subdivision
  2. Modélisation géométrique : Simplification

Rendu des TPS

haut
TP Rendu Temps Réel/Modélisation Géométrique - 2010 :: VORTEX --- IRIT-UPS-CNRS Valid XHTML 1.0 Strict