Ca a l'air amusant! Et puis... J'ai bien une petite idée.

From the Blog

mai
22
Posted by gduhamel at 8:36

L’interaction utilisateur naturelle avec un environnement virtuel est un autre élément auquel je prévoyais de m’intéresser. Aujourd’hui, les dispositifs tactiles et la reconnaissance de mouvement nous rapprochent de l’information en la rendant plus palpable et plus « humainement » atteignable.
Malgré tout, le visuel reste identique, enfermé dans les deux dimensions de l’écran qui le retranscrit.

Dans un contexte où l’information se superpose au regard de l’utilisateur, il est logique d’adopter également son point de vue lorsqu’il est question d’interaction. Ce que l’on recherche n’est donc plus un « blob » sur une surface tactile mais un repère dans l’espace.

L’objectif de cette application est la manipulation d’éléments de réalité augmentée à partir d’un dispositif de type lunette. A l’aide d’une camera percevant les mouvements de l’utilisateur, celui-ci doit pouvoir agir sur l’interface virtuelle.

Détection d’un repère

J’ai pris le parti de réutiliser la détection de forme bricolée le mois passé pour matérialiser la gestuelle.
Principal avantage : la détection est très tolérante dans la reconnaissance de la forme. La main peut être légèrement inclinée, d’un côté ou de l’autre, en avant ou en arrière. Elle peut être plus large ou plus longue, et même d’une autre couleur. En somme cette méthode est adaptée pour différents utilisateurs. La seule nécessité est de reproduire un geste déterminé à l’avance.

Lorsque ce geste est détecté, le logiciel essaie de déterminer s’il s’agit bien de l’élément recherché et non d’un faux positif. Et si la forme est suffisamment ressemblante, il calcule l’emplacement précis correspondant au bout des doigts.

Picking

Sans doute la partie la plus technique, et néanmoins la plus courte.
Chaque élément virtuel présenté à l’utilisateur est connu par le système en tant qu’une série de coordonnées dans l’espace. Une fois l’étape précédente résolue, on connait la position de l’interaction au sein de l’image calculée (le lieu « touché » par l’utilisateur).
Le problème devient alors purement géométrique :

  • Calcul du vecteur modélisant la direction de l’interaction
  • Recherche d’une intersection avec l’un des plans connus

On identifie alors un (ou plusieurs) élément situé sur le chemin du vecteur.

Différentes interactions

Dans l’exemple développé et dont les résultats sont en vidéo plus bas, j’ai mis en œuvre deux interactions simples. La sélection simple, l’équivalent du « click », ainsi qu’une version simplifiée du glisser-déposer.

Ces deux interactions reposent sur un seul et même signe de la main. En variant la gestuelle, on peut enrichir d’autant la variété des actions réalisables.

Une question de poids

Contrairement au click d’une souris, à toute interaction est associée un doute. Lorsque les conditions sont réunies, de faux positifs peuvent induire le système en erreur sur les intentions de l’utilisateur. Pour déjouer ces aléas du traitement d’image j’ai conditionné l’interaction à une mécanique de « poids ».

  • Lorsqu’une interaction est détectée, l’élément virtuel touché gagne en poids.
  • Si aucune interaction n’est détectée, l’élément perds une fraction du poids acquis.

=> Un élément est considéré comme « cliqué » lorsqu’il dépasse un certain poids
=> Pour le cliquer-glisser, le poids détermine dans quelle mesure l’élément doit suivre le déplacement de la main.

Démo

En conclusion, donner la possibilité à une personne de toucher le virtuel reste assez simple. La méthode testée ici pourrait être utilisée avec  toute autre forme qu’une main. Mais cela signifie également qu’au delà du geste enregistré, le logiciel sera incapable de reconnaitre le membre de l’utilisateur sous une autre apparence ni de se représenter la position qu’il adopte.

En la matière, la qualité et la simplicité vont de paire avec le port de gants adaptés (munis de leds ou teintés de couleurs vives). Mais n’est-ce pas une alternative tout à fait viable au très contre-intuitif couple Clavier-Souris ?