CPE 4 ITI 2017-2018


TP3 - application


Résumé des épisodes précédents

Dans le TP1 : construction de maillages simples, + placement et orientation dans le repère du monde, + dessiner pour le point de vue d'une camera,
Dans le TP2 : dessiner plusieurs objets pour le point de vue d'une camera mais en utilisant directement openGL et une paire de shaders + calculs d'éclairement et ombres simplifiées + camera adaptée à l'application + mouvements des objets.


Partie 1 : organisation des données

Quelles sont les informations nécessaires pour afficher un objet ?
a priori, vous avez besoin :

pour afficher plusieurs objets, le plus simple est de les stocker dans un std::vector c++ / tableau de structures contenant les informations.
pour afficher l'ensemble d'objets, il ne reste plus qu'à parcourir le tableau, élément par élément.

écrivez une fonction utilitaire qui prend un mesh en entrée (et, éventuellement, le fichier des shaders à compiler), et qui renvoie une structure de données contenant le vertex array et le shader program à utiliser pour afficher l'objet :

struct Object
{
    Transform model;
    GLuint vao;
    GLuint program;
};

Object create( const Mesh& mesh );


Partie 2 : à vous de jouer !

écrivez une application qui crée (ou charge) et affiche en utilisant directement openGL plusieurs objets animés / éclairés / ombrés.
écrivez une caméra qui permet d'observer votre scène 3d (sans utiliser Orbiter).

comment contrôler soit la camera / soit un objet de manière dynamique ? par exemple, ne pas passer à travers un autre objet, sauter ? courir ? accélérer ?

exemples :
course (véhicules),
runner (éviter des obstacles en déplacement), ou le contraire (jeu de rythme) toucher tous les objets en déplacement,
plateformes (enchainements de sauts/mouvements entre objets en déplacement),
...


Travail à rendre :

une archive prête à compiler de votre application openGL, qui n'utilise pas les utilitaires de draw.h ni de orbiter.h.
une (ou plusieurs) captures d'écran de votre application (cf la fonction screenshot() de texture.h).

un rapport succint expliquant ce que vous avez fait, et ce que vous n'avez pas réussi à faire (trop difficile, manque de temps, etc.)