Projet C IG (1A)

IHM (2A)


VR/AR/Post-WIMP (3A)


Projet image (2A)


HCI (MoSIG 2)


Test Logiciel


Projects Docs

Navigation par geste de la main dans un monde immersif

Equipe

 

Introduction


Une vidéo du système en cours d'utilisation

Dans une recherche perpétuelle d'interfaces utilisateurs toujours plus intuitives et grâce à une multiplication des technologies permettant d'inventer de nouvelles interactions entre l'homme et la machine, notre projet à pour but de réaliser une interface intuitive de navigation dans un univers virtuel en 3D, en s'appuyant sur deux contrôleurs:


Réalisation

Dans cette partie nous aborderons les problèmes que nous avons rencontrés ainsi que les solutions que nous avons mises en place pour y répondre.

Définition d'un langage gestuel pour le déplacement

Nous avons créé un langage gestuel très simple pour le déplacement dans l'univers virtuel. L'utilisateur, grâce à l'Occulus Rift, oriente la caméra dans l'univers virtuel en bougeant la tête. Cette fonction était déjà implémentée et cela semblait déjà la façon la plus naturelle de procéder. Nous avons cependant ajouté une modification. Etant donné que l'on souhaite pouvoir regarder à 360° et que le faire réellement est limité du fait des câbles, nous avons eu l'idée qu'à partir d'un certain angle de rotation de la tête, l'univers virtuel tourne dans la direction du regard par rapport à la caméra. Ainsi l'utilisateur n'a pas besoin de réaliser un tour complet. Du plus, nous avons implémenté le geste de pencher la tête sur le côté pour réaliser un déplacement latéral dans la même direction, afin d'ajouter plus de flexibilité dans les déplacements.

Les Data Gloves quant à eux servent à gérer le déplacement. La caméra se déplace dans la direction du regard de l'utilisateur. Ouvrir la main permet d'avancer, fermer la main permet de reculer. De plus la vitesse est gérée, ce qui veut dire qu'elle est d'autant plus élevée que le geste d'ouverture ou de fermeture de la main est accentué. Une position à mi-chemin entre les extrêmes permet de stopper le mouvement de la caméra.

Technologie DataGloves

Au départ nous pension avoir deux Data Gloves mais il n'y en avait qu'un; cela nous a obligé à utiliser un langage gestuel plus simple (ce qui n'était peut-être pas un mal) et à transférer le déplacement latéral sur l'Occulus Rift. Nous avons remarqué que chaque utilisateur ayant une main différente, les valeurs angulaires enregistrées par les Data Gloves pouvaient varier de façon significative. Nous avons donc implémenté une phase de calibrage. L'application enregistre la valeur d'angle main ouverte puis main fermée. Nous avons rencontré quelques problèmes pour faire fonctionner notre programme sous Windows, notamment avec les entrées/sorties. Pour la phase de calibrage, nous écrivons les valeurs dans des fichiers texte qui sont ensuite lus à l'exécution de l'application.

Technologie Oculus Rift

Nous avons utilisé le Development Kit 2 (DK2) de l'Oculus Rift, et le sample de projet "OculusWorldDemo" comme support.

La première fonctionnalité que nous avons implémentée était la capacité de faire tourner automatiquement la caméra lorsque l'utilisateur tournait assez sa tête à gauche ou à droite. Pour cela, nous avons commencé simplement par freezer la caméra au delà d'un certain angle, afin de repérer les parties du code qu'il nous faudrait modifier par la suite. Il nous a fallut calculer les angles d'Euler relatifs à l'angle de vue de l'Oculus: si un seul de ces angles nous était alors utile, nous savions que les autres nous serviraient dans la suite du projet. Une fois cette objectif atteint, nous avons implémenté la rotation automatique au delà d'un certain angle afin de se passer de l'utilisation de la souris pour tourner le corps dans l'environnement. Dans un dernier temps, nous avons adapté la vitesse de rotation automatique à la vitesse à laquelle la tête de l'utilisateur arrive à l'angle limite afin d'obtenir à la fois un plus grand confort et une meilleure précision lors de petits mouvements.

La principale difficulté de cette étape fut le calcul des angles d'Euler à partir des données fournies par l'Oculus Rift. De nombreux tests (parfois particulièrement éprouvants au niveau du motion sickness) ont été nécessaires afin d'arriver à un résultat concluant.

La deuxième fonctionnalité implémentée fut le mouvement de pas sur le côté lorsque l'utilisateur penchait la tête au delà d'un certain angle. Nous avons pour cela utilisé les angles d'Euler précédemment calculés. Forts de l'expérience acquise lors de l'implémentation de la première fonctionnalité, nous avons rapidement codé cette fonctionnalité.

La troisième étape fut l'intégration de l'utilisation des Data Gloves pour se déplacer dans l'environnement. Cette étape se déroula étonnamment bien grâce à la flexibilité du framework fourni avec les gants. L'étape suivante consistait à faire évoluer la vitesse de déplacement dans l'environnement en fonction des données issues de la position de la main. Ceci nécessita d'avantage d'efforts car la vitesse n'était pas une donnée facile à manipuler.

Enfin nous avons du effectuer une ultime correction après avoir effectué des tests plus poussés: dans la position limite où l'utilisateur regardait vers le haut, les mouvements de rotation automatique et de pas sur le côté se déclenchaient trop facilement. Nous avons donc décidé de bloquer tout déplacement dû à la position de la tête lorsque l'utilisateur regarde trop vers haut ou vers le bas.

Évaluation

Un état des lieux de ce qui a été réalisé (centré technique)

Au niveau technique, notre travail est terminé car tous les gestes voulus ont été implémentés et fonctionnent correctement. Les deux technologies utilisées fonctionnent bien ensemble (les gestes utilisés pour chaque technologie sont complémentaires et non redondant.

Une évaluation de l'interaction créée (centré humain)

Afin d'évaluer l'efficacité de notre technologie, nous en avons mesuré les performances objectives. Pour ce faire, nous avons calculé le temps nécessaire à l'accomplissement d'une tâche simple par un échantillon de personnes (se rendre à un point précis de la scène) avec la nouvelle technologie développée et avec les technologies existantes. Les tests sont donc décomposés en deux parties chacune exécutée avec l'interaction clavier-souris ainsi qu'avec notre interaction:

  • Le test0 demande à l'utilisateur de sortir de le maison présente dans la scène de test pour aller à un point fixé dans la scène (des barils). C'est donc un mouvement composé de peu de virages.
  • Le test1 demande de monter les escaliers de la maison dans la scène pour aller sur le balcon. Il est, lui, composé de plus de virages.

Nous avons également laissé la possibilité aux testeurs de faire des remarques sur l'interaction.

Résultats:

Nom du SujetTest0 clavier-sourisTest0 post-WIMPTest1 clavier-sourisTest1 post-WIMPRemarques
Rémi Lespinet2,7s4s5,06s5sJ'aime bien cette interaction, mais c'est dur de marcher de façon continue (de réguler sa vitesse). Notre application est plus naturelle.
Maxime Chereau2,7s4,03s3,24s4,59s 
Tara Némausat4,09s4,53s7s5,93sJe n'ai pas l'habitude de jouer à des jeux vidéos. Cela m'a aussi donné mal au coeur.
Johann Lohro2,6s3,27s3,93s5,58s 
Pierre Leboucher3,02s3,09s3,08s6,78sC'est naturel. Pas d'envie de vomir à part le moment ou j'ai tourné sur place. Et un peu quand on monte les escaliers. Tourner la tête intuitif et prise en main facile.


À première vu l'interaction clavier-souris semble donc plus rapide cependant les différences sur le test0 peuvent s'expliquer par le fait qu'on peut atteindre une vitesse réelle bien plus grande grâce à la touche 'Shift'. Le test1 est plus équilibré la vitesse maximum n'ayant que peu d'importance dans ce test. Nous avons eu une autre remarque plus générale : là où il était difficile de trouver le clavier avec l'Oculus Rift sur la tête, notre technologie palie à ce problème.

Conclusion

Ce projet nous a permis de découvrir de nouvelles technologies permettant de sortir de l'interaction classique écran-clavier-souris.
L'application de ces technologies à l'interaction avec un monde virtuel semble naturel au vu des tests réalisés.
L'utilisation du dataGlove ne semble pas plus rapide que celle de la souris et du clavier; néanmoins il semble plus adapté à l'Oculus Rift. En effet, les dataGloves ne réduisent pas la mobilité et palie à la difficulté de trouver les bonnes touches du clavier.

Edit - History - Upload - Print - Recent Changes - Search
Page last modified on February 10, 2016, at 11:56 AM