Le telecamere Intel RealSense 3D portano il tracking di mani e dita sui PC domestici e un SDK facile da usare per gli sviluppatori, il che li rende un nuovo metodo di input per i giochi VR e i giochi basati su schermo.
Idealmente, ci piacerebbe essere in grado di realizzare giochi che non richiedono al giocatore di toccare alcun tipo di periferica in qualsiasi momento. Ma, come con Kinect e EyeToy, ci imbattiamo in problemi quando affrontiamo un compito comune: inserire il testo. Anche inserire il nome di un personaggio senza usare una tastiera può essere noioso.
In questo post, condividerò ciò che ho imparato sui modi migliori (e peggiori!) Per consentire ai giocatori di inserire testo tramite il solo gesto e mostrarti come configurare l'SDK Intel RealSense in Unity, quindi puoi provarlo nei tuoi stessi giochi.
(Nota che mi sto concentrando su input ASCII qui, e in particolare sull'alfabeto inglese.Alfabeti e modalità di input alternativi, come stenografia, stenografia e kanji, possono essere meglio serviti in altri modi.)
Esistono altri approcci per l'immissione di testo senza periferiche, ma hanno dei difetti. Ci piacerebbe venire con un approccio che migliora su ciascuno di essi.
Le tastiere sono lo standard d'oro per l'immissione di testo, quindi cosa dire semplicemente imitando il digitare su una tastiera a mezz'aria o su una superficie piatta?
Purtroppo, la mancanza di feedback tattile è più importante di quanto possa sembrare a prima vista. In questa situazione è impossibile digitare il tocco, perché la cinestesia è troppo imprecisa per agire sul solo movimento inerziale. Il tocco fisico e reattivo di una tastiera conferisce al dattilografo la consapevolezza del secondo senso della posizione del dito e agisce come un meccanismo di correzione degli errori continuo. Senza di ciò, le dita tendono a perdere il bersaglio e piccoli errori di posizionamento si combinano rapidamente, richiedendo un "reset" alle chiavi di casa.
Il nostro primo esperimento con RealSense per l'immissione di testo è stato uno sforzo per riconoscere l'ortografia delle lingue in lingua dei segni americana. Abbiamo scoperto che ci sono diverse difficoltà che rendono questa scelta poco pratica.
Un problema è la velocità. Gli abili finger-spellers possono lampeggiare circa due lettere al secondo o 120 lettere al minuto. Con una media di cinque lettere per parola, vale a dire 24 WPM, che è considerevolmente inferiore persino alla velocità media della macchina da scrivere di 40 WPM: un buon finger-speller è circa la metà più veloce di un così bravo tastierista.
Un altro problema è la necessità per l'utente di apprendere un nuovo set di caratteri. Uno dei valori meno ovvi di una tastiera standard è il fatto che esso comporti tutti gli altri strumenti che usiamo per scrivere. Il stampato T impariamo all'asilo è lo stesso T visto sulla tastiera. Chiedere agli utenti di imparare un nuovo set di caratteri solo per inserire del testo in un gioco è un no-go.
Le console di gioco richiedono già regolarmente l'immissione di testo per numeri di carta di credito, password, nomi di caratteri e altri valori personalizzabili. Il metodo di input tipico è quello di visualizzare una tastiera virtuale sullo schermo e consentire a un input spazialmente sensibile di "toccare" un determinato tasto.
Ci sono molte iterazioni di questo concetto. Molti usano un joystick per muovere un cursore. Altri potrebbero utilizzare una tecnologia di tracciamento manuale come Intel RealSense o Kinect per fare essenzialmente la stessa cosa (con un gesto della mano che agisce come un tocco della chiave). Stephen Hawking utilizza un input concettualmente simile che tiene traccia dei movimenti degli occhi per spostare un cursore. Ma tutti questi sistemi creano uno scenario peggiore di entrambi i mondi in cui un input spaziale a punto singolo, essenzialmente un puntatore del mouse, viene utilizzato per lavorare su un dispositivo multi-touch; è come usare una gomma da matita per digitare una lettera alla volta.
Qualche lavoro interessante è stato fatto per rendere l'input del testo del joystick più veloce e più flessibile da persone come Doug Naimo a Triggerfinger, ma la velocità di input non è ancora sufficiente a battere regolarmente con un ampio margine, ed è davvero utile solo quando i metodi di input migliori o più veloci sono non disponibile.
Tutto questo parlare delle debolezze dei metodi di input di testo alternativi implica che l'umile tastiera ha diversi punti di forza che non sono facilmente sostituibili o migliorati. Come possono essere conservati questi punti di forza dimostrati in un sistema di inserimento di testi che non richiede periferiche pratiche? Credo che la risposta risieda in due osservazioni critiche:
Con tutto questo in mente, mi è venuto in mente un semplice sistema gestuale a due mani che chiamo "facekey". Ecco come funziona.
Prima di arrivare a una tastiera completa, iniziamo con una tastiera numpad, una semplice calcolatrice. Abbiamo bisogno di dieci cifre (da 0 a 9) e cinque operatori (più, meno, dividere, moltiplicare e uguali). Mirando all'utilizzo di tutte e dieci le dita, possiamo suddividerle in due gruppi di cinque cifre e rappresentarle sullo schermo come due piramidi quadrate, con gli operatori come un'altra piramide:
Ogni dito corrisponde a una faccia di ogni piramide. Ogni faccia può essere pensata come una "chiave" su una tastiera, quindi li chiamo facekeys. La mano sinistra immette cifre 1 a 5 flettendo le dita individualmente, mentre la destra entra nelle cifre 6 a 0. Flettendo lo stesso dito su entrambe le mani contemporaneamente - entrambi gli anulari, ad esempio - azionano un facekey sulla piramide dell'operatore.
Le funzioni non digitali (ma essenziali) includono un pugno sinistro per scrivere il valore visualizzato in memoria, un pugno destro per leggere (e cancellare) la memoria e due pugni chiusi per cancellare i ponti e iniziare un nuovo calcolo.
Quando l'ho testato per la prima volta, ho pensato che gli utenti che tenevano le mani con il palmo verso il basso (come se digitassero una tastiera) sarebbero più comodi. Tuttavia, risulta che una posizione con i palmi rivolti verso l'interno è più confortevole e consente sia un uso più lungo che una maggiore velocità:
Si scopre anche che il feedback visivo dallo schermo è molto importante, specialmente durante l'apprendimento. Possiamo fornirlo tramite una nota lettura a cifre in stile calcolatrice, ma è anche utile far ruotare e animare le piramidi a ogni tratto, per stabilire e rinforzare la connessione tra un dito e il suo corrispondente facekey.
Questo sistema è comodo e facile da imparare ed è anche facilmente estensibile. Ad esempio, la mancanza di un punto decimale e un tasto backspace diventano frustranti rapidamente, ma questi input sono facilmente adattati con piccole modifiche. In primo luogo, un'onda di mano destra può fungere da backspace. In secondo luogo, il facekey uguale può essere sostituito con un punto decimale per l'inserimento e un gesto "clap" diventa l'operatore di uguaglianza, che ha il delizioso risultato di rendere i calcoli ritmici e modestamente divertenti.
Una calcolatrice senza periferiche è una cosa, ma una sostituzione di tastiera tipica oltre 80 è un'altra. Vi sono, tuttavia, alcuni modi molto semplici e pratici per continuare lo sviluppo attorno a questo concetto di keyfacing.
La tastiera standard è disposta in quattro file di tasti più una barra spaziatrice: numeri e punteggiatura in alto con tre righe di lettere al di sotto. Ogni riga è definita dalla sua posizione nello spazio e qui possiamo usare questo concetto.
Invece di spostare le mani verso o lontano da un punto fisso come la fotocamera, un metodo più flessibile è rendere il sistema autoreferenziale. Possiamo lasciare che il giocatore definisca una distanza confortevole tra i loro palmi; il gioco stabilirà quindi questa distanza internamente come 1-Delta
. L'equivalente di raggiungere diverse file sulla tastiera è quindi semplicemente avvicinare le mani o allontanarsi l'una dall'altra: a 2-Delta
distanza accede ai tasti "seconda riga" e 3-Delta
raggiunge le chiavi della terza riga.
1-Delta
a parte, e possono digitare UN a J; tienili 2-Delta
a parte, e possono digitare K a T.Le "chiavi di casa" sono impostate su questo 1-Delta
distanza, e il keyfacing procede mappando lettere e altri personaggi su una serie di piramidi che coprono in sequenza l'intero alfabeto. La sperimentazione suggerisce che esistono 3-4 Delta confortevoli e facilmente riproducibili tra le mani che toccano e le spalle. Gli utenti esperti possono trovarne molti di più, ma l'imprecisione intrinseca della normale cinestesia è probabilmente un limite a questo fattore.
I gesti semplici forniscono un altro asse di espansione. La tastiera Cambio la chiave, ad esempio, trasforma ogni chiave in due, e il Ctrl e alt i tasti lo estendono ancora di più. Semplici gesti con una sola mano creerebbero esattamente lo stesso accesso ai livelli chiave mantenendo la velocità e la flessibilità. Ad esempio, un pugno potrebbe essere il Cambio chiave. Una mano "pistola" può accedere a comandi di modifica o qualsiasi numero di combinazioni. Utilizzando gesti con una sola mano per modificare i keyfaces, l'utente può accedere a caratteri diversi.
Pronto a provarlo da solo? Innanzitutto, è necessario installare Intel RealSense SDK e configurare il plug-in per Unity.
Ecco una breve spiegazione dettagliata su come installare e configurare RealSense SDK e Unity. Creeremo una semplice demo di prova che modifica le dimensioni di un oggetto in base al movimento della mano dell'utente.
Avrai bisogno:
Potresti anche voler utilizzare questo plugin gratuito che ti consente di scrivere il codice Unity in Visual Studio; tocca a voi.
Userò l'astronave dal progetto Space Shooter gratuito di Unity, ma puoi semplicemente usare un cubo semplice o qualsiasi altro oggetto se preferisci.
Il pacchetto contenente Unity Toolkit per la tecnologia Intel RealSense contiene tutto il necessario per la manipolazione degli oggetti di gioco. Il pacchetto Unity si trova nel \ RSSDK \ Framework \ unità \
cartella. Se hai installato RealSense SDK nella posizione predefinita, il RSSDK
cartella sarà dentro C: \ Programmi (x86) \
(Su Windows).
È possibile importare Unity Toolkit come si farebbe con qualsiasi pacchetto. Quando lo fai, hai le opzioni per scegliere e scegliere quello che vuoi. Ai fini di questo tutorial, utilizzeremo i valori predefiniti e importeremo tutto.
Come puoi vedere nell'immagine seguente, ora ci sono diverse nuove cartelle nella cartella Risorse.
Non entreremo in ciò che tutte le cartelle sono qui; Lo lascerò per te a indagare!
Aggiungi la nave alla scena.
Successivamente, aggiungi una luce direzionale per dare luce alla nave in modo da poterla vedere meglio.
Dovrebbe sembrare come questo:
Per aggiungere funzionalità di ridimensionamento all'oggetto di gioco, dobbiamo aggiungere il ScaleAction script. Il ScaleActionScript è sotto il RSUnityToolkit cartella e nel Azioni sottocartella.
Basta prendere la sceneggiatura e trascinarla direttamente sulla nave nel Scena vista. Ora sarai in grado di vedere il ScaleAction parametri di script nel Ispettore.
Qui, ho collassato tutti i parametri per mostrare le tre aree di base dello script di scala: il Avvia evento, il Scala Trigger, e il Stop Evento.A partire da Avvia evento, espandi la freccia per mostrare il trigger predefinito. In questo caso, non vogliamo usare Gesto rilevato, vogliamo usare Mano rilevata.
Fai clic destro su Gesto rilevato e selezionare Rimuovere. Quindi, sul Avvia evento'S Inserisci pulsante, fare clic e selezionare Mano rilevata. Sotto Quale mano, seleziona e scegli ACCESS_ORDER_RIGHT_HANDS.
Ora dovremo impostare il Stop Evento. Espandi il Stop Evento e rimuovere il Gesto perso riga. Quindi, fai clic su Stop Evento'S Inserisci pulsante e scegliere Mano persa. Accanto a Quale mano, selezionare ACCESS_ORDER_RIGHT_HANDS.
Non dovremo cambiare il Scala Trigger perché c'è solo una possibilità per questo comunque. Useremo solo l'impostazione predefinita.
Questo è tutto! Salva la scena, salva il tuo progetto ed eseguilo; sarai in grado di ridimensionare la nave sullo schermo con un gesto.
Abbiamo discusso le idee alla base dell'inserimento del testo senza toccare una periferica e hai visto come iniziare con RealSense SDK in Unity. Quindi, tocca a voi. Prendi ciò che hai imparato e sperimenta!
Innanzitutto, fai in modo che la tua demo interpreti diversi personaggi in base a quali dita muovi. Successivamente, rifletti questo sullo schermo in modo appropriato (non devi usare il mio metodo piramidale!). Quindi, fai un ulteriore passo avanti: cosa ne pensi di provare una posizione diversa della mano, come con i palmi rivolti verso la fotocamera, o un diverso movimento di input, come torcere un cubo di Rubik?
Il programma Intel® Software Innovator supporta sviluppatori indipendenti innovativi che mostrano la capacità di creare e dimostrare progetti lungimiranti. Gli innovatori sfruttano le opportunità di speakerhip e demo negli eventi del settore e nelle riunioni degli sviluppatori.
Intel® Developer Zone offre strumenti e istruzioni per lo sviluppo di app cross-platform, informazioni su piattaforma e tecnologia, esempi di codice e competenze peer per aiutare gli sviluppatori a innovare e avere successo. Unisciti alle nostre comunità per il Internet delle cose, androide, Tecnologia Intel® RealSense ™, Codice moderno, Game Dev e finestre per scaricare strumenti, accedere a kit di sviluppo, condividere idee con sviluppatori affini e partecipare a hackathon, concorsi, roadshow ed eventi locali.