Projet 2 Générateur de ville 3D avec interface graphique

Transcription

Projet 2 Générateur de ville 3D avec interface graphique
Ecole polytechnique de Bruxelles
Année académique 2011-2012
Algorithmique et programmation
INFO-H-200
Projet 2
Générateur de ville 3D avec
interface graphique
Ce deuxième projet consiste en une extension et une amélioration du premier projet. Il vous
est ainsi demandé de réaliser un générateur de villes en 3D et d’un visionneur, sous la forme
d’interface graphique, en utilisant la bibliothèque graphique multiplateformes Qt1 de Nokia.
Projet
Les règles de découpe de la ville en blocs, en routes, en bâtiments et en jardins restent les
mêmes que dans le projet 1. Vous devez cependant utiliser une approche Orientée Objet
(classes) et la bibliothèque Qt est imposée. La découverte, l’apprentissage et l’intégration
d’une librairie existante (en l’occurrence Qt) fait partie de la difficulté du projet. Référez-vous
aux nombreux documents et exemples à votre disposition2.
Il ne vous est plus demandé de sauvegarder votre ville sous forme de fichier, le résultat devant
pouvoir être rendu3 directement dans votre application. L’affichage 3D de la ville se basera
sur la spécification OpenGL4. Dans cet affichage, il vous est demandé d’effectuer un rendu
optimisé des bâtiments, c’est-à-dire sous forme d’un volume unique, et non d’un ensemble de
volumes à base unitaire comme dans le projet 1, et des autres éléments plans (routes et
jardins). Le rendu des bâtiments se composera d’un rendu des faces, mais également des
arrêtes (comme pour le cube affiché dans le code d’exemple). L’ensemble des paramètres du
programme doivent également être gérés via l’interface utilisateur.
La logique du générateur et l’interface utilisateur doivent être bien séparées l’une de l’autre,
mais peuvent se baser l’une et l’autre sur l’utilisation d’objets de la bibliothèque Qt.
L’implémentation des classes suivantes est imposée :
-
Classe Ville
Classe Bloc
Classe Element
Vous êtes évidemment libre d’en implémenter d’autres pour la gestion de l’interface
graphique, des paramètres… Vous distinguerez les différents éléments (routes, bâtiments,
jardins…) en gérant un attribut dans la classe. De plus, une Ville contiendra une liste liée,
que vous implémenterez vous-mêmes, de Bloc, et un Bloc contiendra une liste liée
d’Element.
L’utilisation de l’environnement de développement QtCreator, comprenant l’assistant de
création d’interface graphique QtDesigner, est imposée. Une première structure de code
affichant une fenêtre OpenGL dans laquelle il est possible de dessiner des éléments vous est
1
http://qt.nokia.com/
Référence officielle online : http://doc.trolltech.com/. En plus du descriptif complet de toutes les classes disponibles, il y existe beaucoup d’exemples et de tutoriaux.
3
http://fr.wikipedia.org/wiki/Rendu
4
http://www.siteduzero.com/tutoriel-3-4915-introduction-a-opengl.html
2
1
Ecole polytechnique de Bruxelles
Année académique 2011-2012
Algorithmique et programmation
INFO-H-200
fournie (à titre d’exemple et d’information), vous pouvez vous en inspirer librement.
Pour ceux désireux d’aller plus loin dans le projet, plusieurs améliorations peuvent être
apportées :
-
Coloration des bâtiments d’un bloc de manière différente,
Utilisation de textures pour le rendu graphique,
Routes de largeurs variables (selon le niveau de récursivité par exemple),
Ajout d’éléments originaux (trottoirs…),
Surface de la ville non plane,
Amélioration du rendu (cf OpenGL 3.0),
…
Consignes et modalités de remise
Nous vous demandons de respecter les règles de programmation suivantes :
1. N'utilisez aucune variable globale.
2. Définissez toutes vos constantes au moyen de #define ou de const et donnez-leur un
nom en majuscules.
3. Donnez à vos variables, paramètres et fonctions des noms intelligibles qui favorisent
la lecture et la compréhension du code.
4. Commentez votre code pour le rendre plus lisible.
5. Concevez votre programme pour qu’il soit performant.
6. Il doit également être souple pour l’utilisateur (choix des paramètres…).
7. N’utilisez pas la fenêtre de « Sortie de l’application » pour afficher des résultats,
autres que ceux destinés à débugger votre application.
Les délivrables du projet sont les suivants :
1. Le code source complet et commenté
2. Un exécutable
3. Un bref rapport (maximum 3 pages) décrivant votre approche du problème et la
manière dont vous vous êtes réparti le travail
Le projet peut être réalisé individuellement ou par groupe de 2 étudiants maximum du même
groupe de TP (même jour), mais la défense, qui aura lieu sur machine (de la salle info) lors
de la semaine du 14/05, comportera des questions individuelles.
Les délivrables seront remis au plus tard le vendredi 11/05 à Benoît Penelle sous forme
numérique (envoyez un email à [email protected] avec pour sujet « INFOH200 :
projet 2 – numéro série – nom_etudiant_1 nom_etudiant_2» à partir de votre compte ULB).
Aucune remise de projet au-delà de cette date ne sera prise en considération.
La défense du projet consistera en une brève démonstration de votre programme ainsi que
quelques questions relatives à votre code. L’évaluation du projet portera à la fois sur le respect
des consignes, l’implémentation et la structure du code, les possibilités de paramétrage de
l’application ainsi que sur l’originalité des améliorations complémentaires.
Bon travail !
2

Documents pareils