Le travail consistait à créer une extension du projet SOFA (Simulation Open Framework Architecture) nommé SOFAVR portant l’application de simulation physique sur des équipements de Réalité Virtuelle. Une première partie est d’adapter le rendu 3D séquentiel de SOFA (OpenGL) à un rendu 3D orienté graphe de scène (OpenSceneGraph). Une seconde partie est d’adapter l’architecture de SOFA aux équipements de Réalité Virtuelle, dans un premier temps dans la salle immersive de Sophia Antipolis, puis dans un second temps dans les autres centres. Voici la première présentation des premiers résultats.
Les paquets snaps « les paquets d’applications linux universels, nouvelle g...
SOFAVR_jesnault_19-09-11_presentation1
1. SOFAVR
Simulation Open Framework Architecture
for Virtual Reality
SERVICE : DREAM
EQUIPE PROJET : SOFA
Sophia-Antipolis 19 Septembre 2011
2. SOMMAIRE
1. Contextes – Objectifs - Contraintes
2. SOFAVR - actuellement
3. Suite du projet
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 2
3. 1
Contextes – Objectifs - Contraintes
1.1 Simulation Open Framework Architecture
1.2 Objectifs et résultats attendus
1.3 Initialisation du projet SOFAVR
4. 1.2 Simulation Open Framework Architecture
Graphe de Simulation :
Composants (400) :
• Visuels
• Topologique
• Mapping
• Calcul ODE / linéaire
• Champs de forces
• Modèles de collisions
• Contraintes
…
Description XML
Interface graphique Qt +
rendu OpenGL Application SOFA
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 4
5. 1.2 Objectifs et résultats attendus
Porter SOFA sur des équipements de Réalité Virtuelle :
• S’adapter aux différents dispositifs d’affichage (sphérique, cubique…) des
équipements de Réalité Virtuelle
• Avoir des Interactions Homme-Machine favorisant l’immersion (plus de
clavier / souris), découplées de la visualisation
• Désynchronisation de la simulation et du rendu en deux boucles
indépendantes (avoir un rendu orienté utilisateur)
Pré requis :
• Prise en main de SOFA et des API/outils disponibles
Résultats attendus :
• Apporter une brique technologique innovante supplémentaire à SOFA
• Promouvoir l’utilisation d’équipements de Réalité Virtuelle
• Favoriser les échanges inter-INRIA (national) en contribuant à l’homogénéisation d’une
architecture compatible avec les différents équipements de Réalité Virtuelle.
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 5
6. 1.3 Initialisation du projet SOFAVR
Fort dynamisme Naissance
Besoin de stabilité et de confort
SOFA-DEV SOFAVR
Dépôt SVN: Dépôt GIT :
branche sofa-dev branche svn
git svn fetch git push
Dépôt distant
Dépôt GIT :
.svn
branche svn
Dépôt local
git commit
git svn rebase
Dépôt GIT :
Répertoire de travail branche svn
https://gforge.inria.fr/projects/sofa-vr/
jerome.esnault@inria.fr - SOFAVR
-6 19 Septembre 2011
7. 1.3 Initialisation du projet SOFAVR
Rythme des cycles de développement différents
Etre le moins intrusif possible
SOFA-DEV SOFAVR
Dépôt SVN: Dépôt GIT : Dépôt GIT :
branche sofa-dev branche svn branche master
git push
Dépôt distant
git merge svn
Dépôt GIT : Dépôt GIT :
.svn
branche svn branche master
Dépôt local
git checkout master git commit
Dépôt GIT : Dépôt GIT :
branche Master
branche svn Conflits? branche Master
Répertoire de travail
https://gforge.inria.fr/projects/sofa-vr/
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 7
8. 1.3 Initialisation du projet SOFAVR
Synchronisation régulière pour ne pas diverger
SOFA-DEV SOFAVR
Dépôt SVN: Dépôt GIT : Dépôt GIT : Dépôt GIT :
branche sofa-dev branche svn branche master branche master
Dépôt distant
Dépôt GIT : Dépôt GIT : Dépôt GIT :
git svn dcommit .svn
branche svn branche master branche master
Dépôt local
Dépôt GIT : Dépôt GIT :
Répertoire de travail branche master branche master
https://gforge.inria.fr/projects/sofa-vr/
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 8
9. 2
SOFAVR - actuellement
2.1 Structure du projet
2.2 SOFAVR aujourd’hui
2.2 Cas d’utilisation : sofaOsg et ses plugins
10. 2.1 Structure du projet
Dépendances des projets :
Autres MPI VRPN Autres OpenGL Qt Autres
OpenSceneGraph (SVN-CMake)
OSGVR (GIT-CMake) SOFA-DEV (SVN-QMake)
SOFAVR (GIT-CMake)
Arborescence du projet (Cmake) :
Sources
Bibliothèques Plugins Applications
sofaOsg sofapp QtOsgViewer StandaloneOsgViewer « tests » sofavr
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 10
16. 3.1 Jalonnage - bilan
Analyse métier & Intégration et
fonctionnelle validation
Conception générale Conception Tests &
et préliminaire
assemblages
Codage
Cycles itératifs
1. Configuration du projet
2. Prise en main d’OSG et de SOFA
3. Cycles itératifs d’analyses, de développements et de tests techniques
4. Intégration d’un plugin OSG Viewer basé sur Qt dans SOFA
5. Développements d’outils de chargement / déchargements de scènes SOFA… + autres
6. Développement d’un Viewer OSG Standalone self-threaded
7. Application SOFAVR basée sur OSGVR et MPI
8. Documentation (WIKI – code)
Dec Jan Fev Mar Avr Mai Jui Juil Aout
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 16
17. 3.1 La situation aujourd’hui
Jalons prévisionnels Jalons réalisées Avance
durée jalon durée jalon ments
1 Initialisation du projet (wiki, outils, configuration ) NP
2 Prise en main de SOFA
1 Prise en main de SOFA (rendu) P
1 Rendu OSG dans SOFA P
1 Séparation GUI / Rendu P
1 Visualisation asynchrone. 1 Séparation SIMU(main thread) / rendu (self-threaded) P
1 Gestion du démarrage de SOFA et de sa vue NP
1 Sécurisation, compatibilité, outils OSG NP
1 Connexion périph I - Travaux sur OSGVR P
1 Connexion périph I/O - - P
1 Visualisation CadWall
2 Application SOFAVR sur CadWall et iSpace P
2 Visualisation iSpace
3 SOFA-VR autres centres - Collaboration avec Rennes P
1 Intégration releases SOFA - Intégration local et proposition d’un plan d’intégration P
P : Prévus NP : Non prévus
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 17
18. 3.2 Planning à suivre et ouvertures
• Distribution MPI (SOFAVR sur I-Space)
• Couplage de SOFAVR avec les interfaces de Réalité Virtuelle
• Portage de SOFAVR vers les autres centres INRIA
• Contribution au projet OSGVR / SOFAVR (et support)
• Contribution au projet SOFA / SOFAVR (et support)
• Intégration aux releases de SOFA
Projet international MixedReality :
• Création d’une API OpenSource dédiée RV en collaboration avec les centres
INRIA
• Projet porté par la D2T
• Collaboration nationale Rennes/Grenoble – internationale Allemagne (IGD-
fraunhofer)
• SOFA est le cas d’utilisation implication dans les processus du projet…
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 18
19. 3.3 Retour d’expérience
Implantation géographique : service DREAM (Sophia)
Implantation projet : SOFA (Lille – Grenoble – Sophia)
Maintien de la cohérence du projet SOFAVR :
• Gestion de projet :
- Réunion hebdomadaire SOFAVR
- Réunion mensuelle SOFAVR (DREAM) / SOFA (EVASION-SHAMAN-ASCLEPIOS)
- Wiki dédié à jour
• Implications multiples :
- Familiarisation des outils (GIT, CMake/cmaketools, OSG, documentation)
- Participation au projet SOFA (réunions, chat IRC, mailling-list, documentation)
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 19
20. Merci de votre attention.
Des questions ?
PmWiki SofaVR :
https://www-sop.inria.fr/dream/wiki/SofaVR/SofaVR
SofaVR sur la forge (demander l’accès):
https://gforge.inria.fr/projects/sofavr/
23. Couches – SOFA<->SOFAVR
OpenSceneGraph
Contrôleur d’objets
SceneManagement
Entrées
Graphe de scène périphériques Propriétés
Comportement des physiques des
RessourceManagement objets objets
Materiaux Textures
Animations Logique Monde Physique
Outils Mise à jour position / déformation /
son de collisions
Math String Logging
Viewer Rendu visuel Monde Audio
Réalité virtuelle
Sources sonores
Rendu de l’objet à min 25
des objets
images / s
Moteur de simulation
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 23
24. Couches – SOFA<->SOFAVR
Application User
Modeler
Framework -
services Sound GUI Datas Input Sofa - GUI
Sofa - Ressources
SceneGraph
Sofa - Components
C / C++ / Standard Sofa - Viewer
scripts
OpenAL… C++
VRPN
GL
libraries Sofa – Helper (tools)
GPGPU Sofa - Core
I/O clavier Computer
Hardware Sound Graphic souris
CPU Cluster
card card joystick -
ART…
Immersive room
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 24
25. Méthode de collaboration :
Granulation temporelle et informationnelle asynchrone
Collaboration en session
Equipe sofavr (DREAM) Modèle 3C : Equipe sofa-dev
PmWiki Communication MediaWiki-TracWiki-
HUDSON-chat
CMake Coordination QMake
GIT Collaboration SVN
User 1 User 2 User User
NF 1 NF 2 1 2
SOFAVR
Repo forge
SOFA
User 3 User 4 User User
NF 3 NF 4 3 4
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 25
26. Méthode Agile - codage
Utilisateurs finaux
Version 1.0.1 fonctionnelle
Rapports de tests Mesure satisfaction
clients
Version 1.0.0 Version 1.0.1
BUG
fonctionnelle fonctionnelle
Réflexions jalon n+1 & corrections Développements jalon
Développements jalon n
BUG version n - i n+1
Avec i le nombre d’itérations précédentes Ligne du temps
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 26
27. Tâches prévues
Dec
• Prise en main de Sofa (en continue)
Janv
• SofaOsg :
Fev- Intégration d’un renduOSG dans SOFA (plugin Qt)
Mars
Connexion au modèle visuel (avec déformations + textures)
Avril-
Mai Travaux sur le mode « standaloneviewer » osg (plugin)
Juin- Travaux sur le mode multi-thread (simu <-> rendu)
Juil
• SofaVR :
Aout- Intégration d’OSGVR
Sept Interactions SOFAVR
tps
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 27
28. Tâches non prévues
Dec
• Initialisation gestion de projet (forge git/svn – Cmake – PmWiki)
• Prise en main d’OpenSceneGraph (en continue)
Janv
• SofaOsg :
• Travaux sur RigidState (mis en attente d’intégration)
Fev- • Travaux sur le chargement/déchargement (ressources dir / XML)
Mars
• Ajout sur les outils OSG (background – debug infos)
Avril-
Mai • Autres :
Juin- Sandbox.git (en continue)
Juil Cmaketools.git (en continue)
Groupe de travail communication interne (réunions ponctuelles)
Aout-
Sept
tps
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 28
29. Cas d’utilisation : StandaloneOsgViewer (sous sofavr)
sofaOsg
•Inhiber la création automatique d’un viewer
SofaThread
Application sofavr •Création d’un viewer manuellement
(main)
StandAloneOsgViewer
•Construit le graph de scène OSG
• Rend la scène dans une fenêtre
indépendante
• Externalisation du rendu dans
une boucle dédiée
Main thread : QApplication (GUI) + simulation
Render thread : OsgViewerStandalone (draw visitors on sofa graph)
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 29
30. Cas d’utilisation : sofavr
Basé sur MPI : sofaOsg
•Le même code …
Inhiber la création automatique d’un viewer
SofaThread
Création d’un viewer manuellement
Application sofavr
(main)
SofaVRViewer Osgvr::Viewer::AbstractViewer
Abstraction d’un rendu sur I-space et CAD-WALL
SofaVRCallBack Mise à jour du graph de scène OSG
…tournant indépendamment sur 1 machine maitre et des machines esclaves :
Machine Maitre : Machines esclaves:
Main thread : Render threads :
QApplication (GUI) + simulation SofaVRViewer (draw visitors on sofa graph)
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 30
33. Equipements, ressources INRIA-Rennes
Equipements :
•CAVE = Sol + mur vertical (10m de long + 3m de haut + 3m profondeur)
• Stéréo active (INFITEC) (sync par 6 émetteurs infrarouges)
• 2 machines quadroplex + 1
• Tracking ART 16 caméras
• 2 API (OpenMASK et ColaVIZ)
•Son spacialisé (OpenAL wrappé dans OpenMASK et ColaVIZ)
• OS windows
•Applis Ogre pas encore portées en salle
•HAPTIC : 2 bras à retour d’effort (dont un phantom)
• Utilisations de SOFA:
•Avec INRIA-Lille sur une appli de neuro-chirurgie
•A INRIA-Rennes contrôle de déplacement de robot sur surface flexible (abdomen)
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 33
Notes de l'éditeur
1) sofaOsg (passerelle entre SOFA et OSG) a) Plugin SOFA pour un rendu OSG dans l’interface graphique Qt (utilisable par l’application standard de SOFA) b) Plugin SOFA pour un rendu externalisé (fenêtrée et dans un boucle séparé de celle du rendu) -> self-threaded2) Bibliothèque Sofapp a) Encapsule l’application principale de SOFA a) Inhibe la création automatique d’un rendu b) Création d’un rendu manuellement (basé sur osgvr et utilisant sofaOsg)3) Application sofavr (utilisant le projet OSGVR) a) Création d’un mode de rendu OSGVR faisant le lien avec sofaOsg permettant l’affichage sur le CADWALL de Sophia b) Travaux d’integration sur le CAVE (ISPACE) en cours car basé sur MPI -> gestion de la communication (le même code sur plusieurs machines)