cours 4 / Virtual, Augmented and Mixted Reality

Transcription

cours 4 / Virtual, Augmented and Mixted Reality
Interface Homme-Machine
Cours 5
4
Réalité virtuelle, réalité augmentée
Philippe Gaussier
Alexandre Pitti
Plan du cours
1 Introduction

à l'IHM, historique et ergonomie
psychologie, handicap et théorie, méthodes de conception
et d’évaluation
2 Éléments d'une IHM

Interfaces et Infrastructures, prototypage
3 Extraction et Traitement de l'information

GUI Visualisation de l'information, Méthodes statistiques
4 & 5 Techniques d'interactions avancées

Réalité Augmentée, Interface Tangible, projection 3D,

Analyse du mouvement
Réalité virtuelle

immersion sensori-motrice de l’utilisateur dans le
système
●
●
« ...l’interaction temps réel multi-modale qui implique
l’utilisateur à travers tous ses sens, et permet son
immersion complète » (Burdéa)
« ...une application qui donne l’illusion de participer à
l’activité d’un environnement virtuel plutôt que d’en être
le simple observateur extérieur » (Gigante)
Réalité virtuelle

Exemple : les jeux vidéos
Plan de la situation
Environnement
réel
Réalité augmentée
Environnement
virtuel
Réalité virtuelle
Définition de la virtualité augmentée : « systèmes dont l’objet de la tâche réside dans le monde
informatique. Les systèmes considérés visent à rendre l’interaction plus “réaliste”.(...)
L’interaction repose sur la manipulation d’objets du monde réel, comme des cubes, pour
modifier des objets informatiques tels que des fichiers » (Dubois, et al., 2000).
ex. the eye of judgment
n
o
i
t
c
a
r
e
t
n
I
Ca
m
In
te
er
a
q
r
a
M
r
u
ue
g
a
/T
n
a
r
c
É
ra
c
t io
n
Réalité Augmentée


Réalité Augmentée [Feiner, Azuma, Mackay]
Système qui permet de superposer l'image d'un
modèle virtuel 3D ou 2D sur une image de la réalité et
ceci en temps réel.
1. Combine the virtual and the real
2. are interactive in real time
3. registered in 3D

Accroître l'utilité d'une image réelle
Essai de définition
Caudell & Mizell, 1992
– Lie le réel et le virtuel,
– Est interactive et en temps réel,
– Facilite l’interface homme‐machine.
Le but final est de supprimer les interfaces de
manipulation informatiques comme la souris ou le clavier
Réalité Augmentée


Réalité Augmentée [Feiner, Azuma, Mackay]
Système qui permet de superposer l'image d'un
modèle virtuel 3D ou 2D sur une image de la réalité et
ceci en temps réel.
1. Combine the virtual and the real
2. are interactive in real time
3. registered in 3D

Accroître l'utilité d'une image réelle
Réalité Augmentée

Wendy Mackay distingue trois façons
d'aborder la réalité augmentée :
●
●
●
Augmenter l'utilisateur
Augmenter l'objet
Augmenter l'environnement
Augmenter l'utilisateur
[Ultraseven]
Augmenter l'environnement
[Total Immersion]
Augmenter l'objet – un livre
[Livre Augmenté]
Les différentes formes d'applications actuelles


La publicité
- Forme la plus attractive en terme de capitaux.
- Beaucoup d’entreprises travaillent sur ce thème.
- Evolutivité énorme du secteur publicitaire grâce à la RA
http://www.youtube.com/watch?v=htFFChtfSsg
Le jeu
- Marché du jeu en pleine expansion
- Acheteurs friands d’ergonomie développée (Wii) et de
nouvelles technologies futuristes
Publicité IKEA – Réalité Augmentée
[Ikea]
Apprentissage – RA
COMMENT CRÉER DE LA RÉALITÉ AUGMENTÉE?
• ARToolkit
-Propose le plugin Virtools de Dassault (logiciel leader en entreprise)
• Papervision 3D
-librairie flash donc populaire et partageable facilement sur le web
• LinceoVR 3.0 (publié par Rhinoceros)
Logiciel avec interface graphique
Utilisation facilité
produit exclusivement windows
prix élevé (995€ + 300€ ou 195€ + 50€ pour les étudiants)
COMMENT CRÉER DE LA RÉALITÉ AUGMENTÉE?
Google Sketchup, pluggin
Les problèmes de la réalité augmentée



Lien imparfait : lorsque le lien ne permet pas de synchroniser
les deux réalisations pour certaines opérations.
Modification de la nature du lien : lorsqu'une des entités qui
forment le lien est remplacée par une autre.
Lien brisé : lorsque le lien n'existe plus. Ceci peut être dû à
une panne ou à des limitations du dispositif d'augmentation.
●
tout système augmenté doit aussi pouvoir être utilisé comme un
système non augmenté.
Virtualité augmentée



Virtualité augmentée [Rose, Milgram]
Incruster des images réelles dans des images
virtuelles
Améliorer la qualité d'une image de synthèse
par l'incrustation d'éléments de la réalité
V.A. et R.A.
Virtualité Augmentée
Entités
Physiques
Interaction
Utilisateur
Réalité Augmentée
Entités
Physiques
Augmentation
Entités
Numériques
Entités
Numériques
Utilisateur
La réalité mixte

Exemple connu avec l’application métroparis
●
●
Pas d’analyse d’image, seulement de position
(GPS) et d’orientation (boussole).
Des données virtuelles (les emplacements de
station) sont appliquées sur un flux réel (film de la
scène)
http://www.youtube.com/watchv=MxU88ywRgP4
La réalité mixte n'interagit pas avec le flux d’informations visible par
l’utilisateur, même si la position GPS pourrait faire figure de données réelles,
ces informations ne tiennent pas compte de l’environnement direct. Lors des
derniers mètres, cette différence peut s’avérer embêtante pour l’utilisateur
qui pourrait tourner autour de la bouche de métro sans la voir (en imaginant
qu’il ne voit réellement pas l’entrée)
La réalité mixte
[metroparis]
Google Glasses
Système mixte ?


Pas de consensus quant à une définition
Groupement de plusieurs termes utilisés dans
la littérature
●
●
●
●
●
●
●
Réalité Augmentée [Feiner, Azuma, Mackay]
Virtualité augmentée [Rose, Milgram]
Tangible User Interface / Ambient interface [Ishii]
Réalité mixte [Milgram]
Environnements augmentés [Xerox Euro Parc]
Vidéo augmentée
Etc.
Objectifs des systèmes mixtes



Exploiter les capacités de traitements / stockage /
transformations / etc. des "systèmes informatiques"
(complète les capacités de l'utilisateur)
S'appuyer sur la manipulation d'objets du monde
physique
(facilite l'interaction de l'utilisateur avec le système)
Laisser l'utilisateur au contact de son environnement
physique habituel
(rend l'ordinateur accessible partout)
Rôle des systèmes mixtes

Ajouter …
●
●

de l'information : enrichir la perception de
l'utilisateur
des services : faciliter l'exécution de tâches
Lors d'une interaction entre l'Utilisateur et …
●
●
Monde physique : Réalité augmentée
Monde numérique : Virtualité Augmentée
Constat

Tendance à la démocratisation des systèmes
mixtes
●

Utilisation dans de nombreux domaines
Nécessité de mettre en œuvre un processus de
développement
●
Conception
–
–
●
Taxonomie
Méthode / éléments de conception
Techniques de développement
Taxonomies en Réalité Virtuelle


M.K.D. Coomans
Philippe Fuchs
Développement d’interfaces 3D
Technologies

Localisation
●
Caméra :
–
–
●
●
●
●
●
●

Tag based
Segmentation, suivi,
(différence d'image, gradient, etc.)
Infra-rouge : polaris
Ultra-son : FreeD mouse
Détection magnétique : FOB
Ondes radio : RF-ID
Mécaniques (bras, robots)
…
Rendu
●
●
PDA, casque, projecteurs, HP
Graphique, texte, son, etc.
Geolocalisation
Reconnaissance de tag
Reconnaissance de tag : QR code
Reconnaissance de tag : QR code
a. Row scanning
b. Column scanning
c. Adjusting to center position
Transformation affine
Chen
Reconnaissance de tag
Reconnaissance de tag
Problème de projection
Problème de projection
Problème de projection
Affichage

Affichage via un dispositif semi-transparent

Affichage par projection
– c.f. Parnav Mistry et son projet 6thsense

Affichage sur le flux vidéo
– ARToolkit
Interaction

Dispositifs « portables »

Gestes
– Mains « nues »
– Mains « équipées »
– Déplacements d’objets reconnus

Objets communicants
Toolkits existantes

Context-toolkit : support au développement des
parties logicielles gérant la capture de données
du contexte

Bus Ivy : middleware

AR-toolkit : fonctionnalités liées à la localisation
ARToolKit
HIT Lab, University of Washington, USA
Mark Billinghurst, [email protected]
l'AR-Toolkit

Objectif
●

Superposer des informations numériques à un
flux vidéo du monde physique
Moyen
●
●
●
●
Librairie écrite en C (version Java existante)
Gratuit, open-source
Réservé à un usage non commercial
Exécutable de calibration de la caméra
L'AR-Toolkit 1
L'AR-Toolkit 2
L'AR-Toolkit 3
Fonctionnement (1)
1. Acquisition :
 acquisition numérique d'un flux vidéo et seuillage
2. Détection :
 Recherche dans cette image de régions carrées.
Pour chaque carré, identification du "pattern" situé à
l'intérieur et mise en relation avec un des "patterns"
prédéfinis
3. Localisation spatiale :
 Calcul de la position de la caméra réelle dans le
repère associé au pattern (matrice 3x4 de passage
de la caméra au pattern).
4. Traitement :
 Affichage du rendu graphique ou textuel, facilement
"alignable" sur le monde réel.
Fonctionnement (2)
AR toolkit "patterns"

Exemples de "pattern" détectables par l'AR
toolkit.
Principe de mise en oeuvre

6 étapes
1. Initialisation de l'application
2. Capture d'une image vidéo
3. Identification des marqueurs
(situés dans les patterns)
4. Calcul de la matrice de passage pattern caméra
5. Affichage du rendu
6. Fermeture du canal d'acquisition vidéo
Code C / C++
Code Java
Utilisation de l'AR-toolkit en C (1)

Init()
●
●
Ouvre le canal vidéo et initialise les paramètres
par défaut de l'AR toolkit
(fichier de calibrage de la caméra, fichiers de
description des patterns)
Détermine la taille de la fenêtre d'affichage.
Utilisation de l'AR-toolkit en C (2)

À utiliser dans la "mainLoop"
●
arVideoGetImage() : capture une frame du flux vidéo
●
argDispImage() : affiche la frame vidéo capturée
●
●
●
arDetectMarker() : construit un tableau (en C) d'identifiant des
marqueurs détectés
arGetTransMat() : calcule la matrice de passage entre le repère
du pattern et la caméra (réelle)
draw() : affiche le rendu graphique, textuel, etc.
1. Code pour initialisation
main( )
{
// INITIALISATION
if (arVideoOpen(“”) < 0 ) exit(0);
//open the video path
if (arVideoInqSize(&xsize, &ysize) <0) exit(0); // find the size of window
if (arParamLoad(cparaname, 1, &wparam) < 0) // set the initial camera param
{ exit(0); }
// DEMARRAGE
arParamChangeSize(&wparam, xsize, ysize, &cparam);
arInitCparam ( &cparam);
arParamDisp( &cparam );
argInit( &cparam, 1.0, 0, 0, 0, 0 );
// ouvre la fenetre graphique
arVideoCapStart( );
//start video image capture
bool m_localiserStarted = true;
… // cf. next slide
2. Detecter les marqueurs
… // "MAIN LOOP"
while (m_localiserStarted)
{
// CAPTURE D'UNE FRAME
arVideoCapNext();
if ( (dataPtr = (ARUint8 *) arVideoGetImage( )) == NULL) { arUtilSleep(2);return; }
// DETECTION DES PATTERNS PRESENTS
if( arDetectMarker(dataPtr, thresh, &marker_info, &marker_num) < 0 ) { cleanup(); exit(0); }
// IDENTIFICATION DES PATTERNS PRE-CHARGE VISIBLE
for( i = 0; i < objectnum; i++ )
// objectnum = nombre de pattern préchargés
{
k = -1;
for( j = 0; j < marker_num; j++ )
{
// object[ ] = tableau de descripteurs des
if ( object[i].id == marker_info[j].id )
// pattern pré-chargés
{
if( k == -1 ) k = j;
else { if ( marker_info[k].cf < marker_info[j].cf ) k = j; } }
}
if( k == -1 ) { object[i].visible = 0; continue; }
// CALCUL DE LA MATRICE DE PASSAGE
if ( arGetTransMat(&marker_info[k], object[i].marker_coord, object[i].trans) < 0 )
{ object[i].visible = 0; }
else { object[i].visible = 1; }
}
…
3. Dessiner sur un marqueur
…
// AFFICHAGE DE LA VIDEO
argDrawMode2D();
argDispImage( dataPtr, 0, 0);
// CALCUL ET AFFICHAGE DU GRAPHIQUE POUR CHAQUE PATTERN DETECTE
for( i = 0; i < objectnum; i++ )
{
if( object[i].visible == 0 ) continue;
argConvGlpara(trans, gl_para);
argDrawMode3D();
argDraw3dCamera(0, 0);
glMatrixMode(GL_MODELVIEW);
glScalef(1,-1,1);
glMultMatrix(gl_para);
// INSTRUCTIONS DE DESSIN
…
}
// AFFICHAGE DU BACK BUFFER
argSwapBuffers( );
…
4. Terminer la boucle d'événements
…
while (PeekMessage( &WmMsg, NULL, 0, 0,PM_REMOVE))
{
int t;
if ( (WmMsg.message == 257) && (WmMsg.wParam == 89) )
{
t = increaseThresh(); TRACE("THRESH++ = %d\n",t);
}
/* else … */
DispatchMessage(&WmMsg);
}
}
Utilisation de l'AR-toolkit en Java (1)

Différentes versions
●
GL4Java
–
●
JOGL
–
●
En baisse
A voir (sensiblement similaire à la suivante)
Java 3D
–
Illustrée ici
Utilisation de l'AR-toolkit en Java (2)

Déclaration
private JARToolKit3D m_JARToolKit3D = null;

Initialisation (dans le constructeur par exemple)
●
Création de l'instance unique (frameGrabber)
m_JARToolKit3D = JARToolKit3D.create();
●
Initialisation des paramètres de calibrage de la caméra
m_JARToolKit3D.initialize(
JARToolKit3D.getAbsolutePath("data/camera_para.dat"));
(remplace les / par \\ …)
●
Insertion dans le graphe de scène
locale.addBranchGraph(
m_JARToolKit3D.createViewingBranch(canvas));
Utilisation de l'AR-toolkit en Java (3)

Initialisation (suite …)
●
●
●
●
●
Création du BackGround Java3D (et ajout)
contentsTransGr.addChild(m_JARToolKit3D.createBackground(
));
Création du behavior gérant la détection des patterns de la
jARToolkit (et ajout)
m_arBehavior=JARToolKit3D.createRecognition();
contentsTransGr.addChild(m_arBehavior);
Création d'un TransformGroup par pattern à localiser
objTrans = m_JARToolKit3D.createPatternTransform(
JARToolKit3D.getAbsolutePath("data/pattern/hiroPatt"), true);
Association de ce transformGroup au behavior de tracking
(patternDriven-TransformGroup)
m_arBehavior.registerObject(objTrans);
Ajout des objets Java3D attachés au patternDriven-TransformGroup
Configuration de la machine

Classpath
●

Dll ARToolkit (JNI)
●

Copiées dans le répertoire d'exécution
Path
●

Contient le java3D-Utils-src.jar
Ajouter le jARToolkit\bin
NOTE : c'est du java pour PC …
Extensions de l'AR toolkit

Version Java
●

http://www.c-lab.de/jartoolkit/
Version Pocket-PC
●
http://www.ims.tuwien.ac.at/research/handheld_ar/
developer/artoolkit.php
Sur Android

Magic Lens
– Bier, Stone, Pier, Buxton, DeRose. Toolglass and Magic
Lenses: The See-Through Interface. In Conference
Proceedings of Siggraph’93, Anaheim, Computer
Graphics Annual Conference Series, ACM (1993) 73- 80


Géolocalisation
– Limitée par la précision du GPS
Tag
– Limitée par la robustesse de reconnaissance
Geolocalisation: Layar (Android)

Développement de « couche »
• Ex: Layar : http://www.layar.com/
– Application dédiée et unique
– compte développeur
– nouveau calque sur le site Layar
– Web Service (et BD) pour les POIs (techno JSON)
– Publication du calque
Geoloc.: Wikitude (Android)

http://www.wikitude.org/developers

l’API Wikitude
Reconnaissance de Tags

Différentes implémentation de l’ARToolkit
– NyaARToolkit
http://nyatla.jp/nyartoolkit/wiki/index.php?FrontPage.en
– AndAR : http://code.google.com/p/andar/
• Difficulté de l’OpenGL sous android
– Possible de retrouver des implémentations de GLUT..
http://code.google.com/p/andar/source/browse/trunk/AndARPong/src/edu/dhbw/andar/pingpong/GLUT.java
Exemple avec Andar

Personnalisation de AndARSampleProject

http://code.google.com/p/andar/downloads/detail?name=AndARSampleProject.zip



– Reconnaissance de tags et affichage d’un cube vert
OpenGL « masqué »
– Changement de repère
Objet reconnu « indépendant »
Ajout d’une interaction simple :
– Quand le tag
est proche de
cube associé à
change de couleur.
, le
FIN

Documents pareils

L`émergence de la Réalité Augmentée

L`émergence de la Réalité Augmentée papier  s'est révélé être un mythe , ce qui n'empêche pas aux hommes d'être débordés d'informations électroniques. De plus, les hommes sont  très mal équipés pour faire la liaison entre ces deux...

Plus en détail