160 likes | 293 Views
MEPP. 3D MEsh Processing Platform. MEPP : MEsh Processing Platform. Présentation Plateforme Objectifs Historique & réalisation Librairie CGAL Présentation Noyau, polyèdre Polyèdre enrichi Développement composant Déploiement environnement dév. (Windows & Linux)
E N D
MEPP 3D MEsh Processing Platform Martial TOLA - 03/02/2009
MEPP : MEsh Processing Platform • Présentation • Plateforme • Objectifs • Historique & réalisation • Librairie CGAL • Présentation • Noyau, polyèdre • Polyèdre enrichi • Développement composant • Déploiement environnement dév. (Windows & Linux) • Création composant (CGAL, IHM, …) • Démonstration/utilisation • Orientations futures MEPP - 03/02/2009
Présentation : plateforme • Définition • Objectif principal : • fournir les outils & bases nécessaires pour que des développeurs (doctorants, stagiaires, ...) puissent développer rapidement des nouvelles applications. • Effets immédiats : • réalisation plus facile de démonstrations, collaborations entre équipes, etc. MEPP - 03/02/2009
Présentation : plateforme • Principes généraux • Impact minimal d’un système d’exploitation et d’un langage de programmation, dans la mesure du possible. • Ouverture : • basée sur une architecture modulaire, • pouvoir s’enrichir facilement avec des nouvelles fonctionnalités/modules. • Intégration facile : • pouvoir facilement utiliser/enrichir la plateforme, en utilisant la documentation associée. • Identification claire des contributeurs et du responsable (un seul responsable par plateforme). MEPP - 03/02/2009
Présentation : objectifs • Etablir un cadre autour des nouvelles techniques de maillages 3D • Etre orienté vers la portabilité et la modularité (notion de composant) • Fournir une IHM et des fonctionnalités de base • Fédérer/rassembler/pérenniser les développements de l’équipe M2DISCO MEPP - 03/02/2009
Présentation : historique & réalisation • Historique (CDD 10 mois ingénieur) • Point de départ : « A Tutorial on CGAL Polyhedron for Subdivision Algorithms ». • Ajout modularité : notion de composant. • Modification IHM : remplacement MFC (Windows) par wxWidgets (Windows/Linux/Mac OS X). MEPP - 03/02/2009
Présentation : historique & réalisation • Réalisation (depuis fin septembre 2008) : 1/2 • Finalisation version Linux, projet Codeblocks. • 1er portage version Mac OS X, projet Codeblocks. • Kit de déploiement/installation pour Linux et Windows. • Machines virtuelles VMware Linux et Windows préinstallées. • Tutoriels « déploiement/installation facile » MEPP pour Linux et Windows (GForge, Visual C++ Express, Codeblocks, SVN, CGAL, Boost, Xerces, wxWidgets). MEPP - 03/02/2009
Présentation : historique & réalisation • Réalisation (depuis fin septembre 2008) : 2/2 • Débogage. • Résolution fuites mémoire. • Jeux d’essai de maillages « fiables ». • Apprentissage CGAL. • Création « composant exemple CGAL » et tutoriel CGAL (en 4 étapes), maj. tutoriel développement composant. • Rajout gestion évènements souris/clavier au niveau des composants. • Ajout « cartouche uniforme » pour les composants : Help/About & Documentation/Notes/Change Log. MEPP - 03/02/2009
Librairie CGAL : présentation • Computational Geometry Algorithms Library • Librairie Open Source / utilisateurs académiques. • GeometryFactory / licence commerciale. • Consortium 7 instituts de recherche en Europe et Israël. • INRIA Sophia-Antipolis fortement impliqué. • Propose une implémentation des objets et des algorithmes utilisés couramment en géométrie algorithmique. • Robuste, flexible, efficace. • POO et polymorphisme : généricité / template. • Utilise le paradigme de la librairie STL : conteneurs, itérateurs, circulateurs… MEPP - 03/02/2009
Librairie CGAL : noyau, polyèdre • Noyau : • espace euclidien à 2 ou 3 dimensions, • coordonnées cartésiennes ou homogènes, • différents types de données (double, int, …). • Représentation des polyèdres • Construction incrémentale / lecture fichier : sommets puis connectivités (facettes). • Structure de données basée sur le concept des demi-arêtes (orientées) : • sommets / arêtes / facettes, • relations d’incidence et d’adjacence. MEPP - 03/02/2009
Librairie CGAL : polyèdre enrichi • Polyèdre enrichi : personnalisation de la classe de base CGAL::Polyhedron_3 • Nouveaux attributs et méthodes associés au polyèdre : • boite englobante, • « pure quad », • « pure triangle », • etc. • Items géométriques (sommets, demi-arêtes et facettes) également « enrichis » : • normale, couleur, tag / sommets, • normale, couleur, tag / facettes, • tag / demi-arêtes. MEPP - 03/02/2009
Développement composant : déploiement environnement dév. • Inscription à la Forge du LIRIS : http://gforge.liris.cnrs.fr. • Demande d’adhésion au projet MEPP. • Installation et configuration de SVN1 / TortoiseSVN2. • Récupération du projet MEPP. • Installation des dépendances (wxWidgets, CGAL, Boost, Xerces)1. • Installation et configuration de Code::Blocks1 / Visual C++ 2005 Express Edition2. • Machines virtuelles VMware Linux et Windows* préinstallées. 1 pour Linux. 2 pour Windows. * pb licence. MEPP - 03/02/2009
Développement composant : création composant (CGAL) • Principe retenu : héritage multiple « conditionnel » • Chaque composant peut (ou non) être inclus au moment de la compilation / biais d’un « #define ». • Chaque composant peut donc (ou non) ainsi enrichir : • les facettes, • les demi-arêtes, • les sommets, • le polyèdre lui-même. • Le polyèdre enrichi ainsi que ses items géométriques héritent donc de tous les enrichissements amenés par l’héritage respectif de chaque composant. MEPP - 03/02/2009
Développement composant : création composant (IHM) • Principe retenu : liste de composants avec « insertion conditionnelle » • Selon le même principe que pour la partie CGAL, chaque composant peut (ou ne pas) être inclus au moment de la compilation / biais d’un « #define ». • Chaque composant est (ou n’est pas) inséré dans la liste de composants « actifs ». • Au moment de la création de l’IHM de base de MEPP, chaque composant « enrichit » donc le menu et la toolbar ainsi que les évènements associés. • Tout au long de l’exécution de MEPP, chaque composant reçoit les évènements suivants : • pre_draw, • post_draw, • OnMouseLeftDown, • OnMouseLeftUp, • OnMouseRightDown, • OnMouseRightUp, • OnMouseMotion, • OnMouseWheel, • OnChar. MEPP - 03/02/2009
Démonstration/utilisation MEPP - 03/02/2009
Orientations futures • Capture image/image vectorielle/vidéo • Documenter : • y compris développeurs composants ! • Diffuser MEPP à l’extérieur : • partenaires académiques, industriels, web, • étudier problèmes licence. • Log « séquence interaction » / replay & démo • 4ème dimension : séquence de maillages / t ? MEPP - 03/02/2009