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