Modulo lunareLunar Module

Nota

Questo articolo illustra un esempio esplorativo creato nei laboratori di progettazione della realtà mista, un posto in cui si condividono le informazioni e suggerimenti per lo sviluppo di app di realtà miste.This article discusses an exploratory sample we’ve created in the Mixed Reality Design Labs, a place where we share our learnings about and suggestions for mixed reality app development. Gli articoli e il codice correlati alla progettazione si evolveranno Man mano che si effettuano nuove individuazioni.Our design-related articles and code will evolve as we make new discoveries.

Il modulo Lunar è un'app di esempio Open Source di Microsoft Mixed Reality Design Labs.Lunar Module is an open-source sample app from Microsoft's Mixed Reality Design Labs. Informazioni su come estendere i movimenti di base di HoloLens con rilevamento bidirezionale e input del controller Xbox, creare oggetti reattivi per il mapping di superficie e la ricerca di piani e implementare semplici sistemi di menu.Learn how to extend HoloLens' base gestures with two-handed tracking and Xbox controller input, create objects that are reactive to surface mapping and plane finding, and implement simple menu systems. Tutti i componenti del progetto sono disponibili per l'uso nella propria esperienza di app in realtà mista.All of the project's components are available for use in your own mixed reality app experiences.

Video demoDemo video

Registrato con HoloLens 2 con l'acquisizione di realtà mistaRecorded with HoloLens 2 using Mixed Reality Capture

Ripensare le esperienze classiche per la realtà mista di WindowsRethinking classic experiences for Windows Mixed Reality

Nel suo ambiente, una piccola nave che ricorda il modulo Apollo analizza metodicamente il terreno frastagliato riportato di seguito.High up in the atmosphere, a small ship reminiscent of the Apollo module methodically surveys jagged terrain below. Il nostro pilota impavido è un'area di destinazione adatta.Our fearless pilot spots a suitable landing area. La discesa è ardua ma fortunatamente questo percorso è stato fatto più volte prima...The descent is arduous but thankfully, this journey has been made many times before...

Interfaccia originale del lander lunare 1979 di AtariOriginal interface from Atari’s 1979 Lunar Lander
Interfaccia originale del lander lunare 1979 di AtariOriginal interface from Atari’s 1979 Lunar Lander

Lunar Lander è un classico arcade in cui i giocatori tentano di pilotare una luna Lander in una posizione piatta di terreno lunare.Lunar Lander is an arcade classic where players attempt to pilot a moon lander onto a flat spot of lunar terrain. Tutti gli utenti nati negli anni '70 hanno impiegato ore in un arcade con i loro occhi incollati a questa nave vettoriale.Anyone born in the 1970s has most likely spent hours in an arcade with their eyes glued to this vector ship plummeting from the sky. Quando un giocatore sposta la propria spedizione verso un'area di destinazione, il terreno viene ridimensionato per visualizzare progressivamente più dettagli.As a player navigates their ship toward a landing area, the terrain scales to reveal progressively more detail. Success indica l'atterraggio entro la soglia sicura della velocità orizzontale e verticale.Success means landing within the safe threshold of horizontal and vertical speed. I punti vengono assegnati per il tempo impiegato per l'atterraggio e il carburante rimanente, con un moltiplicatore in base alle dimensioni dell'area di destinazione.Points are awarded for time spent landing and remaining fuel, with a multiplier based on the size of the landing area.

Oltre al gameplay, l'era del gioco arcade ha portato a un'innovazione costante degli schemi di controllo.Aside from the gameplay, the arcade era of games brought constant innovation of control schemes. Dalle più semplici configurazioni di pulsanti e joystick a quattro vie (viste nel Pac-Maniconico) agli schemi estremamente specifici e complicati rilevati negli ultimi 90 s e 00s (ad esempio, i simulatori di golf e i cacciatori di treni).From the simplest four-way joystick and button configurations (seen in the iconic Pac-Man) to the highly specific and complicated schemes seen in the late 90 s and 00s (like those in golf simulators and rail shooters). Lo schema di input usato nel computer Lunar Lander è interessante per due motivi: limitare il fascino e l'immersione.The input scheme used in the Lunar Lander machine is intriguing for two reasons: curb appeal and immersion.

Console arcade del Lunar Lander di AtariAtari’s Lunar Lander’s arcade console
Console della Galleria Lunar Lander di AtariAtari's Lunar Lander arcade console

Perché Atari e molte altre aziende di gioco scelgono di ripensare l'input?Why did Atari and so many other game companies decide to rethink input?

Un bambino che cammina attraverso una galleria sarà naturalmente intrigante dal più recente computer sgargiante.A kid walking through an arcade will naturally be intrigued by the newest, flashiest machine. Ma Lunar Lander presenta un nuovo meccanico di input che si è rivelato fuori dalla folla.But Lunar Lander features a novel input mechanic that stood out from the crowd.

Lunar Lander usa due pulsanti per ruotare la nave a sinistra e a destra e una levetta di Spinta per controllare la quantità di spinta prodotta dalla nave.Lunar Lander uses two buttons for rotating the ship left and right and a thrust lever to control the amount of thrust the ship produces. Questa leva offre agli utenti un certo livello di Finesse che non può essere fornito da un normale joystick.This lever gives users a certain level of finesse a regular joystick can’t provide. Si tratta anche di un componente comune ai moderni cockpit di aviazione.It also happens to be a component common to modern aviation cockpits. Atari ha voluto Lunar Lander per immergere l'utente nel sentimento che era in realtà pilota di un modulo lunare.Atari wanted Lunar Lander to immerse the user in the feeling that they were in fact piloting a lunar module. Questo concetto è noto come " immersione tattile".This concept is known as tactile immersion.

L'immersione tattile è l'esperienza di feedback sensoriale per eseguire azioni ripetitive.Tactile immersion is the experience of sensory feedback from doing repetitive actions. In questo caso, l'azione ripetitiva di regolazione della leva e della rotazione della limitazione, che i nostri occhi vedono e i nostri orecchi, consentono di connettere il giocatore all'atto di atterrare una nave sulla superficie della luna.In this case, the repetitive action of adjusting the throttle lever and rotation, which our eyes see and our ears hear, helps connect the player to the act of landing a ship on the moon’s surface. Questo concetto può essere associato al concetto psicologico di "Flow".This concept can be tied to the psychological concept of "flow." Quando un utente viene completamente assorbito in un'attività con la giusta combinazione di sfida e ricompensa, o più semplicemente, sono "nella zona".Where a user is fully absorbed in a task that has the right mixture of challenge and reward, or put more simply, they’re “in the zone.”

Probabilmente, il tipo più importante di immersione nella realtà mista è l'immersione spaziale.Arguably, the most prominent type of immersion in mixed reality is spatial immersion. L'intero punto della realtà mista consiste nel credere che questi oggetti digitali esistano nel mondo reale.The whole point of mixed reality is to fool ourselves into believing these digital objects exist in the real world. Stiamo sintetizzando gli ologrammi negli ambienti, a livello spaziale in tutti gli ambienti e le esperienze.We’re synthesizing holograms in our surroundings, spatially immersed in entire environments and experiences. Questo non significa che non possiamo ancora impiegare altri tipi di immersione nelle nostre esperienze, proprio come Atari ha fatto con l'immersione tattile in Lunar Lander.This doesn’t mean we can’t still employ other types of immersion in our experiences just as Atari did with tactile immersion in Lunar Lander.

Progettazione con l'immersioneDesigning with immersion

In che modo è possibile applicare l'immersione tattile a un sequel aggiornato e volumetrico al classico di Atari?How might we apply tactile immersion to an updated, volumetric sequel to the Atari classic? Prima di affrontare lo schema di input, è necessario risolvere il costrutto di gioco per lo spazio tridimensionale.Before tackling the input scheme, the game construct for three-dimensional space needs to be addressed.

Visualizzazione del mapping delle superfici in HoloLensVisualizing surface mapping in HoloLens
Visualizzazione del mapping spaziale in HoloLensVisualizing spatial mapping in HoloLens

Sfruttando gli ambienti di un utente, sono disponibili opzioni di terreno infinite per l'atterraggio del modulo lunare.By leveraging a user’s surroundings, we effectively have infinite terrain options for landing our lunar module. Per rendere il gioco più simile al titolo originale, un utente potrebbe potenzialmente manipolare e collocare i riscontri di atterraggio con diverse difficoltà nell'ambiente.To make the game most like the original title, a user could potentially manipulate and place landing pads of varying difficulties in their environment.

Flying the Lunar ModuleFlying the Lunar Module
Flying the Lunar ModuleFlying the Lunar Module

Richiedere all'utente di apprendere lo schema di input, controllare la spedizione e avere una piccola destinazione su cui atterrare è molto richiesta.Requiring the user to learn the input scheme, control the ship, and have a small target to land on is a lot to ask. Un'esperienza di gioco con successo offre la giusta combinazione di sfida e premi.A successful game experience features the right mix of challenge and reward. L'utente può scegliere un livello di difficoltà, con la modalità più semplice per richiedere all'utente di atterrare correttamente in un'area definita dall'utente in una superficie analizzata da HoloLens.The user can choose a level of difficulty, with the easiest mode simply requiring the user to successfully land in a user-defined area on a surface scanned by the HoloLens. Una volta che un utente ha ottenuto il blocco del gioco, può quindi alzare di livello la difficoltà nel modo più appropriato.Once a user gets the hang of the game, they can then crank up the difficulty as they see fit.

Aggiunta dell'input per i movimenti della manoAdding input for hand gestures

L'input di base di HoloLens ha solo due movimenti: tocco aereo e Bloom.HoloLens base input has only two gestures - Air Tap and Bloom. Gli utenti non devono ricordare le sfumature contestuali o un elenco di movimenti specifici che rendono l'interfaccia della piattaforma sia versatile che facile da imparare.Users don’t need to remember contextual nuances or a laundry list of specific gestures that makes the platform’s interface both versatile and easy to learn. Sebbene il sistema possa esporre solo questi due movimenti, HoloLens come dispositivo è in grado di tenere traccia di due lancette contemporaneamente.While the system may only expose these two gestures, HoloLens as a device is can track two hands at once. Il nostro inno a Lunar Lander è un'app immersiva, che consente di estendere il set di movimenti di base per sfruttare due mani e aggiungere i nostri mezzi gradevoli per la navigazione dei moduli lunari.Our ode to Lunar Lander is an [immersive app, which means we can extend the base set of gestures to leverage two hands and add our own delightfully tactile means for lunar module navigation.

Tornando allo schema di controllo originale, era necessario risolvere i problemi di spinta e rotazione.Looking back at the original control scheme, we needed to solve for thrust and rotation. L'avvertenza è la rotazione nel nuovo contesto che aggiunge un asse aggiuntivo (tecnicamente due, ma l'asse Y è meno importante per l'atterraggio).The caveat is rotation in the new context adds an additional axis (technically two, but the Y axis is less important for landing). I due movimenti di spedizione distinti si prestano naturalmente per essere mappati a ogni mano:The two distinct ship movements naturally lend themselves to be mapped to each hand:

Toccare e trascinare movimento per ruotare il lander su tutti e tre gli assiTap and drag gesture to rotate lander on all three axes
Toccare e trascinare movimento per ruotare il lander su tutti e tre gli assiTap and drag gesture to rotate lander on all three axes

SpintaThrust

La levetta sul computer arcade originale è stata mappata a una scala di valori, più alta è stata spostata, più la Spinta è stata applicata alla nave.The lever on the original arcade machine mapped to a scale of values, the higher the lever was moved the more thrust was applied to the ship. Una sfumatura importante da sottolineare è il modo in cui l'utente può prendere la mano del controllo e mantenere un valore desiderato.An important nuance to point out here is how the user can take their hand off of the control and maintain a desired value. Per ottenere lo stesso risultato, è possibile usare efficacemente il comportamento di tocco e di trascinamento.We can effectively use tap-and-drag behavior to achieve the same result. Il valore di Spinta inizia da zero.The thrust value starts at zero. L'utente tocca e trascina per aumentare il valore.The user taps and drags to increase the value. A questo punto, è possibile continuare a gestirlo.At that point they could let go to maintain it. Qualsiasi modifica del valore del movimento tocco e trascinamento sarà il Delta del valore originale.Any tap-and-drag gesture value change would be the delta from the original value.

RotazioneRotation

Questo è un po' più complesso.This is a little more tricky. Con i pulsanti "ruota" olografici per toccare Crea un'esperienza terribile.Having holographic “rotate” buttons to tap makes for a terrible experience. Non esiste un controllo fisico da sfruttare, quindi il comportamento deve derivare dalla manipolazione di un oggetto che rappresenta il lander o dal lander stesso.There isn’t a physical control to leverage, so the behavior must come from manipulation of an object representing the lander, or with the lander itself. È stato creato un metodo che usa il tocco e il trascinamento, che consente a un utente di eseguire in modo efficace il push e il pull nella direzione desiderata.We came up with a method using tap-and-drag, which enables a user to effectively “push and pull” it in the direction they want it to face. Ogni volta che un utente tocca e possiede, il punto nello spazio in cui è stato avviato il movimento diventa l'origine per la rotazione.Anytime a user taps and holds, the point in space where the gesture was initiated becomes the origin for rotation. Il trascinamento dall'origine converte il Delta della traslazione della mano (X, Y, Z) e lo applica al delta dei valori di rotazione del lander.Dragging from the origin converts the delta of the hand's translation (X,Y,Z) and applies it to the delta of the lander's rotation values. O più semplicemente, il trascinamento di sinistra <-> a destra, verso l'alto < > verso il basso, < > di nuovo negli spazi ruota la nave di conseguenza.Or more simply, dragging left <-> right, up <-> down, forward <-> back in spaces rotates the ship accordingly.

Poiché il HoloLens può tenere traccia di due mani, la rotazione può essere assegnata a destra mentre la spinta viene controllata da sinistra.Since the HoloLens can track two hands, rotation can be assigned to the right hand while thrust is controlled by the left. Finesse è il fattore determinante per il successo in questo gioco.Finesse is the driving factor for success in this game. L' aspetto di queste interazioni è la massima priorità assoluta.The feel of these interactions is the absolute highest priority. In particolare nel contesto dell'immersione tattile.Especially in context of tactile immersion. Una nave che reagisce troppo rapidamente sarebbe difficile da guidare, mentre una troppo lenta richiederebbe all'utente di effettuare il push e il pull sulla nave per un periodo di tempo troppo lungo.A ship that reacts too quickly would be difficult to steer, while one too slow would require the user to “push and pull” on the ship for an awkwardly long amount of time.

Aggiunta dell'input per i controller di giocoAdding input for game controllers

Sebbene i movimenti della mano sul HoloLens forniscano un nuovo metodo di controllo granulare, c'è ancora una certa mancanza di feedback tattile "vero" ottenuto dai controlli analoghi.While hand gestures on the HoloLens provide a novel method of fine-grain control, There's still a certain lack of 'true' tactile feedback that you get from analog controls. La connessione di un controller di gioco Xbox ci permette di riportare questo senso di fisico, sfruttando al tempo stesso i bastoncini di controllo per mantenerne il controllo.Connecting an Xbox game controller allows us to bring back this sense of physicality while leveraging the control sticks to keep fine-grain control.

Esistono diversi modi per applicare lo schema di controllo relativamente diretto al controller Xbox.There are multiple ways to apply the relatively straight-forward control scheme to the Xbox controller. Poiché si sta tentando di rimanere nel modo più vicino possibile alla configurazione del arcade originale, le mappe di Spinta migliorano con il pulsante trigger.Since we're trying to stay as close to the original arcade set up as possible, Thrust maps best to the trigger button. Questi pulsanti sono controlli analoghi, ovvero hanno più di semplici stati on e off , rispondono effettivamente al grado di pressione su di essi.These buttons are analog controls, meaning they have more than simple on and off states, they actually respond to the degree of pressure put on them. In questo modo si ottiene un costrutto simile a quello della levetta di Spinta.This gives us a similar construct as the thrust lever. A differenza del gioco originale e del movimento della mano, questo controllo taglierà la spinta della nave una volta che un utente smette di esercitare pressioni sul trigger.Unlike the original game and the hand gesture, this control will cut the ship's thrust once a user stops putting pressure on the trigger. Offre comunque all'utente lo stesso livello di raffinatezza del gioco arcade originale.It still gives the user the same degree of finesse as the original arcade game did.

Viene eseguito il mapping di levetta a sinistra per l'imbardata e il roll, a destra levetta è mappato a Pitch and rollLeft thumbstick is mapped to Yaw and Roll, Right thumbstick is mapped to Pitch and Roll
Viene eseguito il mapping di levetta a sinistra per l'imbardata e il roll; il levetta destro è mappato a Pitch and rollLeft thumbstick is mapped to yaw and roll; right thumbstick is mapped to pitch and roll

Il doppio ThumbSticks si presta naturalmente a controllare la rotazione delle spedizioni.The dual thumbsticks naturally lend themselves to controlling ship rotation. Sfortunatamente, esistono tre assi su cui la nave può ruotare e due ThumbSticks che supportano entrambi due assi.Unfortunately, there are three axes on which the ship can rotate and two thumbsticks which both support two axes. Questa mancata corrispondenza indica che uno levetta controlla un asse; oppure è presente una sovrapposizione di assi per ThumbSticks.This mismatch means either one thumbstick controls one axis; or there's overlap of axes for the thumbsticks. La soluzione precedente si è risentita "Broken" poiché ThumbSticks incorporava intrinsecamente i valori X e Y locali.The former solution ended up feeling "broken" since thumbsticks inherently blend their local X and Y values. La seconda soluzione richiedeva alcuni test per individuare gli assi ridondanti che si ritengono più naturali.The latter solution required some testing to find which redundant axes feel the most natural. L'esempio finale usa l' imbardata e il Roll (assi Y e x) per la levetta sinistra e il pitch and Roll (assi Z e x) per il levetta destro.The final sample uses yaw and roll (Y and X axes) for the left thumbstick, and pitch and roll (Z and X axes) for the right thumbstick. Si tratta di una cosa più naturale, perché il Roll sembra essere abbinato in modo indipendente con imbardata e pitch.This felt the most natural as roll seems to independently pair well with yaw and pitch. Si noti che l'uso di entrambi ThumbSticks per Roll viene eseguito anche per raddoppiare il valore di rotazione. è piuttosto divertente avere i cicli del lander.As a side note, using both thumbsticks for roll also happens to double the rotation value; it's pretty fun to have the lander do loops.

Questa app di esempio dimostra come il riconoscimento spaziale e l'immersione tattile possano modificare significativamente un'esperienza grazie alle modalità di input estendibili della realtà mista di Windows.This sample app demonstrates how spatial recognition and tactile immersion can significantly change an experience thanks to Windows Mixed Reality's extensible input modalities. Anche se Lunar Lander può essere prossimo a 40 anni, i concetti esposti con tale piccolo ottagono con le gambe rimarranno sempre attivi.While Lunar Lander may be nearing 40 years in age, the concepts exposed with that little octagon-with-legs will live on forever. Quando si immagina il futuro, perché non esaminare il passato?When imagining the future, why not look at the past?

Dettagli tecniciTechnical details

È possibile trovare script e prefabbricati per l'app di esempio Lunar Module in mixed really design Labs GitHub.You can find scripts and prefabs for the Lunar Module sample app on the Mixed Reality Design Labs GitHub.

Informazioni sull'autoreAbout the author

Picture of Addison Linville Addison LinvilleAddison Linville
Designer di esperienza utente @MicrosoftUX Designer @Microsoft

Vedere ancheSee also