Les caméras 3D Intel RealSense permettent aux PC domestiques de suivre leurs doigts et leurs doigts et constituent un SDK facile à utiliser pour les développeurs, ce qui en fait une nouvelle méthode de saisie idéale pour les jeux en réalité virtuelle et les jeux sur écran..
Idéalement, nous aimerions pouvoir créer des jeux qui n'exigent pas que le joueur touche à quelque type de périphérique que ce soit. Mais, comme avec le Kinect et le EyeToy, nous rencontrons des problèmes lorsque nous sommes confrontés à une tâche commune: la saisie de texte. Même entrer le nom d'un personnage sans utiliser de clavier peut être fastidieux.
Dans cet article, je vais partager ce que j'ai appris sur les meilleures (et les pires!) Façons de permettre aux joueurs de saisir du texte via un geste seul et de vous montrer comment configurer le SDK Intel RealSense dans Unity pour pouvoir l'essayer. dans vos propres jeux.
(Notez que je me concentre sur l'entrée ASCII ici, et en particulier sur l'alphabet anglais. Des alphabets et modes d'entrée alternatifs, tels que la sténographie, le sténographe et le kanji, pourraient être mieux servis à d'autres égards.)
Il existe d'autres approches pour la saisie de texte sans périphérique, mais elles présentent des défauts. Nous aimerions proposer une approche qui améliore chacun d'eux.
Les claviers sont la norme par excellence pour la saisie de texte. Alors, qu'en est-il de simplement taper sur un clavier en plein air ou sur une surface plane??
Malheureusement, le manque de retour tactile est plus important qu'il n'y parait à première vue. La frappe au clavier est impossible dans cette situation, car la kinesthésie est trop imprécise pour agir uniquement sur le mouvement inertiel. Le toucher physique et réactif d'un clavier donne au dactylographe une conscience seconde de la position des doigts et agit comme un mécanisme de correction d'erreur continu. Sans cela, les doigts ont tendance à dériver hors de la cible, et de légères erreurs de positionnement se compliquent rapidement, nécessitant une "réinitialisation" des touches "home"..
Notre première expérience avec RealSense pour la saisie de texte visait à reconnaître l’orthographe des doigts en langue des signes américaine. Nous avons découvert qu'il existe plusieurs difficultés qui rendent ce choix peu pratique.
Un problème est la vitesse. Les orthographes expérimentés peuvent faire clignoter environ deux lettres par seconde ou 120 lettres par minute. Avec une moyenne de cinq lettres par mot, cela correspond à 24 mots / minute, ce qui est bien en dessous de la vitesse moyenne du dactylographe de 40 mots / minute - une bonne correction orthographique est environ deux fois plus rapide qu'un clavier.
Un autre problème est la nécessité pour l'utilisateur d'apprendre un nouveau jeu de caractères. L'une des valeurs peu évidentes d'un clavier standard est qu'il est compatible avec tous les autres outils que nous utilisons pour écrire. Le imprimé T nous apprenons à la maternelle est le même T vu sur le clavier. Demander aux utilisateurs d'apprendre un nouveau jeu de caractères juste pour entrer du texte dans un jeu est une option.
Les consoles de jeu nécessitent déjà régulièrement la saisie de texte pour les numéros de carte de crédit, les mots de passe, les noms de personnage et d'autres valeurs personnalisables. La méthode de saisie typique consiste à afficher un clavier virtuel à l'écran et à permettre à une entrée sensible à l'espace de "taper" sur une touche donnée..
Il y a beaucoup d'itérations de ce concept. Beaucoup utilisent un joystick pour déplacer un curseur. D'autres peuvent utiliser une technologie de suivi manuel comme Intel RealSense ou Kinect pour faire essentiellement la même chose (avec un geste de la main agissant comme un tapotement de la touche). Stephen Hawking utilise une entrée conceptuellement similaire qui suit les mouvements des yeux pour déplacer un curseur. Mais tous ces systèmes créent un scénario des pires des deux mondes dans lequel une entrée spatiale à point unique, essentiellement un pointeur de souris, est utilisée pour faire fonctionner un périphérique tactile multipoint; c'est comme utiliser une gomme à effacer pour taper une lettre à la fois.
Des travaux intéressants ont été effectués pour rendre la saisie de texte par joystick plus rapide et plus flexible par des personnes telles que Doug Naimo chez Triggerfinger, mais la vitesse de saisie ne permet toujours pas de taper de manière régulière dans une grande marge et n’est vraiment utile que lorsque des méthodes de saisie meilleures ou plus rapides sont utilisées. indisponible.
Toutes ces discussions sur les faiblesses des méthodes de saisie de texte alternatives impliquent que le clavier humble possède plusieurs points forts qu'il n'est pas facile de remplacer ni d'améliorer. Comment conserver ces atouts démontrés dans un système de saisie de texte ne nécessitant aucun périphérique de travail? Je crois que la réponse réside dans deux observations critiques:
Tout en gardant cela à l’esprit, j’ai mis au point un système gestuel simple à deux mains, que j’appelle des "touches du visage". Voici comment ça fonctionne.
Avant d’obtenir un clavier complet, commençons par un pavé numérique, une simple calculatrice. Nous avons besoin de dix chiffres (0 à 9) et de cinq opérateurs (plus, moins, diviser, multiplier et égal). En cherchant à utiliser les dix doigts, nous pouvons les diviser en deux groupes de cinq chiffres et les représenter à l’écran sous la forme de pyramides à deux pieds carrés, avec les opérateurs comme une autre pyramide:
Chaque doigt correspond à une face de chaque pyramide. Chaque visage peut être considéré comme une "touche" sur un clavier, je les appelle des touches. La main gauche entre les chiffres 1 à 5 en fléchissant les doigts individuellement, tandis que le droit entre les doigts 6 à 0. Faire fléchir le même doigt sur les deux mains simultanément (les deux annulaires, par exemple) actionne une touche du visage sur la pyramide de l'opérateur.
Les fonctions non numériques (mais essentielles) incluent un poing gauche pour écrire la valeur affichée dans la mémoire, un poing droit pour lire (et effacer) la mémoire, et deux poings fermés pour effacer les cartes et lancer un nouveau calcul..
Quand j'ai testé cela pour la première fois, j'ai supposé que les utilisateurs tenant leurs mains paume vers le bas (comme s'ils tapaient sur un clavier) seraient plus à l'aise. Cependant, il s'avère qu'une position avec les paumes tournées vers l'intérieur est plus confortable et permet une utilisation plus longue et plus rapide:
Il s'avère également que le retour visuel de l'écran est très important, en particulier lors de l'apprentissage. Nous pouvons le fournir via une lecture de chiffres familière, semblable à celle d'une calculatrice, mais il est également bon de faire pivoter et animer les pyramides elles-mêmes à chaque trait pour établir et renforcer la connexion entre un doigt et la touche correspondante..
Ce système est confortable, facile à apprendre et facilement extensible. Par exemple, l'absence de séparateur décimal et de touche de retour arrière devient rapidement frustrante, mais ces entrées sont facilement prises en compte avec des modifications mineures. Premièrement, une vague de droite peut agir comme un backspace. Deuxièmement, la touche d'égale peut être remplacée par une virgule décimale, et un geste "applaudissement" est devenu l'opérateur d'égalité, ce qui a pour résultat agréable de faire des calculs rythmés et légèrement amusants..
Une calculatrice sans périphérique est une chose, mais remplacer un clavier de plus de 80 ans en est une autre. Il existe cependant des moyens très simples et pratiques de poursuivre le développement autour de ce concept de masquage de touches..
Le clavier standard est organisé en quatre rangées de touches et une barre d'espacement: chiffres et signes de ponctuation en haut, avec trois rangées de lettres en dessous. Chaque ligne est définie par sa position dans l'espace, et nous pouvons utiliser ce concept ici.
Au lieu de rapprocher ou d’éloigner vos mains d’un point fixe comme la caméra, une méthode plus souple consiste à rendre le système auto-référentiel. Nous pouvons laisser le joueur définir une distance confortable entre ses paumes; le jeu définira alors cette distance en interne comme 1-Delta
. L’équivalent d’atteindre différentes lignes du clavier consiste alors simplement à rapprocher ou à éloigner les mains les unes des autres: a 2-Delta
accès à distance aux touches "deuxième rangée", et 3-Delta
atteint les touches de la troisième rangée.
1-Delta
à part, et ils peuvent taper UNE à J; tiens les 2-Delta
à part, et ils peuvent taper K à T.Les "clés de la maison" sont définies sur cette 1-Delta
La distance et la frappe au clavier procèdent en mappant des lettres et d'autres caractères à une série de pyramides couvrant successivement tout l'alphabet. L'expérimentation suggère l'existence de 3 à 4 deltas confortables et facilement reproductibles entre les mains qui se touchent et la largeur des épaules. Les utilisateurs qualifiés peuvent en trouver beaucoup plus, mais l'imprécision inhérente à la kinesthésie normale risque de limiter ce facteur..
Les gestes simples fournissent un autre axe d'expansion. Le clavier Décalage clé, par exemple, transforme chaque clé en deux, et le Ctrl et Alt les touches prolongent cela encore plus. Des gestes simples, d'une seule main, créeraient exactement le même accès aux couches clés tout en maintenant vitesse et flexibilité. Par exemple, un poing pourrait être le Décalage clé. Une main "pistolet" peut accéder aux commandes d'édition ou à un nombre quelconque de combinaisons. En utilisant des gestes d’une seule main pour modifier les interfaces de touches, l’utilisateur peut accéder à différents personnages..
Prêt à l'essayer vous-même? Tout d’abord, vous devez installer le SDK Intel RealSense et configurer le plug-in pour Unity..
Voici une procédure pas à pas qui explique comment installer et configurer RealSense SDK et Unity. Nous allons faire une démonstration simple qui change la taille d'un objet en fonction du mouvement de la main de l'utilisateur.
Tu auras besoin de:
Vous pouvez également souhaiter utiliser ce plug-in gratuit qui vous permet d'écrire du code Unity dans Visual Studio; c'est à vous.
Je vais utiliser le vaisseau spatial du projet gratuit Space Shooter de Unity, mais vous pouvez simplement utiliser un simple cube ou tout autre objet si vous préférez..
Le package contenant la technologie Unity Toolkit pour Intel RealSense contient tout ce dont vous avez besoin pour manipuler des objets de jeu. Le package Unity est situé dans le \ RSSDK \ Framework \ Unity \
dossier. Si vous avez installé le SDK RealSense à l’emplacement par défaut, le RSSDK
dossier sera dans C: \ Program Files (x86) \
(sous Windows).
Vous pouvez importer la boîte à outils Unity comme n'importe quel package. Ce faisant, vous avez la possibilité de choisir ce que vous voulez. Pour les besoins de ce tutoriel, nous allons utiliser les valeurs par défaut et tout importer.
Comme vous pouvez le voir dans l'image suivante, il y a maintenant plusieurs nouveaux dossiers sous le dossier Assets..
Nous n'entrerons pas dans ce que tous les dossiers sont ici; Je vais laisser cela pour que vous enquêtiez!
Ajouter le bateau à la scène.
Ensuite, ajoutez une lumière directionnelle pour éclairer le navire afin de mieux le voir..
Ça devrait ressembler à ça:
Pour ajouter des capacités de mise à l’échelle à l’objet du jeu, nous devons ajouter le ScaleAction scénario. le ScaleActionScript est sous la RSUnityToolkit dossier et dans le actes sous-dossier.
Il suffit de saisir le script et de le glisser-déposer directement sur le navire dans le Scène vue. Vous pourrez maintenant voir le ScaleAction paramètres de script dans le Inspecteur.
Ici, j’ai rassemblé tous les paramètres pour afficher les trois zones de base du script d’échelle: Commencer un événement, la Déclencheur d'échelle, et le Stop Event.En commençant par le Commencer un événement, Développez la flèche pour afficher le déclencheur par défaut. Dans ce cas, nous ne voulons pas utiliser Geste détecté, nous voulons utiliser Détecté à la main.
Clic droit sur Geste détecté et sélectionnez Retirer. Puis sur le Commencer un événementde Ajouter bouton, cliquez et sélectionnez Détecté à la main. Sous Quelle main, sélectionner et choisir ACCESS_ORDER_RIGHT_HANDS.
Maintenant, nous allons définir le Stop Event. Étendre le Stop Event et retirez le Geste perdu rangée. Ensuite, cliquez sur le Stop Eventde Ajouter bouton et choisissez Main perdue. À côté de Quelle main, sélectionner ACCESS_ORDER_RIGHT_HANDS.
Nous n'aurons pas à changer le Déclencheur d'échelle car il n'y a qu'une seule option pour cela de toute façon. Nous allons juste utiliser la valeur par défaut.
C'est tout! Enregistrez votre scène, enregistrez votre projet et exécutez-le. vous serez en mesure de redimensionner le navire à l'écran avec un geste.
Nous avons discuté des idées derrière la saisie de texte sans toucher un périphérique et vous avez vu comment utiliser le kit de développement RealSense SDK sous Unity. Ensuite, à vous de choisir. Prenez ce que vous avez appris et expérimentez!
Tout d’abord, demandez à votre démo d’interpréter différents personnages en fonction des doigts que vous déplacez. Ensuite, réfléchissez-le à l'écran de manière appropriée (vous n'avez pas à utiliser ma méthode pyramidale!). Ensuite, allez plus loin: pourquoi ne pas essayer une position de la main différente, comme avec les paumes face à la caméra, ou un mouvement d'entrée différent, comme tordre un cube de Rubik?
Le programme Intel® Software Innovator soutient les développeurs indépendants innovants qui ont la capacité de créer et de démontrer des projets tournés vers l'avenir. Les innovateurs tirent parti des opportunités de présentation et de démonstration lors de manifestations de l'industrie et de réunions de développeurs..
Zone de développement Intel® offre des outils et des informations pratiques pour le développement d'applications multiplates-formes, des informations de plate-forme et de technologie, des exemples de code et l'expertise de pairs pour aider les développeurs à innover et à réussir. Rejoignez nos communautés pour le Internet des objets, Android, Technologie Intel® RealSense ™, Code moderne, Développement de jeu et les fenêtres pour télécharger des outils, accéder à des kits de développement, partager des idées avec des développeurs partageant les mêmes idées et participer à des hackathons, des concours, des tournées de présentation et des événements locaux.