Maanmodule

Maanmodule

Notitie

In dit artikel wordt een verkennend voorbeeld besproken dat we hebben gemaakt in de Mixed Reality Design Labs, een plek waar we onze bevindingen over en suggesties voor de ontwikkeling van mixed reality-apps delen. Onze ontwerpgerelateerde artikelen en code zullen zich ontwikkelen naarmate we nieuwe ontdekkingen doen.

Notitie

Deze voorbeeld-app is ontworpen voor HoloLens 1e generatie.

Lunar Module is een opensource-voorbeeld-app van de Mixed Reality Design Labs van Microsoft. Meer informatie over het uitbreiden van de basisbewegingen van HoloLens met tracking met twee handen en Invoer van Xbox-controller, het maken van objecten die reactief zijn op surfacetoewijzing en het vinden van vliegtuigen, en het implementeren van eenvoudige menusystemen. Alle onderdelen van het project zijn beschikbaar voor gebruik in uw eigen mixed reality-app-ervaringen.

Demovideo

Opgenomen met HoloLens 2 met behulp van Mixed Reality Capture

Klassieke ervaringen voor Windows Mixed Reality opnieuw overwegen

Hoog in de atmosfeer, een klein schip dat doet denken aan de Apollo-module, onderzoekt methodisch het onregelmatige terrein eronder. Onze onbevreesde piloot heeft een geschikte landingsplaats. De afdaling is zwaar, maar gelukkig is deze reis al vele malen eerder gemaakt...

Originele interface van Atari's 1979 Lunar Lander
Originele interface van Atari's 1979 Lunar Lander

Lunar Lander is een arcade klassieker waarbij spelers proberen een maanlander op een vlakke plek van maanterrein te loodsen. Iedereen die geboren is in de jaren 70 heeft waarschijnlijk uren doorgebracht in een arcade met hun ogen gelijmd aan dit vectorschip dat uit de lucht verplettert. Als een speler zijn schip naar een landingsgebied navigeert, schaalt het terrein om geleidelijk meer details te onthullen. Succes betekent landen binnen de veilige drempelwaarde van horizontale en verticale snelheid. Punten worden toegekend voor de tijd die is besteed aan het landen en de resterende brandstof, met een vermenigvuldigingspunt op basis van de grootte van het landingsgebied.

Afgezien van de gameplay, bracht het arcadetijdperk van games constante innovatie van controleschema's. Van de eenvoudigste vierweg joystick- en knopconfiguraties (te zien in de iconische Pac-Man) tot de zeer specifieke en gecompliceerde schema's uit de late jaren '90 en '00 (zoals die in golfsimulators en rail shooters). Het invoerschema dat in de Maanlander-machine wordt gebruikt, is om twee redenen intrigerend: stoeprandaantrekkingskracht en onderdompeling.

Atari's Maanlander's arcade console
Atari's Lunar Lander arcade console

Waarom besloten Atari en zoveel andere gamebedrijven om input opnieuw te overwegen?

Een kind dat door een arcade loopt, zal natuurlijk geïntrigeerd zijn door de nieuwste, meest flitsende machine. Maar Lunar Lander heeft een nieuwe invoermonteur die zich onderscheidt van de massa.

Maanlander gebruikt twee knoppen voor het draaien van het schip naar links en rechts en een duwhendel om de hoeveelheid stuwkracht te regelen die het schip produceert. Deze hendel geeft gebruikers een bepaald niveau van finesse die een gewone joystick niet kan bieden. Het is ook een onderdeel dat vaak voorkomt in moderne cockpits van de luchtvaart. Atari wilde dat maanlander de gebruiker onderdompelde in het gevoel dat ze in feite een maanmodule bestuurden. Dit concept staat bekend als tactiele onderdompeling.

Tactiele onderdompeling is de ervaring van zintuiglijke feedback van het uitvoeren van terugkerende acties. In dit geval helpt de herhaalde actie van het aanpassen van de gashendel en rotatie, die onze ogen zien en onze oren horen, de speler te verbinden met het landen van een schip op het oppervlak van de maan. Dit concept kan worden gekoppeld aan het psychologische concept van 'stroom'. Wanneer een gebruiker volledig is opgenomen in een taak met de juiste combinatie van uitdaging en beloning, of eenvoudiger gezegd, bevindt hij zich in de zone.

Misschien wel het meest prominente type onderdompeling in mixed reality is ruimtelijke onderdompeling. Het hele punt van mixed reality is om onszelf voor de gek te houden door te geloven dat deze digitale objecten bestaan in de echte wereld. We synthetiseren hologrammen in onze omgeving, ruimtelijk ondergedompeld in hele omgevingen en ervaringen. Dit betekent niet dat we nog steeds geen andere soorten onderdompeling in onze ervaringen kunnen gebruiken, net zoals Atari deed met tactiele onderdompeling in maanland.

Ontwerpen met onderdompeling

Hoe kunnen we tactiele onderdompeling toepassen op een bijgewerkt volumetrische vervolg op de Atari-klassieker? Voordat u het invoerschema aanpakt, moet de gameconstructie voor driedimensionale ruimte worden aangepakt.

Surface-toewijzing visualiseren in HoloLens
Ruimtelijke toewijzing visualiseren in HoloLens

Door gebruik te maken van de omgeving van een gebruiker, hebben we in feite oneindige terreinopties voor het landen van onze maanmodule. Om het spel het meest op de oorspronkelijke titel te laten lijken, kan een gebruiker landingspads met verschillende problemen in hun omgeving manipuleren en plaatsen.

Het is veel gevraagd om te vereisen dat de gebruiker het invoerschema leert kennen, het schip controleert en een klein doel heeft om op te landen. Een succesvolle game-ervaring biedt de juiste mix van uitdaging en beloning. De gebruiker kan een moeilijkheidsgraad kiezen, waarbij in de eenvoudigste modus de gebruiker eenvoudigweg moet landen in een door de gebruiker gedefinieerd gebied op een oppervlak dat is gescand door de HoloLens. Zodra een gebruiker het spel onder de knie heeft, kan hij of zij de moeilijkheidsgraad naar eigen goeddunken opslingeren.

Invoer toevoegen voor handbewegingen

HoloLens-basisinvoer heeft slechts twee bewegingen: Air Tap en Bloom. Gebruikers hoeven geen contextuele nuances of een waslijst met specifieke bewegingen te onthouden die de interface van het platform veelzijdig en gemakkelijk te leren maken. Hoewel het systeem deze twee bewegingen mogelijk alleen beschikbaar maakt, kan HoloLens als apparaat twee handen tegelijk volgen. Onze ode aan Maanlander is een [immersive app, wat betekent dat we de basisset van gebaren kunnen uitbreiden om twee handen te gebruiken en onze eigen heerlijk tactiele middelen kunnen toevoegen voor navigatie van maanmodules.

Terugkijkend naar het oorspronkelijke controleschema , moesten we de stuwkracht en rotatie oplossen. Het voorbehoud is dat rotatie in de nieuwe context een extra as toevoegt (technisch gezien twee, maar de Y-as is minder belangrijk voor landing). De twee verschillende scheepsbewegingen lenen zich natuurlijk om aan elke hand in kaart te worden gebracht:

Tik en sleep beweging om de lander op alle drie de assen te draaien
Tik en sleep beweging om de lander op alle drie de assen te draaien

Thrust

De hendel op de originele arcademachine, toegewezen aan een schaal van waarden, hoe hoger de hendel werd verplaatst, hoe meer stuwkracht op het schip werd toegepast. Een belangrijke nuance om hier op te wijzen, is hoe de gebruiker zijn hand van het besturingselement kan afhalen en een gewenste waarde kan behouden. We kunnen effectief tikken en slepen gebruiken om hetzelfde resultaat te bereiken. De stuwkrachtwaarde begint bij nul. De gebruiker tikt en sleept om de waarde te verhogen. Op dat moment konden ze het laten gaan om het te onderhouden. Elke wijziging van de waarde voor tik- en sleepbewegingen is de delta van de oorspronkelijke waarde.

Rotatie

Dit is een beetje lastiger. Het hebben van holografische draaiknoppen om op te tikken, zorgt voor een vreselijke ervaring. Er is geen fysieke controle om te gebruiken, dus het gedrag moet afkomstig zijn van manipulatie van een object dat de lander vertegenwoordigt, of met de lander zelf. We hebben een methode bedacht met behulp van tikken en slepen, waarmee een gebruiker deze effectief kan 'pushen en trekken' in de richting die hij of zij wil. Telkens wanneer een gebruiker tikt en vasthoudt, wordt het punt in de ruimte waar de beweging is geïnitieerd, de oorsprong voor rotatie. Slepen vanaf de oorsprong converteert de delta van de vertaling van de hand (X,Y,Z) en past deze toe op de delta van de rotatiewaarden van de lander. Of eenvoudiger: door het schip naar links <-> rechts, omhoog <-> omlaag, naar voren <-> terug te slepen in ruimten, wordt het schip dienovereenkomstig gedraaid.

Omdat de HoloLens twee handen kan volgen, kan de draaiing aan de rechterhand worden toegewezen terwijl de stuwkracht door de linkerkant wordt gecontroleerd. Finesse is de drijvende factor voor succes in dit spel. Het gevoel van deze interacties heeft de absolute hoogste prioriteit. Vooral in de context van tactiele onderdompeling. Een schip dat te snel reageert, zou moeilijk te sturen zijn, terwijl een te langzaam schip de gebruiker zou moeten "duwen en trekken" op het schip voor een onhandig lange tijd.

Invoer toevoegen voor gamecontrollers

Hoewel handbewegingen op de HoloLens een nieuwe methode voor fijnmazige controle bieden, is er nog steeds een bepaald gebrek aan 'echte' tactiele feedback die u krijgt van analoge besturingselementen. Door een Xbox-gamecontroller aan te sluiten, kunnen we dit gevoel van lichamelijkheid terugbrengen terwijl we de besturingssticks gebruiken om fijnmazige controle te behouden.

Er zijn meerdere manieren om het relatief eenvoudige besturingsschema toe te passen op de Xbox-controller. Omdat we proberen zo dicht mogelijk bij de oorspronkelijke arcade-opstelling te blijven, wijst Thrust het beste toe aan de triggerknop. Deze knoppen zijn analoge besturingselementen, wat betekent dat ze meer dan eenvoudige aan- en uitstatussen hebben, ze reageren in feite op de mate van druk die erop wordt uitgeoefend. Dit geeft ons een vergelijkbare constructie als de duwhendel. In tegenstelling tot het oorspronkelijke spel en het handgebaar, snijdt deze besturing de stuwkracht van het schip zodra een gebruiker stopt met het uitoefenen van druk op de trekker. Het geeft de gebruiker nog steeds dezelfde mate van finesse als de oorspronkelijke arcade spel deed.

Linkervingerstick is toegewezen aan Yaw and Roll, rechtervingerstick is toegewezen aan Pitch and Roll
Linker duimstick is toegewezen om te geeuwen en rollen; rechter duimstick is toegewezen aan pitch en roll

De dubbele duimsticks lenen zich van nature voor het regelen van de rotatie van het schip. Helaas zijn er drie assen waarop het schip kan draaien en twee duimsticks die beide twee assen ondersteunen. Dit komt niet overeen betekent dat één duimstick één as bestuurt; of er is overlap van assen voor de duimsticks. De voormalige oplossing voelde zich uiteindelijk 'gebroken' omdat duimsticks inherent hun lokale X- en Y-waarden mengen. De laatste oplossing vereiste enige tests om te bepalen welke redundante assen het meest natuurlijk aanvoelen. In het laatste voorbeeld wordt gebruikgemaakt van geeuw en rol (Y- en X-assen) voor de linkervingerstick en pitch and roll (Z- en X-assen) voor de rechtervingerstick. Dit voelde het meest natuurlijk omdat rollen onafhankelijk goed lijkt te combineren met geeuw en pek. Als kanttekening: het gebruik van beide duimsticks voor rollen gebeurt ook om de rotatiewaarde te verdubbelen; het is best leuk om de lander lussen te laten doen.

Deze voorbeeld-app laat zien hoe ruimtelijke herkenning en tactiele onderdompeling een ervaring aanzienlijk kunnen veranderen dankzij de uitbreidbare invoermodaliteiten van Windows Mixed Reality. Hoewel maanlander bijna 40 jaar oud is, zullen de concepten die met die kleine achthoek-met-benen worden blootgesteld, voor altijd blijven leven. Als je je de toekomst voorstelt, waarom kijk je dan niet naar het verleden?

Technische details

U vindt scripts en prefabs voor de voorbeeld-app Lunar Module op de GitHub Mixed Reality Design Labs.

Over de auteur

Afbeelding van Addison Linville Addison Linville
UX-Designer @Microsoft

Zie ook