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.
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 );
é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),
...
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.)