Aide à la manipulation d’objets virtuels dans des scènes 3D (PWIMP 2019-2020) : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Evaluation de la solution proposée)
(Comparaison entre les différents modes proposés)
Ligne 139 : Ligne 139 :
 
=== Comparaison entre les différents modes proposés ===
 
=== Comparaison entre les différents modes proposés ===
 
Afin de pouvoir comparer les quatre interactions, il faut aussi pouvoir rassembler les données pour chaque utilisateur dans un même graphique. Nous avons donc calculé les "durées normalisées" relatives par rapport à l'expérience à la souris, pour chacun des utilisateurs. Par exemple, si une personne prend 60 secondes avec la souris et 30 secondes avec le hérisson en mode objet, on retiendra le ratio de 1/2.
 
Afin de pouvoir comparer les quatre interactions, il faut aussi pouvoir rassembler les données pour chaque utilisateur dans un même graphique. Nous avons donc calculé les "durées normalisées" relatives par rapport à l'expérience à la souris, pour chacun des utilisateurs. Par exemple, si une personne prend 60 secondes avec la souris et 30 secondes avec le hérisson en mode objet, on retiendra le ratio de 1/2.
 +
 +
<gallery mode="slideshow">
 +
File:ComparaisonRelatifCube.png
 +
File:ComparaisonRelatifLapin.png
 +
</gallery>
  
 
== Conclusion ==
 
== Conclusion ==

Version du 30 janvier 2020 à 17:14

Expert.png  Troisième Année 


Présentation de l’équipe

  • Anne Beurard (MMIS)
  • Alexis Bigé (MMIS)
  • Alexandre Frances (MMIS)
  • Chris Janaqi (MMIS)

Nous avons été encadrés par François Bérard.


Contexte et objectifs d'utilisation

Le projet proposé s’inscrit le cadre du perfectionnement des outils de modélisation 3D. Pour le grand public et la plupart des professionnel·le·s de la modélisation 3D, l’interaction avec les logiciels comme Maya, Blender ou encore 3DS Max s’effectue uniquement par le biais d’une interaction Wimp et la manipulation des objets virtuels se fait à la souris. Nous aimerions améliorer le mode de manipulation d’objets dans l’espace 3D ou 2D. Le but de ce projet est de pouvoir in fine manipuler - c’est à dire translater, tourner, redimensionner - l’objet, via la manipulation d’un dispositif physique tangible, que l’on appellera le “Hérisson”. Il s’agirait donc de prototyper un dispositif tangible qui tiendrait dans la main de l’utilisateur·rice. A l’image de la souris d’un ordinateur, cet objet serait le vecteur du mouvement de l’objet sélectionné à l’écran. Il serait donc possible d’observer en temps réel le mouvement de notre objet et de l’examiner sous tous ses angles tout comme on pourrait le faire pour un objet physique.


Motivations

Nous voulons apporter aux artistes 3D une facilité de manipulation des objets présents dans leur scène. L’utilisation d’une souris prive l’utilisateur de beaucoup de degrés de liberté : en un seul geste, il n’est pas possible de mouvoir et tourner l’objet dans les 3 directions. Pour effectuer des mouvements “complexes” type déplacement suivant 3 axes ou rotation suivant l’axe normal à l’écran, il faut effectuer des compositions de gestes basiques à la souris. Par exemple, afin de repositionner un objet sur une scène 3D à la souris, l'utilisateur·rice devra :

  • Sélectionner l'objet concerné,
  • Sélectionner un axe de translation,
  • Effectuer la translation selon un axe,
  • Répéter les deux étapes précédentes pour les deux autres axes de translation,
  • Sélectionner un axe de rotation,
  • Effectuer la rotation selon l'axe choisi,
  • Répéter les deux étapes précédentes pour les deux autres axes de rotation,
  • Désélectionner l'objet.

Par ailleurs, l'utilisateur·rice d'un éditeur 3D a souvent besoin de faire un va et vient entre le contrôle des objets et celui du point de vue. Pour ce faire, avec une interaction uniquement à la souris, il devra sans cesse changer d'un mode point de vue à un mode objet.

Notre outil permettrait ainsi d’accélérer des tâches courantes de type composition de mouvements basiques pour des artistes 3D. Aussi, pour un public non averti, nous pouvons faire l'hypothèse que l’interaction pourrait devenir plus facile à apprendre. En effet, celle-ci est plus proche de celle du monde réel, dans le sens où l'on manipule un objet virtuel par le biais d'une interaction tangible sans passer par les abstractions d'axes de rotations et de translations utilisés à la souris. Notre but final serait d’augmenter l’indice de performance des utilisateur·rice·s par rapport à une interaction classique uniquement à la souris.


Solution proposée

Modèle 3D du Hérisson : objet tangible utilisé dans notre prototype
Modèle 3D du Hérisson avec réflecteurs IR

La solution proposée est centrée autour d'un objet tangible, nommé le "Hérisson", qui remplacera en partie la souris lors de l’interaction avec des logiciels 3D. Les objectifs fixés pour la conception du hérisson sont les suivants :

  • ergonomique et facile à prendre en main pour l’utilisateur·rice,
  • compatible avec un ou plusieurs éditeur 3D tel que Unity par exemple,
  • permettant le contrôle d'objets composants de la scène (objet ou caméra),
  • permettant la modification de la position et de la rotation de l’objet sélectionné dans l’espace 3D,
  • propose différents modes : par exemple avoir un mode translation et un mode rotation activables et désactivables dans le temps,
Prototype du Hérisson en mouvement

Une situation d'utilisation type de notre prototype serait la suivante. L'utilisateur·rice est assis·e devant son poste de travail avec un éditeur de scène 3D ouvert. De sa main dominante, il ou elle modèle à la souris plusieurs objets afin de créer une scène. Lors du placement de ces objets, il ou elle peut décider d'utiliser l'interaction à la souris ou au hérisson. Une fois l'objet sélectionné, dans le cas où l'on utilise le hérisson, le placement (en translation et rotation) s'effectue en déplaçant le hérisson dans l'espace autour de soi, en observant les transformations s'opérer sur l'objet sélectionné à l'écran. Avant et après les déplacements, l'utilisateur·rice signifie au système qu'il faut prendre en compte les actions effectuées au hérisson. Cela peut se faire par exemple par la main non dominante, par l'appuie sur une touche définie du clavier, ou encore au pied à l'aide d'une pédale.

Dans un deuxième cas de figure, l'interaction prototypée pourrait permettre de garder la main dominante sur la souris afin de modifier les objets de la scène, et de réserver le hérisson pour modifier le point de vue de la fenêtre d'édition. En effet, cela permettrait de tirer partie des deux mains dans la mesure où la main non dominante serait utilisée en soutien pour fluidifier l'interaction globale et éviter les changements de mode intempestifs entre changement de point de vue et modelage d'un objet. Avec le hérisson qui gère le point de vue de la fenêtre d'édition, la souris peut être utilisée uniquement pour déplacer l'objet.

Ainsi, nous pouvons résumer la solution proposée à trois utilisations:

  • contrôle d'un objet 3D,
  • contrôle de la caméra de la scène,
  • contrôle simultané de la caméra et de l'objet.



Réalisation du prototype

Prototype de Hérisson

Le hérisson

Nous avons fabriqué deux modèles différents du hérisson, dont l'un possède des réflecteurs Infra-rouge collés sur la surface, et l'autre possède des légères protubérances intégrées. Les caractéristiques du premier sont :

  • Taille : 6x6 cm
  • Infra-rouge : 8 réflecteurs adhésifs semi-sphériques de 2 mm de diamètre,
  • Matière : plastique (imprimé avec imprimante 3D).

Le second est légèrement plus petit. Cela nous permet de l’interaction dans différentes configurations :

  • Taille : 5x5 cm
  • Infra-rouge : 8 carrés de ruban adhésif réfléchissant,
  • Matière : plastique (imprimé avec imprimante 3D).

Le système de capture

Nous utilisons la technologie de motion capture passive OptiTrack. Il s'agit de "tracker" ou suivre les marqueurs réfléchissants se trouvant à la surface du hérisson afin d'envoyer ses informations de translation et de rotation au moteur de rendu (ici Unity). Les marqueurs sont vus par 4 à 6 caméras infra-rouge orientées vers la zone de travail, leur position dans l'espace est calculée par triangulation. Pour le hérisson, le principe est de créer un "rigid body" à partir des 8 marqueurs. Avec cette technique seuls 8 points représentent l'intégralité de l'objet hérisson. La calibration des caméras et la création du rigid body se font à l'aide du logiciel Motive. La marche à suivre afin d'utiliser ce logiciel est décrite ici.

L'installation est détaillée dans le schéma suivant :

Schéma du système de capture

Le rendu 3D et l'implémentation C#

Nous utilisons le moteur de rendu Unity 3D pour implémenter l’interaction de l'utilisateur·rice avec une scène 3D. Nous avons mis en oeuvre la procédure décrite ici et fournie par l'enseignant. Nous avons implémenté en C# un module qui permet de:

  • recevoir dans Unity les données de position et de rotation du rigid body en réseau,
  • lier ces données à un objet de la scène 3D en effectuant les transformations géométriques nécessaires,
  • créer des scénarios de tests,
  • récupérer les résultats de ces tests.

Nous avons souhaité obtenir une interaction qui se rapproche le plus d'une interaction avec le monde réel pour le contrôle de l'objet. Par exemple, en éloignant le hérisson de l'utilisateur·rice, le retour souhaité à l'écran doit être de la même nature : l'objet contrôlé doit s'enfoncer dans la scène 3D. Obtenir ce comportement, quelque soit la rotation de l'objet, n'a pas été triviale et nécessitait des transformations géométriques sur les quaternions reçues depuis Motive.

Les difficultés rencontrées

La tâche d'acquisition de cible dans un espace en 3 dimensions requiert généralement de changer le point de vue de la caméra afin de pouvoir positionner précisément l'objet manipulé. Lorsque nous avons commencé à tester notre prototype, un des obstacles les plus handicapants a été que le changement du point de vue d'une caméra sous Unity se fait à la souris en gardant la touche "alt" du clavier appuyée. Ainsi, le simple changement de point de vue se fait à deux mains. Or, dans le cas d'utilisation premier auquel nous avions pensé, l'utilisateur·rice tient dans la main gauche le hérisson et dans la main droite contrôle la caméra à la souris. Afin de pallier ce problème nous avons ajouté à notre prototype une pédale permettant de remplacer l'appuie "alt" du clavier par un appuie au pied, libérant ainsi pleinement la main gauche pour le contrôle du hérisson.

Un deuxième problème que nous a permis de régler la mise en place d'une pédale est la possibilité pour l'utilisateur·rice de se replacer dans une position plus confortable durant un déplacement d'amplitude conséquente. En effet, un appuie sur la pédale de droite permet de figer la position de notre objet durant 1 seconde.

Nous avons également introduit la possibilité de recentrer la caméra et l'objet à une position prédéfinie par appuie sur 2 pédales simultanément. Cela peut être très utile si l'utilisateur·rice se perd momentanément dans la scène. Ainsi, l'ajout de pédales à notre prototype nous a permis de rendre l'interaction plus confortable et d'éviter 3 problèmes différents.


Evaluation de la solution proposée

Durant l'évaluation de notre projet, nous avons proposé à des personnes de tester notre prototype dans différentes conditions. Cela nous permet de mesurer les éventuels gains de notre interaction par rapport à une interaction à la souris. Nous avons défini quatre phases de tests durant lesquelles on demande à l'utilisateur de placer un objet 3D dans une cible de même forme est légèrement plus grosse que l'objet. Nous réalisons des tests pour les cas suivants d'interaction :

  1. Interaction uniquement à la souris pour le déplacement de l'objet et de la caméra selon les standards Unity
  2. Interaction à la souris pour les déplacements de l'objet et au hérisson pour le contrôle de la caméra
  3. Interaction au hérisson pour les déplacements de l'objet et à la souris pour le contrôle de la caméra
  4. Interaction avec deux hérissons, l'un pour les déplacements de l'objet et le deuxième pour le contrôle de la caméra

Expériences réalisées

Pour chaque interaction, l'utilisateur effectue 10 placements : 5 acquisitions de cible avec un objet symétrique (un cube) et 5 acquisitions de cible avec un objet asymétrique (un lapin).

Pour chaque acquisition, nous retenons l'identité du testeur et nous faisons varier différents paramètres :

  • la distance initiale objet/cible
  • la différence initiale de rotation objet/cible
  • le temps d'acquisition
  • l'objet utilisé: un simple cube ou un solide plus complexe (lapin)

Pour chacun des utilisateurs, nous avons rassemblé les résultats pour les quatre interactions dans un même graphique, en représentant pour chacune la moyenne et la variance des "durées normalisées". Cette dernière a été calculée à partir de la durée de l'expérience, à laquelle nous avons divisé:

  • la distance entre l'objet et sa cible en mètres,
  • la norme des angles en radians (angles de la rotation nécessaire pour le placement dans la cible).

Cela nous permet d'obtenir des valeurs d'expériences qui sont comparables entre elles, en seconde par mètres par radians.

Comparaison entre les différents modes proposés

Afin de pouvoir comparer les quatre interactions, il faut aussi pouvoir rassembler les données pour chaque utilisateur dans un même graphique. Nous avons donc calculé les "durées normalisées" relatives par rapport à l'expérience à la souris, pour chacun des utilisateurs. Par exemple, si une personne prend 60 secondes avec la souris et 30 secondes avec le hérisson en mode objet, on retiendra le ratio de 1/2.

Conclusion

TODO CONCLURE !

Nous pouvons remarquer que l'utilisation de l'optitrack n'est pas adapté dans le cadre de la commercialisation du hérisson. Notre prototype vise uniquement à faire une "proof of concept" de l'interaction imaginée. L'utilisation d'une IMU (Inertial Measurement Unit) placée à l'intérieur du hérisson pourrait permettre de rendre le dispositif compact, portable, sans contraintes filaires et facilement commercialisable.