La progettazione e l’implementazione del rilevamento manuale di Oculus Quest in Myst

Utilizzando l’API di monitoraggio delle mani aggiornata di Presence Platform, abbiamo introdotto il monitoraggio delle mani con il nostro aggiornamento più recente a Mist sulla piattaforma Meta Quest, intitolata “Mani e altro”. Siamo super entusiasti di far finalmente giocare la gente Mist su Quest senza controller fisici! In questo post, discuteremo l’evoluzione e l’iterazione dell’implementazione del rilevamento delle mani in Mist—e in particolare, aggiungendo più supporto in Unreal Engine 4.27.2.

Ospite Articolo di Hannah Gamiel

Hannah Gamiel è la direttrice dello sviluppo di Cyan, lo studio dietro l’originale ‘Myst’ giochi e ha contribuito a sviluppare il nuovo ‘Mistico (2020)‘ che include il supporto VR. Originariamente proveniente da un background puramente tecnico, ora aiuta a dirigere la produzione di tutti i titoli e gestisce gli sforzi commerciali e tecnologici presso Cyan. Ha lavorato a titoli come “Myst” (2020), “The Witness”, “Braid, Anniversary Edition”, “Obduction”, “Firmament” (in arrivo!) e altri.

Fase di progettazione e considerazioni

Progettazione della navigazione per il rilevamento delle mani

Immagine che indica dove vorresti andare. Probabilmente hai pensato di indicare, giusto? Ecco perché abbiamo scelto di utilizzare un metodo di “puntamento” per il movimento Mist.

Quando sei in modalità teletrasporto, puoi puntare dove vorresti andare e l’anello del teletrasporto appare a destinazione. Quando ‘spunta’ (estendendo il resto delle dita o semplicemente riportando il dito puntatore nel palmo della mano), il teletrasporto viene eseguito.

Quando sei in modalità di movimento fluido, puntando con la mano dominante a movimento libero (che può essere configurata nelle nostre impostazioni dei controlli, ma è la mano sinistra per impostazione predefinita) inizierai a muoverti senza intoppi nella direzione in cui stai puntando.

Durante il test del movimento con il puntamento, abbiamo scoperto che il rilevamento della mano a volte può essere inaffidabile con l’indice e il medio quando è occluso dal resto della mano. Il sistema non è sicuro se quelle dita siano completamente puntate o completamente “chiuse” nella tua mano. Abbiamo aggiunto un po’ di un fattore “sfumatura” al codice per tenere conto di un’avvio/esecuzione del movimento più stabile su questo fronte, cosa di cui parleremo un po’ più avanti quando discuteremo delle modifiche apportate al tracciamento delle mani pronto all’uso supporto in Unreal Engine.

Girando

Il metodo “punto” non funziona per tutti gli usi di navigazione. Quando si tratta di girare, inizialmente abbiamo combinato il puntamento con la rotazione del polso. Confrontando il polso del giocatore e il vettore in avanti della telecamera indicherebbe la direzione della svolta (e quanto dovrebbe essere grande la svolta).

Tuttavia, sono emerse complicazioni nei test di comfort. Nel playtest, la maggior parte dei giocatori punta in avanti con il palmo della mano rivolto verso terra, come è probabile che si faccia anche quando si tenta di indicare qualcosa al di fuori di un gioco. Ruotare il polso a sinistra ea destra (attorno all’asse in alto del polso) mentre hai il palmo rivolto verso terra è impegnativo e ha un raggio di movimento molto limitato, soprattutto se cerchi di allontanarti dal petto.

Questo problema è lo stesso anche se hai chiesto a un giocatore di indicare qualcosa di fronte a lui con i palmi delle mani rivolti verso l’interno. Puoi piegare il polso verso il tuo corpo un bel po’, ma non otterrai la stessa gamma di movimento piegando il polso lontano dal tuo corpo.

Allora come abbiamo risolto questo? Abbiamo finito per assegnare la svolta a un gesto di “pollice in su” invece di un gesto di puntamento del dito.

Immagina di dare un pollice in su. Ora gira il polso a destra e a sinistra. Nota che anche se non hai una vasta gamma di movimenti, è ancora abbastanza coerente puntare “sinistra” e “destra” con il pollice in questo gesto.

Questo è ciò su cui abbiamo deciso di attivare la modalità di rilevamento delle mani. Anche se puntare con il pollice non sembra il modo più intuitivo per girare, è vero fatto finiscono per essere il modo più comodo e coerente per farlo.

Con la rotazione a scatto, la rotazione del polso a sinistra oa destra da una posizione con il pollice in su provoca l’avvio di una singola rotazione a scatto. Devi quindi riportare la mano alla posizione “centro” (verso l’alto) per ripristinare lo snap e inoltre attendere che si verifichi un tempo di recupero molto breve per avviare nuovamente uno snap turn.

Con una rotazione fluida, ruotando il polso mentre si è in una posizione con il pollice in su, inizierai a ruotare a sinistra oa destra, una volta che lasci una “zona morta” che impedisce il verificarsi di una svolta fino a quando non superi la soglia.

Gestione dei conflitti tra movimento e pose di interazione con gli oggetti

Ovviamente, puntare il dito è un gesto troppo ampio per presumere che venga utilizzato solo per la navigazione. Le persone faranno lo stesso gesto di puntamento per premere pulsanti o interagire con altre cose nel mondo solo per abitudine o per propria aspettativa. Sarebbe piuttosto stridente avvicinarsi a (ma non Giusto fino a) un pulsante, punta il dito per premerlo, quindi all’improvviso (e indesiderato) avvicinati ad esso nel gioco (o avvia un teletrasporto involontariamente)!

Il modo in cui impediamo che si verifichino movimenti mentre il giocatore potrebbe interagire con qualcosa è impedire che qualsiasi codice si attivi quando il movimento che esegue il gesto “sposta” si trova all’interno di un certo raggio di un oggetto interagibile. Questo intervallo è stato modificato più volte per raggiungere un buon “punto debole” basato sui test di gioco.

Abbiamo scoperto che questo punto debole si trova a circa 25 cm dalla posizione spaziale mondiale dell’osso della punta del dito indice. Mist è pieno di oggetti interattivi di varie dimensioni (da piccoli pulsanti a leve molto grandi) disposti sia in ampi spazi che in corridoi stretti, quindi ci sono voluti un bel po’ di test per stabilire questo numero. Inizialmente abbiamo provato 60 cm (circa due piedi), ma ciò ha impedito il movimento quando i giocatori avevano ancora bisogno di avvicinarsi a un oggetto. Allo stesso modo, qualsiasi cosa al di sotto di 25 cm provocava l’attivazione di movimenti indesiderati del giocatore quando i giocatori cercavano di afferrare o toccare un oggetto.

Una delle nostre migliori aree di prova è stata la stanza del generatore su Myst Island, dove ti fai strada attraverso uno stretto ingresso e sei subito accolto da un pannello pieno di pulsanti. Quando l’area del test di interazione era troppo grande, i giocatori non erano in grado di spostarsi attraverso l’ingresso e verso il pannello perché rilevavano pulsanti entro la portata del dito indice.

Detto questo, 25 cm è ciò per cui ha funzionato specificamente Mist. Altri giochi potrebbero dover modificare questo numero se vogliono implementare qualcosa di simile, tenendo conto dei propri criteri.

Progettazione di interazioni con gli oggetti per il tracciamento delle mani

In questo momento, tutte le interazioni afferrabili in Mist sono costruiti per funzionare con il rilevamento delle mani: girare valvole, aprire porte, premere pulsanti, girare pagine di libri e così via.

Le interazioni si basano su ciò per cui avevamo già impostato Mist con controller Touch. Lì, premendo il pulsante dell’impugnatura si fonde automaticamente la rappresentazione della mesh nel gioco della tua mano in una posa “afferrata”, mettendo la mano in un pugno (se vuota) o afferrando un oggetto. Con il rilevamento delle mani, abbiamo aggiunto un codice che farà un’ipotesi qualificata su quando hai piegato le dita abbastanza da “afferrare” qualcosa e avviare la stessa logica di cui sopra.

Ad esempio, quando utilizzi il rilevamento delle mani e la tua mano passa sopra qualcosa che è afferrabile, il colore della tua mano diventa arancione (questo è esattamente ciò che accade quando non usi il rilevamento delle mani in Mist anche VR). Quando afferri un oggetto interagibile iniziando a piegare le dita a pugno, una sfera arancione sostituisce la maglia della tua mano e rappresenta il punto in cui la mano è attaccata all’oggetto.

Il motivo per cui abbiamo adottato questo metodo invece di creare mesh posizionabili personalizzate per le tue mani, o consentire alle tue mani/dita di sembrare interagire fisicamente con porzioni di questi oggetti, è perché volevamo che le interazioni fossero alla pari con ciò che offriamo su lato controller Touch per ora.

Tuttavia, premere i pulsanti funziona in modo diverso. Non c’è bisogno di astrazione poiché i pulsanti non sono oggetti afferrabili, e invece ti permettiamo semplicemente di premere un pulsante usando i collider di capsule generati tra ciascuna delle articolazioni delle dita sulla mesh della mano posizionabile. Per questo motivo puoi fare ogni sorta di cose strane e divertenti, come usare solo il mignolo o la nocca dell’anulare per interagire con ogni pulsante del gioco, se davvero lo desideri.

Questa implementazione differisce leggermente dal modo in cui i controller Touch interagiscono con i pulsanti nel gioco in quanto di solito ci aspettiamo che i giocatori utilizzino il pulsante dell’impugnatura sul loro controller per impostare la mano in modo che sia una mesh posizionata “punta il dito” per ottenere un pulsante di gioco accurato premere sulla loro estremità. Con il rilevamento della mano, c’è ovviamente molta più flessibilità nella posa che puoi creare con la tua mano, e quindi molti più modi per premere i pulsanti con lo stesso livello di precisione.

Menu/Interazioni UI

Per l’interazione con i menu, abbiamo finito per utilizzare lo stesso paradigma di interazione che Meta utilizza per la piattaforma Quest: un pizzico con due dita tra il pollice e l’indice, su entrambe le mani. Questo può essere utilizzato sia per aprire il nostro menu di gioco che per interagire con gli elementi nel menu. Non ha senso reinventare la ruota qui quando ai giocatori viene già insegnato a farlo nei menu a livello di sistema operativo quando abilitano per la prima volta il rilevamento delle mani su Quest!

Comunicare tutto questo al giocatore

Perché il rilevamento delle mani non è un input comune su Quest come i controller Touch e perché potrebbero esserci delle persone che giocano Mist per la prima volta (o anche per il loro primo gioco VR!), abbiamo cercato di essere premurosi con il modo in cui comunichiamo tutte queste informazioni sul tracciamento delle mani al giocatore. Ci siamo assicurati di includere un’altra versione del nostro “diagramma del controller” specificamente adattato per descrivere le interazioni di tracciamento della mano (se abilitato in Mist), e mostriamo al giocatore notifiche specializzate che dicono loro esattamente come muoversi con le mani.

Inoltre, abbiamo pensato che sarebbe stato fondamentale ricordare al giocatore come avere un’esperienza di tracciamento delle mani fluida, una volta abilitata. Il giocatore viene avvisato Mist‘s menu che la stabilità del tracciamento delle mani è molto migliore se si assicurano di trovarsi in una stanza ben illuminata e di tenere le mani all’interno del loro campo visivo.

Meta informa anche i giocatori che queste sono la chiave per un ambiente di tracciamento delle mani ben tracciato, ma riconosciamo che alcuni giocatori potrebbero entrare in un gioco non avendo analizzato prima gli avvisi di Meta su questo, quindi abbiamo scelto di ricordare alla gente nel caso se ne fossero dimenticati.

Continua a pagina 2: Modifiche al motore realizzate in Unreal »

Leave a Comment

Your email address will not be published.