Introducerea textului pentru jocuri cu doar o cameră RealSense Intel

Camerele Intel RealSense 3D aduc monitorizarea mâinilor și a degetului pe PC-urile de acasă și un SDK ușor de utilizat pentru dezvoltatori, ceea ce le face o metodă nouă de intrare atât pentru jocurile VR, cât și pentru jocurile bazate pe ecran. 

În mod ideal, am dori să facem jocuri care nu necesită ca jucătorul să atingă orice tip de periferic în orice moment. Dar, ca și în cazul Kinect și EyeToy, ne confruntăm cu probleme atunci când ne confruntăm cu o sarcină comună: introducerea textului. Chiar introducerea numelui unui personaj fără a folosi o tastatură poate fi obositoare.

În acest post, voi împărtăși ceea ce am învățat despre modalitățile cele mai bune (și cel mai rău!) De a lăsa jucătorii să introducă text numai prin gest și vă vor arăta cum să configurați Intel RealSense SDK în Unity, pentru a putea încerca în jocurile tale.

(Rețineți că mă concentrez asupra introducerii ASCII aici și în special a alfabetului englez. Alfabetele alternative și modurile de intrare, cum ar fi stenografia, stenografia și canji, pot fi servite mai bine în alte moduri.)

Metode de introducere pe care le putem îmbunătăți

Există și alte abordări pentru introducerea textului fără periferice acolo, dar acestea au defecte. Am dori să abordăm o abordare care să îmbunătățească fiecare dintre ele.

Tastatura virtuala

Tastatura este standardul de aur pentru introducerea textului, așa că doar despre imitarea tastării pe o tastatură în mijlocul aerului sau pe o suprafață plană?

Din păcate, lipsa feedback-ului tactil este mai importantă decât s-ar părea la prima vedere. Atingerea prin atingere este imposibilă în această situație, deoarece kinesthesia este prea inexactă pentru a acționa numai pe mișcarea inerțială. Atingerea fizică și sensibilă a unei tastaturi oferă conștientului de tip dictator al celei de-a doua sensuri poziția degetului și acționează ca un mecanism de corectare a erorilor în desfășurare. Fără asta, degetele tale au tendința de a se îndepărta de la țintă, iar ușoarele erori de poziționare se compun rapid, necesitând o resetare la tastele acasă. 

Gestual alfabet

Primul nostru experiment cu RealSense pentru introducerea textului a fost un efort de a recunoaște ortografia ortografică a limbii americane. Am descoperit că există mai multe dificultăți care fac din aceasta o alegere nepractică.

O problemă este viteza. Proverbele cu amprente proaste pot bloca aproximativ două litere pe secundă sau 120 de litere pe minut. La o medie de cinci litere pe cuvânt, este vorba de 24 WPM, care este cu mult sub chiar viteza medie a dactilografilor de 40 de WPM - un speller bun este de aproximativ jumătate de repetat ca un fel de tastatură.

O altă problemă este necesitatea ca utilizatorul să învețe un nou set de caractere. Una dintre valorile mai puțin decât cele evidente ale unei tastaturi standard este că se comportă cu toate celelalte instrumente pe care le folosim pentru scriere. Imprimate T învățăm în grădiniță este același T văzută pe tastatură. Solicitarea utilizatorilor de a învăța un nou set de caractere doar pentru a introduce textul într-un joc este un drum liber.

Joystick și intrare spațială

Consolele de jocuri necesită deja în mod regulat introducerea de text pentru numerele cărților de credit, parole, nume de caractere și alte valori personalizabile. Metoda tipică de introducere este afișarea unei tastaturi virtuale pe ecran și permiterea unei intrări sensibile din punct de vedere spațial pentru a "atinge" o cheie dată.

Există multe iterații ale acestui concept. Mulți folosesc un joystick pentru a muta un cursor. Alții pot folosi o tehnologie de urmărire a mâinilor, cum ar fi Intel RealSense sau Kinect, pentru a face în mod esențial același lucru (cu un val al mâinii care acționează ca o apăsare a cheii). Stephen Hawking folosește o intrare similară din punct de vedere conceptual care urmărește mișcările ochilor pentru a muta un cursor. Dar toate aceste sisteme creează un scenariu de cel mai rău dintre cele două lumi în care o intrare spațială unică, în esență un indicator al mouse-ului, este folosită pentru a lucra cu un dispozitiv multi-touch; este ca și cum ai folosi o garnitură de creion pentru a scrie o singură scrisoare la un moment dat.

Au fost făcute câteva lucruri interesante pentru a face introducerea textului de joystick mai rapidă și mai flexibilă de către oameni ca Doug Naimo la Triggerfinger, dar viteza de intrare încă nu corespunde tiparului obișnuit cu o marjă mare și este cu adevărat valoroasă numai când metode de introducere mai bune sau mai rapide indisponibil.

Metoda mea de intrare aleasă

Toată această discuție despre slăbiciunile metodelor alternative de introducere a textului implică faptul că tastatura umilă are mai multe puncte forte care nu pot fi înlocuite sau îmbunătățite cu ușurință. Cum pot fi conservate aceste puncte forte într-un sistem de introducere a textului care nu necesită periferice hands-on? Cred că răspunsul constă în două observații critice:

  • Abilitatea de a folosi cât mai mult de 10 degete este imposibil de întâlnit sau bătut cu orice sistem cu un singur punct.
  • Layout-ul strâns, stratificat și personalizabil al tastaturii este remarcabil de eficient - dar este un design 2D și ar putea fi extins prin încorporarea unei a treia dimensiuni.

Având în vedere toate acestea, am venit cu un sistem gestural simplu, cu două mâini, pe care îl numesc "fețe". Iată cum funcționează.

Pornirea simplă: Un calculator

Înainte de a ajunge la o tastatură completă, să începem cu un numpad-well, un calculator simplu. Avem nevoie de zece cifre (0 la 9) și cinci operatori (plus, minus, împărțire, multiplicare și egal). În scopul utilizării tuturor celor zece degete, le putem rupe în două grupuri de cinci cifre și le reprezentăm pe ecran ca două piramide cu picior-picior, operatorii fiind o altă piramidă:

Fiecare deget corespunde unei fețe a fiecărei piramide. Fiecare față poate fi considerată ca o "cheie" pe o tastatură, așa că îi numesc facekeys. Mâna stângă intră în cifre 1 la 5 prin îndoirea degetelor în mod individual, în timp ce dreptul intră în cifre 6 la 0. Flexibilând același deget pe ambele mâini simultan - ambele degete, să zicem - acționează o tastă pe piramida operatorului. 

Funcțiile non-numerice (dar esențiale) includ o pumn stânga pentru a scrie valoarea afișată în memorie, o memorie de citire (și clar) a pumnului drept și două pumnii închise pentru a șterge punțile și a începe un nou calcul.

Când am testat acest lucru, am presupus că utilizatorii care țineau palmele în jos (ca în cazul în care tastați pe o tastatură) ar fi cel mai confortabil. Cu toate acestea, se pare că o poziție cu palmele orientate spre interior este mai confortabilă și permite atât o utilizare mai lungă, cât și o viteză mai mare:

De asemenea, se pare că feedback-ul vizual de pe ecran este foarte important, mai ales atunci când învățați. Putem furniza acest lucru printr-o citire numerică în stilul unui calculator familiar, dar este de asemenea bine ca piramidele să se rotească și să animeze cu fiecare lovitură, să stabilească și să consolideze legătura dintre un deget și fața sa corespunzătoare.

Acest sistem este confortabil și ușor de învățat și este, de asemenea, ușor de extensibil. De exemplu, lipsa unui punct zecimal și a unei chei de backspace devine frustrant rapid, dar aceste intrări sunt ușor de adaptat cu modificări minore. În primul rând, un val de dreapta poate acționa ca un backspace. În al doilea rând, tasta equalkey poate fi înlocuită cu un punct zecimal pentru intrare și un gest "clap" a devenit operator egal, care are rezultatul încântător de a face calcule ritmic și modest distractiv.

Extindeți acest lucru la o tastatură completă

Un calculator fără periferice este un lucru, dar o înlocuire de tastatură tipică 80+ este altceva. Există totuși câteva modalități foarte simple și practice de a continua dezvoltarea în jurul acestui concept cheie.

Tastatura standard este aranjată în patru rânduri de taste plus o bara de spațiu: numere și punctuație în partea de sus cu trei rânduri de litere dedesubt. Fiecare rând este definit de poziția sa în spațiu și putem folosi acest concept aici. 

În loc să vă mișcați mâinile spre sau departe de un punct fix, cum ar fi camera, o metodă mai flexibilă este de a face sistemul auto-referențial. Putem lăsa jucătorul să definească o distanță confortabilă între palme; jocul va stabili această distanță pe plan intern 1-Delta. Echivalentul de a ajunge la rânduri diferite de pe tastatură este atunci doar mișcarea mâinilor mai aproape sau mai departe una de alta: a 2-Delta distanță accesează "al doilea rând" chei, și 3-Delta atinge cheile de la al treilea rând.

Tine-ti mainile 1-Delta în afară, și pot scrie A la J; tine le 2-Delta în afară, și pot scrie K la T.

"Cheile acasă" sunt setate la aceasta 1-Delta distanța și efectul de tastare continuă prin cartografierea literelor și a altor caractere într-o serie de piramide care acoperă secvențial întregul alfabet. Experimentul sugerează că există 3-4 confortabile și ușor de reprodus Deltas între mâinile care ating și lățimea umărului. Utilizatorii calificați pot găsi mult mai mulți, însă inexactitatea inerentă a kinesthesiei normale este probabil să fie un plafon pentru acest factor.

Gesturile simple oferă o altă axă de expansiune. Tastatura este Schimb cheie, de exemplu, transformă fiecare cheie în două, și Ctrl și Alt cheile se extind chiar mai mult. Simple gesturi cu o singură mână ar crea exact același acces la straturile cheie, menținând în același timp viteza și flexibilitatea. De exemplu, un pumn ar putea fi Schimb cheie. O mână "pistol" poate accesa comenzile de editare sau orice număr de combinații. Utilizând gesturi cu o singură mână pentru a modifica cheile de tastare, utilizatorul poate accesa diferite caractere.

Sunteți gata să încercați singur? Mai întâi, va trebui să instalați Intel RealSense SDK și să configurați pluginul pentru Unity.

Crash Course în Unitate și RealSense

Iată o scurtă prezentare care explică cum să instalați și să configurați RealSense SDK și Unity. Vom face o simplă încercare demo care modifică dimensiunea unui obiect în funcție de mișcarea mâinii utilizatorului.

1. Ce veți avea nevoie

Vei avea nevoie:

  • O cameră 3D Intel RealSense (încorporată într-un dispozitiv sau o cameră externă)
  • Unitate Professional 4.0 sau o versiune superioară
  • Soluția gratuită Intel RealSense SDK

Puteți, de asemenea, doriți să utilizați acest plugin gratuit care vă permite să scrieți codul Unity în Visual Studio; depinde de tine.

Voi folosi nava spațială de la proiectul Unity Shooter Space, dar puteți folosi doar un cub simplu sau orice alt obiect dacă preferați.

2. Importarea setului de instrumente RealSense Unity Toolkit

Pachetul care conține Unity Toolkit pentru tehnologia Intel RealSense conține tot ce aveți nevoie pentru a manipula obiecte de joc. Pachetul Unity este localizat în \ RSSDK \ Framework \ Unitatea \ pliant. Dacă ați instalat RealSense SDK în locația implicită, RSSDK dosarul va fi în C: \ Program Files (x86) \ (pe Windows).

Puteți importa unitatea de instrumente ca orice pachet. Când faceți acest lucru, aveți opțiunile de a alege și de a alege ceea ce doriți. În scopul acestui tutorial, vom folosi valorile implicite și vom importa totul.

Așa cum puteți vedea în următoarea imagine, acum există mai multe foldere noi în dosarul Active.

  • Plugin-uri și Plugins.Managed conține DLL-uri necesare pentru utilizarea kitului Intel RealSense SDK.
  • RSUnityToolkit este dosarul care conține toate scripturile și activele pentru rularea setului de instrumente.

Nu vom intra în ceea ce toate dosarele sunt aici; O să las asta pentru tine să investighezi!

3. Configurarea scenei

Adăugați nava în scenă.

Apoi, adăugați o lumină direcțională pentru a da navei o lumină, astfel încât să puteți vedea mai bine.

Ar trebui să arate astfel:

4. Adăugarea acțiunii Scale

Pentru a adăuga capabilități de scalare la obiectul jocului, trebuie să adăugăm ScaleAction script-ul. ScaleActionScript este în conformitate cu RSUnityToolkit dosar și în acţiuni subfolder. 

Pur și simplu apucați scenariul și trageți-l și aruncați-l direct pe navă în Scenă vedere. Veți putea vedea acum ScaleAction script parametri în Inspector

Aici, am prăbușit toți parametrii pentru a arăta cele trei zone de bază ale scripturii scară: Începeți evenimentul, Scale de declanșare, si Opriți evenimentul.

5. Setarea parametrilor

Începând cu Începeți evenimentul, extindeți săgeata pentru a afișa declanșatorul implicit. În acest caz, nu vrem să folosim Gestul a fost detectat, pe care vrem să o folosim Mâna detectată

Faceți clic dreapta pe Gestul a fost detectat și selectați Elimina. Apoi, pe Începeți evenimentul„s Adăuga , faceți clic pe și selectați Mâna detectată. Sub Care mâna, selectați și alegeți ACCESS_ORDER_RIGHT_HANDS.

Acum o să stabilim Opriți evenimentul. Extindeți Opriți evenimentul și eliminați Gestul pierdut rând. Apoi, faceți clic pe Opriți evenimentul„s Adăuga butonul și alegeți Mână pierdută. Lângă Care mâna, Selectați ACCESS_ORDER_RIGHT_HANDS.

Nu va trebui să schimbăm Scale de declanșare pentru că există oricum o singură opțiune. Vom folosi doar implicit.

6. Încearcă-l

Asta e! Salvați scena, salvați proiectul și executați-l; veți putea redimensiona nava pe ecran cu un gest.

Acum e rândul tău!

Am discutat ideile din spatele introducerii de text fără a atinge un periferic și ați văzut cum să începeți cu RealSense SDK în Unity. În continuare, depinde de tine. Luați ceea ce ați învățat și experimentați! 

În primul rând, obțineți-vă demo-ul interpretând diferite caractere pe baza degetelor pe care le mutați. Apoi, reflectați acest lucru pe ecran într-un mod adecvat (nu trebuie să utilizați metoda piramidei!). Apoi, ia-o mai departe - despre încercarea unei poziții de mână diferită, cum ar fi cu palmele orientate spre aparatul de fotografiat sau o altă mișcare de intrare, cum ar fi răsucirea unui cub Rubik?

Programul Intel® Software Innovator sprijină dezvoltatorii independenți inovatoare, care au capacitatea de a crea și a demonstra proiecte în perspectivă. Inovatorii profită de oportunitățile de vorbire și demo la evenimente din industrie și întâlniri pentru dezvoltatori.

Zona dezvoltatorilor Intel® oferă instrumentele și instrucțiunile pentru dezvoltarea de aplicații cross-platform, informații despre platforme și tehnologii, eșantioane de coduri și expertiză de la egal la egal pentru a ajuta dezvoltatorii să inoveze și să reușească. Alăturați-vă comunităților noastre pentru internetul LucrurilorAndroidTehnologia Intel® RealSense ™, Codul modernDezvoltator de jocuri și ferestre pentru a descărca unelte, a accesa kit-uri dev, a-și împărtăși idei cu dezvoltatori asemănători și a participa la hackathons, concursuri, roadshows și evenimente locale.