au département informatique Block3D La réalité virtuelle au département informatique Etudiants Edgar-Fernando Arriaga-Garcia Charles-Henri Babiaud Encadrants Clément Grellier Ronan Gaugne Quentin Petit Jérôme Ricœur Valérie Gouranton Florent Violleau 31 mai 2012
Introduction
Plan 5. Démonstration de Block3D 1. Rappels du contexte : µRV 2. Fonctionnalités de Block3D 3. Architecture logicielle et physique 4. Conception et développement 5. Démonstration de Block3D 6. Bilan du projet de réalité virtuelle 7. Planification
Plan 5. Démonstration de Block3D 1. Rappels du contexte : µRV 2. Fonctionnalités de Block3D 3. Architecture logicielle et physique 4. Conception et développement 5. Démonstration de Block3D 6. Bilan du projet de réalité virtuelle 7. Planification
1. Rappel du contexte - Problématique et but Portes ouvertes Vitrine technologique du département informatique Administration de la salle µRV Mise en place de la salle Gestion de l’accès à la salle Intégration d’autres projets 1 projet de 3INFO 3 projets de 5INFO Application ludique de réalité virtuelle à partir du projet L3G0 Déploiement dans la salle Immersia
1. Rappel du contexte - Matériel Équipement de visualisation 3D : Un moniteur 3D Un vidéoprojecteur 3D Deux paires de lunettes Nvidia 3D Une paire de lunettes Vuzix Wrap 920 Équipement d’interaction : Une Kinect Deux Wiimotes avec Nunchuk Un joystick à retour de force
1. Rappel du contexte – Le coureur Périphériques Visualisation : Lunettes 3D Nvidia Vidéoprojecteur Interaction : Kinect Actions Se déplacer Pivoter la caméra
1. Rappel du contexte – Le constructeur Périphériques Visualisation Lunettes Vuzix Interaction Wiimote Actions Déplacer la caméra Poser pièces
1. Rappel du contexte – Collaboration Collaboration avec les autres groupes Un groupe de 3ème année, Daedalus : Application de génération de labyrinthe Un groupe de 4ème année, Linnova : Stockage de leur matériel dans la salle µRV Un groupe de 5ème année : Application distribuée à l’aide d’OpenMASK D’autres groupes de 5ème année Utilisation temporaire de la salle
Daedalus, génération de labyrinthes Paramètres de configuration Aperçu du labyrinthe Sauvegarde du fichier XML
Plan 5. Démonstration de Block3D 1. Rappels du contexte : µRV 2. Fonctionnalités de Block3D 3. Architecture logicielle et physique 4. Conception et développement 5. Démonstration de Block3D 6. Bilan du projet de réalité virtuelle 7. Planification
2. Fonctionnalités – Interactions (1/3) Fonctionnalités du coureur Avancer Reculer Tourner à gauche Tourner à droite Translater à gauche Translater à droite Sauter Accéder au menu
2. Fonctionnalités – Interactions (2/3) Fonctionnalités du constructeur Dézoomer Translater la vue Orienter la vue Ajouter une pièce Changer la pièce courante Accéder au menu
2. Fonctionnalités – Interactions (3/3) Fonctionnalités du menu Reprendre la partie Choisir le labyrinthe Choisir les paramètres sonores Afficher l’aide Quitter le jeu
2. Fonctionnalités – Mode distribué (1/2) Communication distante 14
2. Fonctionnalités – Mode distribué (2/2) Labyrinthe Décors Déplacement du coureur/constructeur Menus Collisions Wiimote Interactions coureur/constructeur Communication distante 15
Plan 5. Démonstration de Block3D 1. Rappels du contexte : µRV 2. Fonctionnalités de Block3D 3. Architecture logicielle et physique 4. Conception et développement 5. Démonstration de Block3D 6. Bilan du projet de réalité virtuelle 7. Planification
3. Architecture logicielle – Vue générale OpenMask Ogre3D OpenAL OgreAL PhysX NxOgre Critter
3. Architecture logicielle – Ogre Moteur 3D Communauté active Licence libre (MIT) Multiplateforme C++
3. Architecture logicielle – Son spatialisé (1/4) Utilisation d’OpenAL : Bibliothèque qui permet la manipulation de tampons sonores à bas niveau Adapté à de très nombreuses utilisations Utilisation d’OgreAL Wrappeur d’OpenAL pour Ogre3D Simplification dans le positionnement des sources sonores dans le monde symbolique Intégration aisée avec les objets de Ogre3D Utilisation des enceintes 5.1 dans le cadre de l’application Architecture sonore
3. Architecture logicielle – Son spatialisé (2/4) Permettre l’immersion dans le monde symbolique du coureur Guider le coureur jusqu’à son objectif
3. Architecture logicielle – Son spatialisé (3/4) Guider le coureur par l’utilisation d’un sonar Informer le coureur et le constructeur qu’une brique a été posée Sonar Pose des briques Coureur
3. Architecture logicielle – Son spatialisé (4/4) Variation de la fréquence et du tempo du son : Du sonar De la musique d’ambiance Plus aigu Plus rapide Fréquence (kHz) Plus grave Moins rapide Arrivée Départ Distance par rapport à l’objectif
3. Architecture logicielle – Modélisation du coureur Démarche d’utilisation de Blender : Importation d’un personnage Lego Correction des défauts (faces transparentes, …) Modification du squelette Création des animations Exportation en .mesh pour être utilisé dans Ogre Exportation des animations pour Ogre peu intuitive Relativement peu de documentation
Caractéristiques Empêcher le coureur de traverser les murs 3. Architecture logicielle – PhysX Empêcher le coureur de traverser les murs Caractéristiques C++ Licence commerciale Multiplateforme Développement actif Utilisé dans la plupart des jeux actuels Bien documenté Contrôleurs d’avatar Corps rigides et souples Champs de force, etc.
NxOgre = Wrappeur Critter = Interface et 3. Architecture logicielle – PhysX et Critter (1/2) NxOgre = Wrappeur Critter = Interface et Licence LGPL C++ Développement actif Tutoriels Visual débogueur intégré
Fonctionnalités supplémentaires 3. Architecture logicielle – PhysX et Critter (2/2) Fonctionnalités supplémentaires Débogueur visuel
3. Architecture logicielle – Gestion de projet Site web collaboratif : Media Wiki http://micro-rv.insa-rennes.fr Redmine : forge de l’INSA gestionnaire de version : Subversion intégré hébergement de la documentation : wiki intégré discussion par sujets sur des erreurs : forum intégré Communication IRC (Internet Relay Chat)
3. Architecture logicielle – Cmake Gestion des dépendances logicielles Génération Makefile Génération projet VisualStudio Multiplateforme Indique les dépendances manquantes OgreAL et OpenAL VRPN OpenMASK Ogre CppUnit et CxxTest NxOgre et Critter
Bilan prévu / réel FAAST NxOgre et Critter VRPN OpenMASK OgreAL Ogre CppUnit CEGUI Cmake Ogre Bites
3. Architecture physique– Généralités Copie locale du monde virtuel MPI TCP IP OpenMASK Communication distante Même arborescence de fichiers sur les pc Copie locale du monde virtuel Participation des 5INFO 5INFO Coureur 30
3. Architecture physique– VRPN (1/2) Virtual Reality Peripheral Network Interfaçage avec les périphériques Un serveur Associé à une IP et un port N clients Sur une machine ou plusieurs machines Serveur Clients
3. Architecture physique– VRPN (2/2) Bouton : Envoi pour chaque pression/relâchement Clavier, clic, bouton Analogique : Envoi continu de l’état Joystick Tracker : Suivi d’une position Casque Bouton Analogique Tracker VRPN Événements récupérés
3. Architecture physique– Wiimote Intégration d’un serveur VRPN Wiimote existant Création d’un client VRPN Interfaçage avec Block3D Boutons pressés (Bouton) Boutons relâchés (Bouton) Mouvement du joystick (Analogique) Accélération de la Wiimote (Analogique) Accélération des Nunchuk (Analogique) Wiimote - Nunchuk
3. Architecture physique– Intégration de la Wiimote Serveur Wiimote Interfaçage Client Block 3D La Wiimote est connectée (Bluetooth) Le serveur Wiimote est lancé Block3D récupère les informations du serveur Les événements sont filtrés par un écouteur « WiimoteListener »
FAAST, serveur et client VRPN 3. Architecture physique– Contrôle de la Kinect (1/2) FAAST, serveur et client VRPN
FAAST, serveur et client VRPN 3. Architecture physique– Contrôle de la Kinect (2/2) FAAST, serveur et client VRPN Intégration transparente de FAAST dans Block3D transforme des événements Kinect en événements claviers Kinect FAAST Block3D
Plan 5. Démonstration de Block3D 1. Rappels du contexte : µRV 2. Fonctionnalités de Block3D 3. Architecture logicielle et physique 4. Conception et développement 5. Démonstration de Block3D 6. Bilan du projet de réalité virtuelle 7. Planification
ogre openmask model interactions block3D plugin parser time wiimote 4. Conception et développement – Diagramme de Paquetages openmask block3D plugin model parser time data element sound interactions kinect wiimote ogre
4. Conception et développement – Tests Tests unitaires Tests utilisateurs CppUnit CxxTest Facilité à trouver des bêta testeurs
Plan 5. Démonstration de Block3D 1. Rappels du contexte : µRV 2. Fonctionnalités de Block3D 3. Architecture logicielle et physique 4. Conception et développement 5. Démonstration de Block3D 6. Bilan du projet de réalité virtuelle 7. Planification
Arriverez-vous à l’objectif avant que le temps soit fini ? 5. Démonstration Arriverez-vous à l’objectif avant que le temps soit fini ? Coureur Constructeur
Plan 5. Démonstration de Block3D 1. Rappels du contexte : µRV 2. Fonctionnalités de Block3D 3. Architecture logicielle et physique 4. Conception et développement 5. Démonstration de Block3D 6. Bilan du projet de réalité virtuelle 7. Planification
6. Bilan - Matériel Vuzix Wiimote et nunchuck Changement de salle 2 adaptateurs VGA sur un même ordinateur
6. Bilan – Difficultés de synchronisation Synchronisation Ogre – NxOgre
Communication distante 6. Bilan – Difficultés du mode distribué Difficultés de prise en main d’OpenMASK Documentation et communauté restreintes Sessions d’entrainement à l’ETI Connexion MPI en réseau Adaptation du travail des 5ème année Fonctionnalités aussi restreintes Contraintes sur la reprise du code Création de plugins OpenMASK nécessaires Communication distante 45
6. Bilan – Possibilités d’évolution Evolutions d’intégration Amélioration du support Linux Amélioration application distribuée Evolutions des interactions Intégration du joystick Gérer le saut de l’avatar L’avatar suit les mouvements de l’utilisateur Jeu plateforme
Plan 5. Démonstration de Block3D 1. Rappels du contexte : µRV 2. Fonctionnalités de Block3D 3. Architecture logicielle et physique 4. Conception et développement 5. Démonstration de Block3D 6. Bilan du projet de réalité virtuelle 7. Planification
7. Planification – Jalons réels et prévisionnels Livraison rapport final 30/05/2012 Planification initiale Planification réelle Livraison projet 31/05/2012 Intégration OpenMask 31/05/2012 Applications constructeur/coureur 27/04/2012 28/05/2012 Conception Implémentation Livraison Présentation finale 31/05/2012 Immersion dans un monde en 3D 16/03/2012 01/04/2012 Interactions utilisateur/matériel 24/02/2012 01/04/2012 Livraison rapport planification 10/02/2012 En 4 mois ce sont 1 mois de retard qui ce sont accumulés 48
7. Planification – Nombre d’heures Charge (h) Prévu 1759h Réalisé 2079h 49
7. Planification – indicateurs et causes Retard C’est une charge réelle totale de 2079h, alors que la charge prévisionnelle était de 1768h Ce n’est qu’une V4 qui est livrée et non une V5 Causes Difficultés d’implémentation (distribué, NxOgre,…) Départ d’un membre du groupe Difficultés de gestion de la salle Gestion du matériel 50
7. Planification – gestion de projet Organisation de l’équipe Formation de 3 équipes : constructeur, coureur et matériel Avancement itératif Etablissement de jalons, et livraison d’une application à chaque jalon Méthode de gestion de projet Méthode de gestion de projet SCRUM, avec réunions régulières. 51
Conclusion Objectifs atteints Application interactive Un projet complet Périphériques Wiimote, Kinect Technologies Ogre, PhysX, OpenAL Objectifs atteints Application interactive Coureur/Constructeur Application distribuée Un projet passionnant Découverte de la réalité virtuelle Sujet très intéressant
Block3D