Projets de fin d'études / projets de maîtrise 6 ou 15 crédits

Voici différents projets qui pourraient faire l'objet du travail requis dans le cours de projet de fin d'études (GTI792 et LOG792) ou d'un projet de maîtrise 6 ou 15 crédits (MTR892 ou MTR896).

Pour tous les projets :

Une liste de requis serait communiquée à l'étudiant et ces requis seraient classés selon plusieurs critères (difficulté, importance, etc.). L'étudiant pourrait proposer des requis qui seraient considérés au même titre que ceux proposés par le professeur. Une approche itérative serait utilisée pour le développement et un processus de génie logiciel approprié au projet serait défini par l'étudiant et le professeur superviseur.

  1. Projet de conception d'un navigateur de type jeu de tir à la première personne (FPS) et conversion de OpenGL 1.x à OpenGL 4.x pour libQGLViewer. La librairie de visualisation libQGLViewer est conçue à partir de la librairie Qt. Elle permet de fournir une caméra de navigation utile pour la modélisation, mais peu utile pour la navigation dans un environnement 3D. Le projet consisterait à développer une caméra qui respecterait autant l'architecture de libQGLViewer que de Qt, qui fonctionnerait avec OpenGL et qui permettrait les déplacements typiques de jeu de tir à la première personne : flèches haut et bas clavier pour avancer et reculer, flèches gauche et droite pour se déplacer latéralement, souris pour regarder à gauche, à droite, en haut et en bas. La deuxième partie du projet concevoir une architecture qui respecte l'architecture existante tout en permettant d'utiliser les nouvelles version d'OpenGL (en particulier OpenGL 4.x).
  2. Projet de modélisation procédurale. La modélisation de plusieurs famille d'objets se réalise efficacement par modélisation procédurale : plantes, arbres, édifices, réseau routier. La modélisation procédurale est réalisée à l'aide de L-System, des systèmes à base de description sous forme de grammaire. Le projet consisterait à faire la conception d'un système supportant plusieurs types de grammaires et générant la génération des surfaces 3D correspondantes. Un système existe déjà qui supporte déjà un sous ensemble des grammaires. Ce système pourrait donc être augmenté afin de supporter un éventail plus complet de grammaires, ainsi que de générer la surface correspondant à l'objet généré par la grammaire. 
  3. Simulation de fluide en utilisant le calcul parallèle, en particulier la carte graphique (GPU). L'utilisation de librairies telles que OpenCL et Cuda, permet de simuler un fluide très détaillé (composé de plusieurs centaines de milliers de particules) en des temps raisonnables. Il existe toutefois des défis au niveau du balancement de la charge (load balancing) et de la répartition des calculs sur plusieurs ordinateurs. Le projet consisterait à faire des améliorations et des tests de performance sur une architecture parallèle.
  4. Développement de systèmes informatiques permettant la mise en correspondance de maillages de polygones. À partir des maillages de polygones correspondants à deux personnages de forme humanoïde, un système existant permet d'identifier sur les maillages des points et lignes qui sont mis en correspondance entre les deux maillages. Ceci est fait manuellement et le système pourrait être amélioré afin de réduire ne temps nécessaire pour positionner les points et lignes sur les maillages, de même que les mettre en correspondance entre les deux maillages. Le système est réalisé en C++ et utilise OpenGL ainsi que Qt.
  5. Détection de collision particules/polygones pour la simulation de fluide. Le projet consisterait à sélectionner une des approches existantes qui serait facilement applicable à la simulation de fluide sur GPU (carte graphique programmable). Le projet serait réalisé en C++.
  6. Contribution à des projets d'infographie 3D Open Source (code source ouvert). Plusieurs projets à code source ouvert sont en lien avec l'infographie. Entre autres, libQGLViewer : http://libqglviewer.com/ Assimp : http://assimp.sourceforge.net/ Blender : http://blender.org/.
  7. Lissage temporel de juxtaposition de textures. Le but est de permettre d'appliquer des textures sur la surface d'un liquide, de sorte que lors de l'animation du liquide, la texture puisse évoluer de façon cohérente avec la déformation du fluide. Pour y arriver, des parcelles de surfaces sont texturées indépendamment et une jonction qui minimise la différence entre deux parcelles voisines est calculée. En plus de la jonction, un lissage est effectué afin de créer une transition lisse entre les deux parcelle qui sera difficile à identifier. Finalement, ces approches doivent préserver une jonction et un lissage cohérent dans le temps, évitant les sauts de jonction ou de lissage. De tels sauts seraient très dérangeant visuellement et annuleraient les efforts de lissage. Pour arriver à faire ce lissage, une approche de l'état de l'art devrait être implémentée. L'article de Chen, Tao. 2010. « Motion-Aware Gradient Domain Video Composition ».  IEEE Transactions on Visualization and Computer Graphics. donne de bons résultats, mais l'approches est relativement complexe à implémenter. Le projet commencerait donc par plutôt développer l'approche de Wang, Hongcheng. 2004. « Seamless Video Edition ». Proceedings - International Conference on Pattern Recognition, vol. 3, p. 858-861 qui est plus facile d'approche. L'article de Pérez, Patrick. 2003. « Poisson Image Editing ». ACM SIGGRAPH 2003 papers, v. 33, n. 3, p. 342-348 est important à considérer car il donne les bases du fonctionnement du lissage de poisson en 2D. Une implémentation de l'article de Pérez est disponible, ainsi qu'une implémentation partielle de l'article de Wang. Ceci servirait de point de départ au projet.
  8. Documentation des besoins, analyse et développement d'une infrastructure web d'offres et demandes, pour répondre aux besoins de mise en correspondance des étudiants de maîtrise et doctorat avec les projets offerts par les professeurs. Le but est d'avoir un système similaire à celui qui existe déjà (http://www.etsmtl.ca/Etudiants-actuels/Cycles-sup/Liste-des-fiches), mais où il serait possible de faire des recherches par type d'étudiant recherché (maîtrise 15 crédits, 30 crédits, doctorat), par mots-clés, par financement, etc. et dans lequel l'étudiant peut directement appliquer sur le projet à l'aide d'un portfolio (un peu comme c'est fait pour le service des stages). La documentation des besoins, l'analyse et le développement se ferait en collaboration avec des étudiants, des professeurs et le service de TI de l'ÉTS.
  9. Ajout d'effet de bulles, mousse et éclaboussures dans un post-traitement de simulation de fluide. L'approche consiste à prendre en entrée une simulation de fluide réalisée avec un outil déjà existant pour ensuite faire une deuxième simulation qui considère des effets importants pour l'affichage d'un liquide réaliste, c'est à dire les bulles d'air dans l'eau, les éclaboussures d'eau et la mousse. Ce projet se baserait sur l'article scientifique suivant : M. Ihmsen, N. Akinci, G. Akinci, M. Teschner, "Unified Spray, Foam and Bubbles for Particle-Based Fluids,", The Visual Computer.
  10. Développement d'une méthodes d'adaptation de modèles d'arbres par rapport à leur environnement. L'arbre, ses branches et ses feuilles ont besoin de lumière pour se développer. Par contre, lorsqu'un environnement est créé, ce sont des arbres matures que l'utilisateur veut disposer dans la scène. Il est possible de calculer l'interaction entre l'arbre et son environnement et de changer ses branches et feuilles d'une façon inspirée de la botanique. Ce travail serait inspiré de l'article publié à SIGGRAPH 2012 : http://graphics.uni-konstanz.de/publikationen/2012/plastic_trees/website/
  11. Projet de simulation de fluide multi-résolution. La simulation de fluide demande beaucoup de calculs et certaines approches réussissent à réduire la quantité de calcul en simulant plus grossièrement certaines parties du volume du fluide. Voici quelques articles récents sur le sujet : http://graphics.ethz.ch/publications/papers/paperSol11a.php et http://dx.doi.org/10.1145/2010324.1964977
  12. Développement de systèmes informatiques permettant la mise en correspondance de maillages de polygones. À partir des maillages de polygones correspondants à deux personnages de forme humanoïde, le système devra permettre de déformer le maillage source de sorte qu'il corresponde le plus fidèlement au maillage cible. Afin de réaliser cette déformation, des approches de l'état de l'art seront implémentées dans un langage de programmation orienté objet, probablement le C++ pour des fins de performance. Parmi les approches de l'état de l'art qui seront considérées, les suivantes sont les plus prometteuses : M. Ovsjanikov, M. Ben-Chen, J. Solomon et al., “Functional maps: a flexible representation of maps between shapes,” ACM Trans. Graph., vol. 31, no. 4, Article 30, 2012; C. Wang, M. M. Bronstein, A. M. Bronstein, and N. Paragios, “Discrete minimum distortion correspondence problems for non-rigid shape matching,” in Proc. of Third international conference on Scale Space and Variational Methods in Computer Vision, 2012, pp. 580-591; V. G. Kim, Y. Lipman, and T. Funkhouser, “Blended intrinsic maps,” ACM Trans. Graph., vol. 30, no. 4, Article 79, 2011. Après une analyse des approches et des enjeux de leur implémentation, une approche sera choisie et implémentée afin de produire un système fonctionnel. Ce système sera développé dans le cadre d'une licence à code source ouvert. Afin de maximiser l'utilisation du code résultant, une licence permettant un vaste usage, incluant l'usage commercial (telles que Apache, BSD et MIT) sera privilégiée. Encore afin de permettre une vaste diffusion des résultats, le code sera rendu disponible dans une bibliothèque de projets à code source ouvert, telle que SourceForge.
  13. Level Set Method est une approche numérique qui permet de faire le suivi d'interfaces et de la topologie des formes. Cette technique est de plus en plus utilisée pour générer des surfaces complexes sur des corps hautement déformables (par exemple des liquides). Level Set Method permet ainsi de suivre aisément des changements brusques de topologie dans le temps et dans l'espace (par exemple des éclaboussements à haute vitesse). Ce projet se baserait sur les publications suivantes : Enright, Douglas, Losasso, Frank et Ronald Fedkiw. 2004. « A fast and accurate semi-Lagrangian particle level set method ». Computers and Structures, vol. 83, nº 6-7, p. 479-490. ainsi que Losasso, Frank, Talton, Jerry O., Kwatra, Nipun et Ronald Fedkiw. 2008. « Two-Way Coupled SPH and Particle Level Set Fluid Simulation ». IEEE Transactions on Visualization and Computer Graphics, vol. 14, nº 4, p. 797-804. Le code source permettant l'évaluation de surfaces à partir d'une approche avec Level Sets a été rendu disponible par l'équipe du professeur Ronald Fedwik de l'université de Stanford. Le module de géométrie (PhysBAM_Geometry) est celui qui contient toutes les fonctionnalités associées à cette approche. Le projet pourrait s'inspirer de cette implémentation, mais devrait refaire l'intégralité du code pour des raisons de droit d'auteur évidentes. Hyperlien vers le code source : http://physbam.stanford.edu/links/getcode.html
  14. Évolution de surface de fluide texturée. Lors de l'animation de la surface d'un liquide, il est souvent pertinent d'ajouter des textures qui contrôlent l'apparence de la surface du fluide. Par exemple pour le l'eau sale ou de la boue, le spectateur s'attend à ce qu'il y ait des détails à la surface plutôt qu'une couleur uniforme. Pour ce faire, il faut être ne mesure d'associer les couleurs appropriées à la surface du liquide. Une première approche pour y arriver consiste à faire de la synthèse de texture avec cohérence temporelle. L'article suivant présente une telle approche : Adam W. BARGTEIL, Funshing SIN, Jonathan E. MICHAELS, Tolga G. GOKTEKIN et James F. O’BRIEN : A texture synthesis method for liquid animations. In ACM SIGGRAPH 2006 Sketches, SIGGRAPH ’06, New York, NY, USA, 2006. ACM. Une autre approche qui règle un autre aspect du problème consiste à déformer la texture selon le mouvement du liquide. Une telle approche est décrite dans l'article suivant : Qizhi YU, Fabrice NEYRET, Eric BRUNETON et Nicolas HOLZSCHUCH : Lagrangian texture advection : Preserving both spectrum and velocity field. Visualization and Computer Graphics, IEEE Transactions on, 17(11):1612 –1623, nov. 2011. Pour ce projet, l'étdiant pourrait développer l'une ou l'autre des deux approches.
  15. Contribuer au développement d'outils d'infographie 3D qui permettent de réaliser les laboratoires de LOG750 en Java plutôt qu'en C++. Les laboratoires utilisent plusieurs outils et librairies. Il faut s'assurer que l'architecture et le design pour les outils en Java correspondent bien au design Java tout en correspondant bien aux outils équivalents en C++.
  16. Des recherches sur la génération de personnages sur mesure sont faites afin de permettre de générer rapidement des avatars qui correspondent à des critères d'âge, de sexe, d'apparence, etc. particuliers. Les personnages ainsi que le système de création des personnages doit être utilisable sur station de travail tout comme sur tablette graphique, voire même sur téléphone intelligent. Ces personnages sur mesure seront utilisés dans un contexte de réalité virtuelle pour le traitement de problème psychologiques/psychiatriques. Par exemple, une personne ayant des phobies pourrait apprendre à les contrôler en réalité virtuelle. Le projet pourrait être réalisé sous Android ou iOS, possiblement avec l'engin de jeu vidéo Unity3D.
  17. Il y a également plusieurs projets possibles en collaboration avec la Société des arts technologiques (SAT www.sat.qc.ca). Voici quelques exemples de projets :