[English bellow]
[FRENCH]
Le travail consistait à créer une extension du projet SOFA (Simulation Open Framework Architecture) nommé SOFAVR portant l’application de simulation physique 3D sur des équipements de Réalité Virtuelle.
Une première partie est d’adapter le rendu 3D séquentiel (mono thread) de SOFA (OpenGL) à un rendu 3D orienté graphe de scène (OpenSceneGraph, multi-thread).
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 (Rennes).
Voici la dernière présentation des résultats.
[ENGLISH]
The job was to create an extension of the SOFA project (Simulation Open Framework Architecture) nammed SOFAVR, transfering the 3D physical simulation application on Virtual Reality equipments (immersive space, cave...).
The first part was to adapt the SOFA sequential (mono thread) 3D rendering (OpenGL) to render 3D scene graph oriented (OpenSceneGraph in multithread mode).
The second part was to adapt the architecture of SOFA to Virtual Reality equipments, initially in the immersive room of Sophia Antipolis, then in a second time in the other centers (Rennes).
This is the last presentation of results.
1. SOFAVR
Simulation Open Framework Architecture
for Virtual Reality
SERVICE : DREAM
EQUIPE PROJET : SOFA
Sophia-Antipolis 01 Octobre 2012
2. SOMMAIRE
1. Contextes – Objectifs - Contraintes
2. SOFAVR et les projets connexes
3. Bilan- perspectives
jerome.esnault@inria.fr - SOFAVR 01 Octobre 2012 - 2
3. 1
Contextes – Objectifs - Contraintes
1.1 Simulation Open Framework Architecture
1.2 Objectifs et résultats attendus
1.3 Méthode de travail
4. 1.1 Simulation Open Framework Architecture
Composants (400) :
• Visuels
• Topologique
• Mapping
• Calcul ODE / linéaire
• Champs de forces
• Modèles de collisions
• Contraintes
…
Graphe de Simulation :
Description XML
Application SOFA
Interface graphique Qt +
rendu OpenGL
jerome.esnault@inria.fr - SOFAVR 01 Octobre 2012 - 4
5. 1.1 Simulation Open Framework Architecture
jerome.esnault@inria.fr - SOFAVR 01 Octobre 2012 - 5
6. 1.2 Objectifs et résultats attendus
Porter SOFA sur des équipements de Réalité Virtuelle :
• Conserver les scènes et l’interface utilisateur de SOFA
• S’adapter aux différents dispositifs d’affichage
• Désynchronisation de la simulation et du rendu
• Avoir des Interactions Homme-Machine favorisant l’immersion
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 01 Octobre 2012 - 6
7. 1.3 Méthode de travail
Nouvelles taches Retour d’expériences
But du sprint: ...
Durée/date du sprint: …
INDICATEURS
Taches
jerome.esnault@inria.fr - SOFAVR 01 Octobre 2012 - 7
IMPORTANCE
TO DO RESERVED DONE
Non planifiés :
…
Suivant :
…
pts
tps
SCRUM
Taches
Taches
Taches
Taches
8. 2
SOFAVR et les projets connexes
2.1 Dépendances, contraintes et structure du projet
2.2 Fonctionnement du projet
2.3 Implications dans les autres projets
9. 2.1 Dépendances contraintes et structure du projet
Dépendances des projets :
MPI Autres VRPN Autres OpenGL Qt Autres
OpenSceneGraph (SVN-CMake)
isiVR (GIT-CMake) SOFA-DEV (SVN-QMake)
SOFAVR (GIT-CMake) cmakeTools VCoRE (GIT-CMake)
cmakeTools
cmakeTools
CMakeTools (GIT-CMake)
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 9
11. 2.1 Dépendances contraintes et structure du projet
Arborescence du projet (Cmake) :
Sources
Bibliothèques Plugins Applications
sofavr
sofaOsg
SOFA
QtOsgViewer
StandaloneOsgViewer
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 11
helper
helperOsg
helperSofa
sofaApp
isiSofa
isiVR
SofaWand
useSofaApp
sofavr
12. 2.2 Fonctionnement du projet
1er Plugin de rendu OpenSceneGraph :
• Orienté Graphe de Scène
• Synchrone avec la simulation
• Embarqué dans l’interface graphique utilisateur
OSG Root
OSG utils (camera/background…)
OSG Sofa visual
OSG Sofa debug draw
OSG Sofa visual draw
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 12
13. 2.2 Fonctionnement du projet
2nd Plugin de rendu OpenSceneGraph :
• Orienté Graphe de Scène
• Visualisation désynchronisé de la simulation (multi-thread)
• Détachée de l’interface graphique utilisateur
Main thread (simu+GUI SOFA)
Can write data?
SOFA
DATAS
Can read data?
OSG viewer threads
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 13
14. 2.2 Fonctionnement du projet
Application sofavr :
• Orienté Graphe de Scène
• Visualisation désynchronisé de la simulation (multi-thread)
• Détachée de l’interface graphique utilisateur
• Utilise isiVR pour la portabilité vers les équipements de RV
• Une seule application pour différents usages/équipements
Le mode Single (mono machine) :
Machine Node 0
Send GUI events
Rescale visualisation
Send viewer events
Rescale 3D interaction
Main thread (simu+GUI SOFA)
Can write data?
SOFA
DATAS
Can read data?
isiVR viewer threads
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 14
15. 2.2 Fonctionnement du projet
Le mode cluster (multi machines) :
LAUNCH
Machine Node 0
mpirun
SOFA threads
isiVR threads
Machine Node 1
SOFA threads
isiVR threads
•
•
•
Events and
synchro
synchro
Machine Node 4
SOFA threads
isiVR threads
Tracking system
Périphérique
trackés
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 15
16. 2.3 Implication dans les autres projets
• Création et contribution au projet CMakeTools
• Ajouts de targets spécifiques
• Ajouts de modules / macros / fonctions
• Collaboration au projet SOFA (refactorisation GUI et Viewer)
• Déploiement de SOFAVR dans l’équipe SOFA
• Passage progressif à CMake
• Collaboration au projet isiVR (fonctionnalité, maintenance)
• Accompagnement/support pour isiVR et la salle immersive
• Participation aux coding-sprint (déploiement de CMakeTools)
• Collaboration au projet VCoRE (SOFAVR comme base de travail)
• Participation aux réunions et formations sur les outils et codes
existant
• Participation aux coding-sprint (déploiement de CMakeTools)
• Gestion CMake/GIT des différents dépôts des projets et documentation
continue de l’ensemble
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 16
18. Analyse métier &
fonctionnelle
Conception générale
et préliminaire
1. Compatibilité entre SOFA et OpenSceneGraph
2. Désynchronisation et multi-fenêtrage
3. 1ère version de sofavr
4. Mise en place d’une méthode agile basé sur SCRUM
5. Création du projet CMakeTools et déploiement / utilisation sur les projets
6. Amélioration du multi-thread et de la synchro
7. Ajouts des interactions 3D de SOFA et gestion de la préservation des scènes (mise à l’échelle)
8. Documentation (WIKI – code)
Codage
Tests &
assemblages
Intégration et
validation
Conception
Cycles itératifs
Septembre
2012
3.1 Jalonnage - bilan
Décembre
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 18
2010
19. 3.2 Ouvertures
• Amélioration du system d’interaction 3D (ergonomie, affichage,
périphériques…)
• Gestion du son spécialisé
• Interactions 3D multiple
• Abstraction complète de graphe de scène
• Ajouter d’autres composants visuels SOFA (lumières, shaders…)
• Gestion de la configuration de sofavr/isiVR dans un composant
• Gestion des systèmes haptiques…
• Stabilisation/amélioration de CMakeTools (Ctest, Cpack, Cdash)…
• Amélioration de la conception coté SOFA pour proposer plus d’interfaces
aux autres projets (pour utiliser SOFA plus facilement)…
• Développement du mode composite et simulation d’isiVR…
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 19
20. 3.3 Retour d’expérience
++ Variété des missions
++ Variété des domaines d’activités à explorer
++ Possibilité de monter en compétence
++ Environnement de développement
++ Collaboration inter-centre, inter-plateforme, franco-anglaise/franco-allemande
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 20
21. 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/
Merci de votre attention
Des questions ?
22. Couches – SOFA<->SOFAVR
Entrées
périphériques
Logique
Contrôleur d’objets
Comportement des
Propriétés
physiques des
objets
Monde Physique
objets
Mise à jour position / déformation /
Rendu visuel Monde Audio
Rendu de l’objet à min 25
images / s
Moteur de simulation
Sources sonores
des objets
son de collisions
OpenSceneGraph
SceneManagement
Graphe de scène
RessourceManagement
Materiaux Textures
Animations
Outils
Math String Logging
Viewer
Réalité virtuelle
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 22
23. Couches – SOFA<->SOFAVR
Application User
Sound GUI Datas Input
Framework -
services
SceneGraph
Standard
C++
libraries
GL
OpenAL…
GPGPU
C / C++ /
scripts
VRPN
Sound
card
Graphic
card
CPU
Hardware
I/O clavier
souris
joystick -
ART…
Modeler
Sofa - GUI
Sofa - Ressources
Sofa - Components
Sofa - Viewer
Sofa – Helper (tools)
Sofa - Core
Computer
Cluster
Immersive room
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 23
24. 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-
Repo forge
SOFAVR
User 1
NF 1
User 2
NF 2
User 3
NF 3
User 4
NF 4
HUDSON-chat
SOFA
User
1
User
2
User
3
User
4
CMake Coordination QMake
GIT Collaboration SVN
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 24
25. Méthode Agile - codage
Rapports de tests
Développements jalon n Développements jalon
n+1
Ligne du temps
Réflexions jalon n+1 & corrections
BUG version n - i
Version 1.0.0
fonctionnelle
Version 1.0.1
fonctionnelle
BUG
Utilisateurs finaux
Version 1.0.1 fonctionnelle
Mesure satisfaction
clients
Avec i le nombre d’itérations précédentes
jerome.esnault@inria.fr - SOFAVR 19 Septembre 2011 - 25