Handspårning blev först tillgänglig på Oculus Quest tillbaka i slutet av 2019. Av entusiasm för denna nya inmatningsmetod publicerade jag en demo av Kubism till SideQuest med experimentellt handspårningsstöd bara några dagar senare. Självfallet hade denna initiala demo flera brister och tog inte riktigt hänsyn till teknikens begränsningar, varför jag bestämde mig för att initialt utelämna handspårningsstöd från den fullständiga utgåvan av Kubism på Oculus Store. Det krävdes mer utveckling, med stöd av lärdomar från arbetet med andra utvecklare, för att bygga något som jag gärna släppte nyligen Kubism handspårningsuppdatering. Här är en inblick i designprocessen.
Gästartikel av Thomas Van Bouwel
Thomas är en belgisk-brasiliansk VR-utvecklare som för närvarande är baserad i Bryssel. Även om hans ursprungliga bakgrund är inom arkitektur, sträcker sig hans nuvarande arbete i VR från indiespel som Kubism till företagsprogramvara för arkitekter och ingenjörer som lösa.
Den här uppdateringen bygger på lärdomar från många andra spel och utvecklare som har utforskat handspårning det senaste året (Den nyfikna berättelsen om de stulna husdjuren, Semester Simulator, Luca Mefisto, Dennys Kuhnertoch flera andra).
I den här artikeln vill jag berätta om några saker jag har lärt mig när jag tar itu med de specifika utmaningarna Kubism handinteraktioner.
Optimera för exakta interaktioner
Kubism interaktioner kretsar kring att placera små oregelbundna pusselbitar i ett pusselnät. Detta innebar att det huvudsakliga kravet för handspårning var precision, både i att plocka upp och placera bitar på gallret, samt att plocka ut bitar från ett färdigt pussel. Detta informerade de flesta designbesluten om handinmatning.
Spökhänder
Jag bestämde mig tidigt för att inte gör händerna fysikbaserade, men låt dem istället passera genom bitar tills en aktivt grips.
Detta undvek klumpigt att skjuta bort de flytande pusselbitarna när du försöker ta dem i luften, men ännu viktigare, det gjorde det lättare att plocka bitar i mitten av ett fullpussel eftersom du bara kan sticka fingrarna in och ta en bit istället för behöver räkna ut hur man fysiskt kan bända dem.
Händerna är inte fysiska, signalerade av deras transparens, vilket gör det lättare att plocka ut bitar från mitten av ett pussel.
Kontakta Grabbing
Det finns flera tillvägagångssätt för att upptäcka en användares avsikt att ta tag i och släppa föremål, som att fokusera på fingerknipningar eller total fingerledsrotation medan man kontrollerar en allmän interaktionszon i handflatan.
För Kubism små och oregelbundna pusselbitar, men det tillvägagångssätt som tycktes hantera precisionskraven bäst var ett kontaktbaserat tillvägagångssätt, där ett stycke fångas så snart tumme och index skär varandra och samlas över ett litet avstånd utan att kräva en full nypa.
Liknande den närma sig Den nyfikna berättelsen om de stulna husdjuren, fingrarna är låsta på plats så snart ett grepp startar, för att ge intrycket av ett mer stabilt utseende. Pjäsen är parenterad till handroten (handleden) medan den grips. Eftersom detta verkar vara den mest stabila spårförbandet hjälper det till att ge ett stadigare grepp och garanterar att stycket förblir i linje med de låsta fingrarna.
Stycken grips när tummen och index skär varandra och förs samman något. Rotering av index och tumme låses sedan på plats för att ge intrycket av en stabil grepp.
Så snart ett stycke fångas sparas avståndet mellan tumme och index, och en släppmarginal beräknas baserat på det avståndet. När tumme och index flyttas isär bortom denna marginal släpps biten.
Flera skyddsåtgärder försöker förhindra oavsiktliga utgåvor: vi kontrollerar inte om utsläpp när spårningsförtroende ligger under ett visst tröskelvärde, och efter att spårningsförtroende har återuppnåtts väntar vi flera bilder tills vi kontrollerar om utsläpp igen. Fingrar måste också vara bortom release-marginalen för flera ramar innan de släpps.
Felsökningsvisualisering: under ett grepp sparas det initiala greppavståndet mellan fingertopparna (yttre röd cirkel). Pjäsen släpps när fingertopparnas verkliga position rör sig bortom en viss marginal (blå cirkel).
Det finns också ett system som liknar Semestersimulatorns övergreppsmetod. På grund av bristen på haptisk feedback när du tar tag i en bit är det inte ovanligt att fingrarna glider närmare varandra under ett tag. Om de stänger bortom en viss tröskel justeras frigöringsmarginalerna för att göra det lättare att släppa stycket.
Prova själv: för att se dessa felsökningsvisualiseringar i spelet, gå till 'Inställningar> Handspårning> Felsök visualiseringar' och aktivera 'Interaktionswidgets'.
Felsökningsvisualisering: Om fingrarna glider mot varandra under ett tag över en viss tröskel (inre röd cirkel) justeras frigöringsmarginalerna så att släppa biten känns mindre "klibbig".
En gräns för detta tillvägagångssätt är att det gör det svårare att stödja grepp med andra fingrar än index. En tidigare implementering tillät också att gripa mellan långfingret och tummen, men detta ledde ofta till falska positiva effekter när man grep bitar ur ett helt pusselnät, eftersom det var svårt att utvärdera vilket finger spelaren avsåg att ta en viss bit med.
Detta skulle inte ha varit ett problem om gripande kretsade kring nypa fingrar, eftersom det resulterar i en tydligare inmatningsbinär för att bestämma användarens avsikt (på bekostnad av en mindre naturlig känsla grip pose).
Mittpunktskontroll
Förutom att kontrollera vilket stycke indexet och tummen skär varandra, sker en ytterligare kontroll vid mittpunkten mellan indexfingertoppen och tummen.
Oavsett vilken bit denna mittpunkt svävar över kommer att prioriteras för att fånga, vilket hjälper till att undvika falska positiva när en spelare försöker ta en bit i ett helt rutnät.
I exemplet nedan, om spelaren avser att ta tag i den gröna biten vid sin högra kant, skulle de oavsiktligt ta tag i den gula biten om vi inte gjorde den här mittpunktskontrollen.
Vänster: tumme, index & mittpunkt mellan fingertopparna är i gula → greppgula. Höger: tumme & index är i gult, mittpunkt är i grönt → greppgrönt
Ta tag i pusslet
Att ta tag i pusslet fungerar på samma sätt som att ta tag i pusselbitar, förutom att det initieras genom att utföra en hel nypa i gripzonen runt pusslet.
Storleken på den här zonen ökas dynamiskt när man byter från kontroller till händer. Detta gör det lite lättare att ta tag i och hjälper till att minska sannolikheten för att av misstag fånga en bit i gallret istället för själva gallret.
Gripzonen runt pusslet expanderar när man byter från kontroller till händer, vilket gör det lättare att ta tag. Även om det kräver en hel nypa, fungerar att ta tag i pusslet liknar att ta tag i pusselbitar.
Dynamisk handutjämning
Handspårningsdata som tillhandahålls av Oculus Quest kan fortfarande ha lite skakningar, även när spårningsförtroendet är högt. Detta kan faktiskt också påverka spelet eftersom jitter kan vara mycket mer märkbart när man håller pusselnätet eller en lång pusselbit vid kanten, vilket gör exakt placering av bitar på nätet svårare.
Utjämning av spårningsdata kan gå långt för att producera mer stabila utseende, men måste göras med måtta eftersom för mycket utjämning kommer att resultera i en "laggy" känsla för händerna. För att balansera detta, handutjämning Kubism justeras dynamiskt beroende på om din hand håller något eller inte.
Prova själv: för att se effekten av handutjämning, försök att stänga av den under
'Inställningar> Handspårning> Handutjämning'.
Att öka utjämningen av handpositioner medan du håller objekt hjälper till att ge ett mer stabilt grepp, vilket gör exakt placering på gallret lite enklare.
Tryck på knapparna
En sak jag märkte med Kubism original handspårningsdemo var att de flesta försökte trycka på knapparna trots att det inte stöddes vid den tiden. Därför var ett av mina mål med denna nya version av handspårning att göra knapparna faktiskt tryckbara.
Knappar kan hållas över när en radiosändning från pekfingerspetsen träffar en kollider på baksidan av knappen. Om pekfingret sedan korsar kollidorn registreras en press. Om indexet korsar kollidern utan att först sväva den registreras ingen press. Detta hjälper till att förhindra falska positiva när fingret rör sig från botten till toppen.
Det finns några fler kontroller på plats för att förhindra falska positiva effekter: raycast är inaktiverat när fingret inte är vänt mot knappen eller när spelaren inte tittar på fingret när du trycker på.
Prova själv: för att se den här felsökningsvisualiseringen i spelet, gå till 'Inställningar> Handspårning> Felsök visualiseringar' och aktivera 'Interaktionswidgets'.
Felsökningsvisualisering: en raycast från indexspetsen kontrollerar om fingret svävar över en knapp. För att förhindra falska positiva effekter är interaktionen inaktiverad när fingret inte är vänd mot knappen eller när spelaren inte tittar på fingret.
Vägledande interaktioner
En av de största utmaningarna med att bygga någon interaktion för handspårning är att, till skillnad från knappar på en kontroller som antingen trycks eller inte trycks, finns det många olika sätt människor kan försöka närma sig en interaktion med sina händer medan de förväntar sig samma resultat .
Speltestning med en mängd olika människor kan hjälpa dig att lära dig hur människor närmar sig de interaktioner som presenteras för dem och kan hjälpa till att förfina interaktionsanvisningarna som leder dem till de förväntade gesterna. Speltestning kan också hjälpa dig att lära dig några av de avvikelser du kanske vill fånga genom att lägga till lite interaktionsredundans.
Interaktionstecken
Det finns flera ledtrådar när du tar en bit. När en användare först svävar över en bit, får deras index och tumme färgen på den biten, både för att indikera att den kan fångas och för att signalera vilka fingrar som kan ta den (inspirerad av tidigare arbete av Luca Mefisto, Barrett Fox och Martin Schubert). Pjäsen är också markerad för att indikera att den kan fångas.
Flera ledtrådar indikerar också när greppet lyckas: fingertopparna blir fasta, höjdpunkterna på stycket blinkar och en kort ljudkod spelas.
Olika signaler både på handen och pusselbitguiden och bekräftar greppinteraktionen.
Knappar har flera ledtrådar för att indikera att de kan tryckas. Precis som med pusselbitar är indexfingertoppen markerad i vitt när du svävar över en knapp, vilket indikerar vilket finger som kan interagera. Som de gjorde med kontroller, sträcker sig knapparna utåt när de svävar, men den här gången kan den utökade knappen faktiskt tryckas: när indexet vidrör det följer det fingret tills det trycks ner helt, vid vilken tidpunkt en ljudkod bekräftar klicket.
En subtil skugga på knappytan anger var indexets position och avstånd till knappen och hjälper till att styra pressinteraktionen.
Olika ledtrådar styr interaktioner med knappar: knappar sträcker sig utåt när de svävar, indexfingertoppen markeras, en skugga visar var spetsen kommer att interagera och knappen följer fingret när det trycks in.
Interaktionsredundans
Eftersom vissa människor kan närma sig vissa interaktioner på oavsiktliga sätt kan det vara bra att försöka redogöra för detta där det är möjligt genom att lägga till lite redundans i hur människor kan använda sina händer för att interagera. Interaktionsspår kan fortfarande leda dem till den avsedda interaktionen, men redundans kan hjälpa till att undvika att de fastnar i onödan.
När det gäller att ta tag i bitar skulle några speltestare försöka ta bitar genom att först göra en knytnäve istället för att använda fingertopparna. Genom att låta kolliderna täcka hela fingret istället för bara fingertoppen kommer en anständig mängd av dessa första grepp fortfarande att registreras.
Jag bör notera att det här tillvägagångssättet fortfarande behöver förbättras, eftersom det också introducerar vissa problem som producerar oavsiktliga grepp om det finns många bitar som flyter runt lekområdet. Ett bättre tillvägagångssätt i framtiden kan vara att också utföra en kontroll av den totala fingerrotationen för att ta hänsyn till näven i stället.
Även om grabbing är utformad runt fingertopparna, täcker kollider på index och tumme hela fingret för att fånga olika former av grepp.
Med knapparna fanns det några speltestare som skulle försöka klämma i stället för att trycka på dem. Delvis verkade detta inträffa när de tidigare lärde sig hur man klämmer på knappar på Oculus-startskärmen, precis innan de startade spelet.
Av den anledningen kan knappar också klickas genom att nypas när de svävas, och förhoppningsvis kommer ledtrådar som det markerade indexet och släppskuggan så småningom att leda dem till att trycka på knapparna istället.
Klämning medan du svävar över knapparna registreras också som ett klick.
De första knapparna som spelare stöter på när de använder händer säger också uttryckligen "Push to Start" för att hjälpa övergången från att klämma till att trycka efter att ha kommit från Oculus Home-menyn.
Undervisningsbegränsningar
Även om kvaliteten på Quest's handspårning har förbättrats under det senaste året har den fortfarande sina begränsningar - och en spelares medvetenhet om dessa begränsningar kan ha stor inverkan på hur bra de upplever sin upplevelse.
Kubism implementerar några sätt att lära spelare om de nuvarande begränsningarna av handspårning på Quest.
När spelaren först byter till handspårning (antingen vid lanseringen eller mitt i spelet) informerar en modal dem om några bästa metoder, som att spela i ett väl upplyst utrymme och undvika att korsa händer.
När en användare byter till handspårning informerar en modal dem om begränsningar och bästa praxis. Instruktionen "Push to Start" hjälper dig att lära nya användare att knappar kan tryckas naturligt i det här spelet.
Det är viktigt att erkänna att de flesta sannolikt omedelbart avvisar sådana modeller eller snabbt glömmer riktlinjerna, så det är också viktigt att signalera varför saker kan gå fel under upplevelsen.
In Kubism, händerna blir röda för att signalera när spårningen förlorades. I vissa speltester skulle folk hålla ena handen i knäet och leka med den andra och bli förbryllade över varför deras knähanden verkar frusen. För att hjälpa till att informera fall som detta visas ett meddelande på handen för att tydligt ange varför handen är frusen om spårningsförlust kvarstår. Om spårning tappas specifikt på grund av att spelaren korsar sina händer ändras meddelandet för att informera dem om att inte göra det.
Vänster: händerna blir röda när spårningen först går förlorad. Mitten: när spårningsförlusten kvarstår informerar spelaren om vad som händer. Höger: om spårning går förlorad på grund av ockluderade händer anges detta också
För mer erfarna spelare eller spelare som föredrar att spela med en hand kan den här funktionen ersättas i inställningarna genom att händerna bleknar när de förlorar spårning istället, mer liknar beteendet i Oculus hemmeny.
De röda händerna och varningsmeddelandena kan bytas ut i inställningarna genom att blekna händer.
Framtida arbete
Handspårning på Quest har fortfarande sina begränsningar, och dock Kubism stöd för det finns redan i sin andra version, det finns fortfarande gott om utrymme för förbättringar.
Oavsett är jag glad att börja utforska och stödja dessa nya inmatningsmetoder. På kort sikt tror jag att de kan hjälpa till att göra sådana upplevelser mer tillgängliga och lättare att dela med nya VR-användare.
Mixed reality-bilder som fångats på en iPhone med Fabio Dela Anantos app Reality Mixer ger en uppfattning om hur det kan vara att spela kubism på ett AR-headset i framtiden.
På lång sikt verkar det finnas en god chans att handspårning kommer att vara go-to-ingången för framtida fristående AR-enheter, så förhoppningsvis kan den här uppdateringen vara ett första litet steg mot en AR-version av Kubism.
Om du gillade denna titt på handspårningsdesignen i kubism, var noga med att kolla in Thomas tidigare gästartikel som ger en översikt över utformningen av det bredare spelet.
Posten Fallstudie: Designen bakom 'kubismens' handspårning visades först på Vägen till VR.
- '
- "
- &
- 2019
- Om Oss
- Absolut
- Konto
- Annat
- redan
- Även
- mängd
- Annan
- app
- tillvägagångssätt
- AR
- arkitektur
- OMRÅDE
- runt
- Artikeln
- audio
- tillgänglig
- medvetenhet
- bakgrund
- blir
- BÄST
- bästa praxis
- Bit
- bryssel
- SLUTRESULTAT
- Byggnad
- bygger
- fallstudie
- fall
- brottning
- utmaningar
- kontroll
- Kontroller
- Circle
- närmare
- kommande
- förtroende
- styrenhet
- Aktuella
- datum
- Designa
- Utvecklare
- utvecklare
- Utveckling
- enheter
- DID
- olika
- avstånd
- ner
- Drop
- Tidig
- kant
- Ingenjörer
- Företag
- företagsprogramvara
- exempel
- Utom
- expanderar
- förväntat
- erfarenhet
- Erfarenheter
- förlänga
- vänd
- blekna
- Leverans
- återkoppling
- Figur
- Förnamn
- Blixt
- brister
- former
- full
- framtida
- lek
- Games
- Allmänt
- få
- Mål
- kommer
- god
- ta
- Grön
- Rutnät
- Gäst
- styra
- riktlinjer
- lyckligt
- har
- hjälpa
- hjälper
- Hög
- Markerad
- Hem
- Hur ser din drömresa ut
- How To
- HTTPS
- Tanken
- Inverkan
- genomförande
- med Esport
- ökat
- index
- inspirerat
- Avser
- uppsåt
- interaktion
- iPhone
- fråga
- problem
- IT
- sig
- lansera
- lansera
- LÄRA SIG
- lärt
- Led
- Lärdomar
- låst
- Lång
- du letar
- GÖR
- Framställning
- mer
- mest
- flytta
- Natural
- Övriga
- Personer
- fysisk
- bit
- Spela
- Spelaren
- spelare
- Massor
- möjlig
- tryck
- process
- producera
- kvalitet
- quest
- snabbt
- Verkligheten
- minska
- registrerat
- frigöra
- meddelanden
- ersättas
- Obligatorisk
- Krav
- Resultat
- screen
- kryddat
- in
- skugga
- Dela
- Kort
- liknande
- Storlek
- Small
- So
- Mjukvara
- något
- Utrymme
- specifikt
- fristående
- starta
- startar
- Ange
- Stater
- stulna
- lagra
- Läsa på
- framgångsrik
- stödja
- Som stöds
- Stödjande
- yta
- system
- Undervisning
- Teknologi
- Genom
- tid
- Tips
- tillsammans
- topp
- Spårning
- Öppenhet
- Uppdatering
- användning
- användare
- visualisering
- vr
- vänta
- Vad
- Vad är
- om
- VEM
- inom
- utan
- Arbete
- fungerar
- år
- Youtube