Sculpture 3D en réalité virtuelle (Post-WIMP 16/17)

De Ensiwiki
Aller à : navigation, rechercher

Introduction

Équipe

Motivation

Les mondes virtuels sont de plus en plus intégrés à notre quotidien : dans les films d’animation et jeux vidéos depuis plusieurs années déjà, mais aussi via la réalité virtuelle et la réalité augmentée plus récemment. Ces mondes sont peuplés d’objets virtuels tridimensionnels. Actuellement ces objets sont soit scannés à partir d’objets existants, soit créés par des artistes utilisant une interface 2D (le plus souvent une tablette graphique). Notre projet est la création d’une interface 3D adaptée à la sculpture d’objets 3D par des artistes.

Solution proposée

SolutionSculpture.png

Nous avons voulu tester une interface 3D pour la création d’objets virtuels 3D. Nous utilisons la métaphore de la sculpture : l’utilisateur manipule une boule d’argile virtuelle, la déformant progressivement pour lui donner la forme souhaitée. Notre système est adapté aux sculptures organiques et ne s’adresse pas aux créateurs de modèles mécaniques, nécessitant une grande régularité des surfaces et des angles très précis.

Nous avons souhaité que tous les éléments de l’interface soient en 3D. L’utilisateur visualise son travail en 3D à travers un casque de réalité virtuelle (Oculus Rift). Il manipule la sculpture grâce à un dispositif à 6 degrés de liberté pour la faire tourner et l’examiner sous tous les angles (Space Navigator). Enfin le travail de sculpture proprement dit utilise un bras mécanique à retour haptique (Geomagic Touch).

Voici un scénario typique d’utilisation. L’artiste a le casque de réalité virtuelle sur la tête, le Space Navigator dans sa main gauche et le stylet haptique dans sa main droite. Il est donc plongé dans un univers totalement virtuel simple : une salle vide au centre de laquelle flotte une sphère, celle que l’utilisateur déformera. Son matériau et l’éclairage sont choisis pour que les ombres et les reflets révèlent le plus finement possible la géométrie de la sculpture. S’il veut examiner l’objet sous différentes coutures, le sculpteur utilise le Space Navigator et voit la boule d’argile pivoter ou changer de taille. Pour interagir directement avec son œuvre, il utilise le stylet haptique dont il voit l’avatar dans le monde virtuel. Il peut effleurer la sculpture pour sentir physiquement sa forme. Pour creuser dans l’argile ou au contraire l’étirer, il place le stylet à l’endroit souhaité, appuie sur l’un des boutons de fonctions et voit la sculpture se déformer comme il le souhaite.

Matériel utilisé

Geomagic Touch

Phantom.png

Le Phantom Omni est un stylet à retour haptique, fixé sur un bras à 6 degrés de liberté. Cet outil peut être utilisé pour manipuler des objets virtuels en capturant les mouvements du stylo, et de petits moteurs intégrés permettent d’appliquer des forces au stylet, par exemple pour que l’utilisateur ressente physiquement le monde virtuel : blocage du mouvement en cas de contact avec un objet virtuel, simulation d’une force de viscosité lorsque l’outil virtuel pénètre dans l’argile virtuelle...




Oculus Rift

Oculus.png

L’Oculus Rift est un casque de réalité virtuelle permettant de regarder une scène virtuelle sous différents angles grâce à de simples mouvements de tête : les nombreux capteurs de ce casque permettent de connaître en permanence l’orientation de la tête de l’utilisateur, et ainsi de simuler efficacement une immersion dans le monde virtuel. Nous utilisons donc l’Oculus Rift pour permettre à l’utilisateur de visualiser directement en 3 dimensions le rendu de sa sculpture, et pour essayer de mieux appréhender le résultat de son travail.



Space Navigator

Space navigator.png

Le Space Navigator est un petit dispositif à 6 degrés de liberté permettant par exemple de déplacer le point de vue de la caméra dans un monde virtuel tel que la représentation de la terre dans Google Earth. Nous utilisons ce périphérique pour agrandir ou rétrécir l’objet ainsi que lui appliquer des rotations.





Profil de l'utilisateur

L’usage décrit ci-dessus est très spécifique : il s’adresse à des professionnels de la sculpture virtuelle qui utilisent déjà des logiciels tels que Zbrush, Sculptrix, Mudbox. L’usage de ces logiciels se fait essentiellement avec une tablette graphique.

Objectifs

L’utilisateur doit pouvoir manipuler des modèles en “argile virtuelle” avec le Phantom Omni. Dans l’idéal, une telle interaction implique des ajouts de matière, des retraits de matière mais aussi des interactions à volume constant (qui représentent le mieux l’argile réelle). Faute de temps, nous n’avons pu implémenter qu’une partie de ces interactions. Ces interactions se font à l’aide du Phantom Omni pour la sculpture et de l’Oculus Rift pour la visualisation 3D de l’objet. Par ailleurs, l’utilisateur doit pouvoir manipuler l’objet qu’il souhaite sculpter pour le tourner et accéder à toutes les zones de l’objet. Cette manipulation se fait à l’aide du Space Navigator.

Réalisation

Spécifications techniques

Notre projet utilise Unity 5.5.0. En effet les trois périphériques fonctionnent avec cette version:

  • le plugin du Space Navigator nécessite au moins Unity 5.5
  • l'Oculus est géré nativement sans besoin d'installer de plugin
  • le plugin du Geomagic Touch fonctionne à partir de Unity 5.4

Nous avons développé ce projet sous Windows 10.

Oculus Rift : visualisation du monde

L'Oculus ne sert qu'à visualiser la scène, il ne sert à aucune interaction avec le monde. A partir de la version 5 Unity supporte nativement l'Oculus, il suffit de configurer le projet et de placer la caméra à l'endroit souhaité.

Space Navigator : déplacement de la sculpture

Pour fonctionner le Space Navigator nécessite le driver Windows et l'utilitaire 3DConnexion lancé en tâche de fond. De plus il faut importer dans le projet un asset gratuit comprenant le plugin Unity (5.5.0+).

En théorie le Space Navigator a 6 degrés de liberté, cependant il ne sont pas réellement indépendants. Nous n'en utilisons seulement 4, pour redimensionner (1 degré) et pour tourner (3 degrés) la sculpture (cf. Interactions possibles).

Le script gérant ce périphérique reçoit en entrée 6 grandeurs:

  • rotations tilt, roll, yaw ;
  • translation x, y, z (nous n'utilisons que la composante en z).

Il faut noter que ces grandeurs ne sont pas vraiment indépendantes puisque les degrés de libertés ne le sont pas vraiment. Ainsi avec une implémentation naïve on s’aperçoit vite qu'il est difficile de faire pivoter la sculpture sans la redimensionner, ce qui n'est pas le comportement attendu. Pour résoudre ce problème nous utilisons un système de seuillage. Chaque grandeur, si elle est en deçà du seuil choisi, est mise à 0. Ainsi il devient par exemple aisé pour l'utilisateur de faire tourner la sculpture autour de l'axe vertical sans la redimensionner ni la faire pivoter autrement. Toutefois si c'est vraiment ce qu'il souhaite il peut toujours le faire. Les seuils sont empiriques et ont été ajustés après les tests utilisateurs. Nous avons considéré utiliser un système à hysteresis pour verrouiller une action à la fois. Après quelques essais nous avons conclu que dans notre cas cela n'avait pas de bénéfice sensible.

Geomagic Touch : déformation de la sculpture

Pour fonctionner le Geomagic Touch nécessite le driver Windows et le plugin Unity trouvable dans le Asset Store.

Le plugin gère :

  • l'animation d'un avatar du stylet dans le monde virtuel
  • la gestion du contact avec les objets du monde virtuel pour le retour haptique.

Notre script gère :

  • la coloration de la boule d'argile : les vertices dans la zone d'influence de l'outil sont colorés en vert (rouge s'il y a contact) tandis que les autres restent gris. Cela permet à l'utilisateur de visualiser l'impact d'une modification avant de l'effectuer. Nous avons également testé une coloration plus fine par fragment de la surface. Bien que plus agréable visuellement, l'utilisateur perd l'information sur le maillage sous-jacent, ce qui a été jugé problématique. Nous avons donc préféré la coloration par vertices.
  • il arrive que le stylet virtuel se trouve derrière la sculpture. Lorsque c'est le cas nous avons choisi d'afficher sa silhouette d'une couleur sombre uniforme comme si l'utilisateur la voyait par transparence. Cela permet de ne jamais perdre le stylet de vue et n'est pas trop perturbant puisque deux aspects sont bien distincts.
  • nous avons ajouté une force constante verticale pour compenser la gravité. Ainsi si l'utilisateur lâche le style physique, il ne tombe pas et le bras mécanique garde sa position.
  • pour creuser : il faut qu'il y ait contact entre l'avatar du stylet et l'argile. Quand l'utilisateur appuie sur le bouton, une champ de force local, de direction l'orientation du stylet et de module une gaussienne ramenée à support fini est appliqué sur les vertices. Unity recalcule ensuite les normales pour l'affichage. La nouvelle géométrie est renvoyée au Geomagic Touch pour mettre à jour les collisions.
  • pour tirer de la matière (V1) : pour tirer de la matière le contact n'est pas nécessaire. Une pression sur le bouton associé attire les vertices proches vers le stylet sur le même principe que pour creuser.
  • pour tirer de la matière (V2) : le stylet doit être très proche de la surface. Quand l'utilisateur presse le bouton associé il fait une sélection douce des vertices proches. Il peut ensuite déplacer le stylet et les vertices suivent le mouvement. Ce comportement a été jugé plus naturel que la V1.

Nous avons rencontré un problème crash dû à l'envoi de géométrie au Geomagic Touch, survenant après une certaine quantité de données envoyée. Nous pensons que ce problème vient du plugin Unity et avons seulement réussi à le contourner en limitant les envois de données : la géométrie n'est pas trop riche et n'est renvoyée que si nécessaire.

Interactions possibles

Sculpture

L’utilisateur peut interagir avec l’objet à l’aide du Phantom Omni. Dans l’environnement 3D, le bras du Phantom est représenté par un stylet qui suit ses mouvements et son orientation, ce qui permet au sculpteur de visualiser la position de sa main. Les interactions que nous avons implémentées sont les suivantes :

  • Lorsque le Phantom est au repos, c’est-à-dire qu’aucun de ses boutons n’est enfoncé, le bras mécanique épouse la forme de la sculpture sans la modifier. L’ensemble des points susceptibles d’être modifiés si l’utilisateur effectue l’une des deux actions décrites ci-dessus (la “zone d’influence”) est coloré en rouge si la pointe du stylet est en contact avec la sculpture et en vert sinon. Cette zone d’influence est de taille fixe : le niveau de détail est choisi en redimensionnant la sculpture (cf paragraphe suivant).
  • Lorsque le bouton gris foncé (celui du bas) est enfoncé, le fait d’exercer une pression sur la sculpture virtuelle avec le bras mécanique du Phantom permet de déformer sa surface vers l’intérieur (enfoncement) selon l’orientation du bras. L’ensemble des points déplacés se trouvent dans la “zone d’influence”.
  • Le bouton gris clair (celui du haut) permet quant à lui de tirer la surface vers l’extérieur de la sculpture. Un champ de force est appliqué à tous les points de la “zone d’influence” à proximité de l’extrémité du bras. Il les attire vers lui selon son orientation, et le module de l’intensité de la force dépend de la distance du point au bras selon un modèle gaussien. Ce fonctionnement s’apparente à celui d’un aimant qui attirerait les points de l’objet vers lui.

Plus précisément, l’objet de base que l’utilisateur est amené à modifier est une sphère triangulée. Le nombre de triangles n’est pas modifié lors d’une déformation avec le Phantom. Lorsque l’utilisateur décide de “pousser” ou de “tirer” de la matière, le déplacement des triangles est purement local : il n’est pas question ici de déformation à volume constant. Cette limitation peut paraître contraignante, mais elle permet en fait un contrôle plus fin du maillage, l’utilisateur n’ayant pas à se soucier des répercussions globales éventuelles d’une petite modification. L’utilisateur peut déformer continûment la sphère, mais ne peut pas modifier son ordre topologique. Concrètement, cela signifie qu’il n’est pas possible de “creuser” ou de “reboucher” des trous dans la sculpture. Cela limite le nombre de formes réalisables avec l’interaction que nous avons mise en place mais permet tout de même la réalisation de beaucoup de formes.


Stylet derrière la sculpture
Stylet visible
Stylet en contact et enfoncement
Étirement de matière

Visualisation

L’utilisateur peut changer de point de vue à l’aide du Space Navigator et de l’Oculus Rift. L’utilisation de l’Oculus est intuitive : il suit simplement les mouvements de la tête de l’utilisateur. Le Space Navigator s’utilise comme suit :

  • La rotation du Space Navigator tourne la sculpture selon l’axe perpendiculaire au plan de la table.
  • Tirer le Space Navigator vers le haut ou vers le bas permet respectivement d’agrandir ou de rétrécir l’objet afin de le modifier plus ou moins localement.
  • Pousser le Space Navigator dans le plan horizontal tourne l’objet dans le sens de la poussée.

Améliorations envisageables

Nous pouvons dresser une liste non exhaustive des améliorations que nous pouvons mettre en œuvre, leur faisabilité ainsi qu’éventuellement quelques pistes pour les réaliser :

  • Certains détails ergonomiques n’ont pas été envisagés : il serait bon de pouvoir annuler/rétablir une modification, et bien sûr d’enregistrer les résultats. Nous ne nous sommes pas focalisés sur ces points car ce travail est une preuve de concept.
  • Il serait judicieux de pouvoir modifier la taille de la zone d’influence lorsque l’on “retire” ou l’on “ajoute” de la matière et de modifier la forme du champ de force. L’implémentation n’est pas difficile en elle-même, mais l’enjeu est de trouver un moyen ergonomique d’accéder à ces fonctionnalités. Nous pourrions par exemple afficher un “tableau de bord” sur la table de la sculpture. L’utilisateur pourrait interagir avec ce tableau à l’aide du Phantom.
  • Le nombre de triangles du maillage est actuellement défini une fois pour toutes lors de son utilisation. Cela limite fortement le niveau de détail atteignable par le sculpteur. Bien que ce problème ne soit pas si important dans le cadre d’une preuve de concept, il serait bon de lancer périodiquement une tessellation de l’objet afin de garder une densité de maillage relativement constante.
  • L’utilisateur devrait pouvoir choisir l’ordre topologique (le nombre de “trous”) de sa sculpture. Une solution simple serait de spécifier l’ordre topologique du maillage lors de sa création, mais il serait bien mieux de pouvoir le modifier à la volée. Il n’existe pas de solution triviale à ce problème, tant du point de vue algorithmique qu’ergonomique.

Difficultés techniques

  • Crash au bout d’un certain temps dû à un problème de driver. Le crash arrive d’autant plus vite que la géométrie est riche.
  • Les 6 degrés de liberté du Space Navigator ne sont pas vraiment indépendants

Évaluation

Nous avons présenté le projet à quatre étudiants, aucun d’entre eux n’ayant suivi le cours d’interactions post-WIMP, ainsi qu’à un étudiant suivant l’option mais ayant travaillé dans un autre groupe. Pour chacun d’entre eux, nous avons commencé par expliquer le fonctionnement du dispositif ainsi que ses limites. Nous les avons ensuite laissés l’expérimenter tout en répondant à leurs questions éventuelles. Enfin, nous leur avons demandé d’effectuer un bref retour quant à son utilisabilité en explicitant les points positifs et les points à améliorer.

Certaines réactions ont été communes à l’ensemble des testeurs. Globalement, tous les étudiants ont rapidement pris en main l’Oculus Rift et tous ont compris que le modèle 3D du stylet était un avatar du Phantom dans l’environnement 3D. La coordination entre la main et ledit stylet n’a semblé être un problème pour personne, à condition bien sûr de placer le Phantom au centre de la table de travail. Tous les utilisateurs ont apprécié le système d’enfoncement de matière à l’aide du bouton gris foncé (cf paragraphe Interactions possibles) et le principe de la “zone d’influence” a été correctement assimilé. Cependant, presque tous les testeurs n’ont pas bien compris comment “tirer” de la matière : ils ont été perturbés par le fait que cette fonctionnalité s’utilise différemment de la précédente. Le principe de l’aimant (cf paragraphe Interactions possibles) a posé problème, les utilisateurs ne comprenant pas pourquoi il n’était pas nécessaire d’être en contact avec l’objet pour “tirer” la matière. Nous tentons au moment de la rédaction de ce rapport de remédier à ce problème.

Certaines fonctionnalités ont en revanche plus divisé les étudiants. Lorsque le stylet 3D est derrière l’objet, nous l’affichons différemment (couleur plus sombre et dessin “plat” sans reflets ni ombrage). Ceci n’a pas été compris par tous les utilisateurs, d’autant plus que la position initiale du stylet le force à être dans la sculpture. En outre, certains étudiants n’ont pas apprécié la façon de redimensionner l’objet à l’aide du Space Navigator (cf paragraphe Interactions possibles) ou n’en ont pas compris l’utilité. Certains ont également émis le souhait de pouvoir translater la sculpture dans le plan de la table. Ceci est théoriquement possible puisque nous n’utilisons que quatre degrés de liberté du Space Navigator. Cependant, la mise en œuvre pratique de cette fonctionnalité s’est révélée très peu ergonomique : il est très peu aisé de différencier le mouvement réservé à la rotation de celui réservé à la translation. Mentionnons enfin que les individus portant des lunettes ont été gênés par l’Oculus.

Conclusion

Nous avons rempli la plupart des objectifs que nous nous étions fixés, bien que certains problèmes comme des crashs intempestifs et aléatoires ne sont toujours pas résolus à ce jour. Nous avons néanmoins réussi à les limiter afin de rendre le dispositif utilisable pour de courtes sessions de test. Ceux-ci ont été globalement concluants, bien que certaines suggestions récurrentes nous aient amenés à réévaluer certains de nos choix. En conséquence, il est possible que le projet présenté lors de la soutenance diffère par certains points du rapport.