De maak van Galaxy Explorer voor HoloLens 2
Welkom bij de bijgewerkte Galaxy Explorer voor HoloLens 2 toepassing! Galaxy Explorer is oorspronkelijk ontwikkeld als een opensource-toepassing voor HoloLens (eerste generatie) via het Share Your Idea-programma en is een van de eerste mixed reality-ervaringen die veel mensen hadden. Nu werken we deze bij voor de nieuwe en interessante mogelijkheden van HoloLens 2.
Als een van de Microsoft Mixed Reality Studio's ontwikkelen we meestal oplossingen van commerciële kwaliteit en ontwikkelen we & testen op doelplatforms tijdens het creatieve en ontwikkelproces. We beginnen aan dit project met behulp van de frameworks en hulpprogramma's (zoals MRTK) zodra deze beschikbaar komen voor ons en de community.
Net als de oorspronkelijke Galaxy Explorer, zal ons teamhet project opensourcen op GitHub om ervoor te zorgen dat de community volledige toegang heeft. We zullen ook onze reis hier in volledige transparantie documenteren over hoe we van MRTK v1 naar MRTK v2 zijn geport, de ervaring hebben verbeterd met nieuwe functies die beschikbaar zijn in HoloLens 2 en ervoor hebben gezorgd dat Galaxy Explorer een ervaring met meerdere platforms bleef. Of je nu Galaxy Explorer bekijkt op HoloLens (eerste generatie), HoloLens 2, een Windows Mixed Reality headset of op je Windows 10 desktop, we willen er zeker van zijn dat je net zo geniet als wij!
Deze pagina wordt uitgebreid naarmate we het project doorlopen, met koppelingen naar meer gedetailleerde artikelen, code, ontwerpartefacten en aanvullende MRTK-documentatie om u een insider-blik te geven op het project.
App downloaden uit de Microsoft Store in HoloLens 2
Als u HoloLens 2 apparaat hebt, kunt u de app rechtstreeks downloaden en installeren op uw apparaat.
Nadenken over interacties
Als creatieve studio waren we in extase over het voorrecht om Galaxy Explorer over te zetten naar HoloLens 2. We wisten vanaf het begin dat we wilden dat de ervaring een viering van het nieuwe apparaat was en om te laten zien dat Mixed Reality empowerment alleen wordt beperkt door de verbeelding.
met HoloLens 2 kunnen gebruikers hologrammen aanraken, grijpen en verplaatsen op een manier die natuurlijk aanvoelt. Ze reageren veel op echte objecten. Volledig gearticuleerde handmodellen zijn geweldig, omdat gebruikers hiermee kunnen doen wat natuurlijk aanvoelt. Iedereen pakt bijvoorbeeld een kopje iets anders op en in plaats van een bepaalde manier af te dwingen om het te doen, HoloLens 2 het op uw manier kunt doen.
Dit is een belangrijke wijziging ten opzichte van de op Air Tap gebaseerde interfaces op HoloLens-apparaten van de eerste generatie. In plaats van op afstand met hologrammen te werken, kunnen gebruikers nu 'van dichtbij en persoonlijk' zijn. Bij het overzetten van bestaande ervaringen naar HoloLens 2 of het plannen van nieuwe ervaringen, is het belangrijk om vertrouwd te raken met de directe manipulatie van hologrammen.
Directe manipulatie versus de enorme afstanden in de ruimte
Het is een magische ervaring om een planeet te pakken en in je hand te houden. De uitdaging met deze benadering is de grootte van het zonnestelsel – het is enorm! De gebruiker moet rond zijn kamer lopen om dicht bij elke planeet te komen om ermee te communiceren.
Om gebruikers in staat te stellen om te communiceren met objecten die verder weg zijn, biedt MRTK handstralen die uit het midden van de palm van de gebruiker schieten, die fungeren als een verlengstuk van de hand. Aan het einde van de straal wordt een donutvormige cursor bevestigd om aan te geven waar de straal een doelobject doorkruist. Het object waarop de cursor terechtkomt, kan vervolgens gesturale opdrachten van de hand ontvangen.
In de oorspronkelijke versie van Galaxy Explorer richt de gebruiker zich op een planeet met de staarcursor en tikt vervolgens in de lucht om deze dichterbij te noemen. De eenvoudigste manier om de ervaring over te zetten naar HoloLens 2 is door dit gedrag te nemen en handstralen te gebruiken om planeten te selecteren. Hoewel dit functioneel was, wilden we meer.
Terug naar de tekentafel
We kwamen samen om te bedenken wat er bovenop de bestaande interacties kon worden gebouwd. De gedachte was: Hoewel HoloLens 2 gebruikers in staat stelt om op natuurlijke, realistische manieren met hologrammen te communiceren, zijn hologrammen per definitie niet echt. Dus zolang een interactie plausibel is voor de gebruiker, maakt het niet uit of die interactie mogelijk is met een echt object of niet- we kunnen het mogelijk maken.
Een concept dat we verkenden was gebaseerd op telekinese : de kracht om objecten te manipuleren met je geest. Vaak te zien in superheldenfilms, zou een persoon de hand reik met zijn geest en een object in zijn open hand roepen. We hebben wat meer met het idee gespeeld en een korte schets gemaakt van hoe het concept zou kunnen werken.
De gebruiker richt de handstraal naar een planeet, die doelfeedback zou geven. Als de gebruiker vervolgens zijn open hand uitsteekt, zou de planeet naar de gebruiker worden getrokken door een magische kracht totdat deze dichtbij genoeg is om het te grijpen. Vandaar onze naam voor de interactie: force grab. Als de gebruiker de planeet met zijn open hand weg zou duwen, zou het weer terugkeren naar zijn baan.
Prototypen van grab forceren
Vervolgens hebben we meerdere prototypes gemaakt om het concept te testen: Hoe voelt de interactie in het algemeen? Moet het aangeroepen object voor de gebruiker stoppen of aan de hand blijven totdat het object wordt geplaatst? Moet het aangeroepen object de grootte of schaal wijzigen tijdens het aanroepen?
Force Grab implementeren in de toepassing
Toen we de kracht op planeten probeerden te grijpen, realiseerden we ons dat we de schaal van het zonnestelsel moesten veranderen. Het bleek dat een nauwkeurige, middelgrote weergave van het zonnestelsel moeilijk is voor gebruikers om te begrijpen en te navigeren - ze wisten niet waar ze moesten zoeken. Een kleine weergave maakte sommige planeten echter te klein om gemakkelijk te kunnen worden geselecteerd. Als gevolg hiervan werd de grootte van de planeten en de afstand tussen zonneobjecten ontworpen om comfortabel te voelen in een middelgrote ruimte met behoud van relatieve nauwkeurigheid.
In de latere stadia van onze ontwikkelingssprint hadden we het geluk dat we collega MSFT Mixed Reality experts in huis hadden, dus we gingen aan de slag met het verkrijgen van hun input als deskundige testers en het uitvoeren van snelle iteraties op de interactie met force grab.
In beeld: Jenny Kam, Senior Design Lead, test een work-in-progress van Galaxy Explorer.
Affordances toevoegen voor targeting
Toen we experimenteerde met HoloLens 2, ontdekten we dat hoewel de nieuwe interacties natuurlijk en intuïtief zijn, hologrammen hetzelfde blijven: zonder gewicht of voelbare sensaties. Omdat hologrammen geen natuurlijke feedback bieden die mensen gewend zijn te ontvangen wanneer ze met objecten werken, moesten we ze maken.
We hebben nagedacht over de visuele en audiofeedback die gebruikers zouden krijgen voor de verschillende fasen van hun interacties, en omdat het force grab-mechanisme centraal staat bij de interactie met Galaxy Explorer, hebben we veel iteraties uitgevoerd. Het doel was om de juiste balans te vinden tussen audio en visuele feedback voor elke fase van de interactie: focussen op het beoogde object, aanroepen naar de gebruiker en het vervolgens vrijgeven. Wat we hebben geleerd, is dat er meer audio- en visuele feedback nodig was om de interactie te versterken dan we gewend waren voor HoloLens (eerste generatie).
Affordances toevoegen voor geforceerd grijpen
Zodra we het basismechanisme voor force grab met audio- en visuele affordances hadden, hebben we gekeken hoe we het selecteren van planeten gebruiksvriendelijker kunnen maken. Er waren twee belangrijke dingen om aan te pakken: omdat het zonnestelsel een 3D-bewegende interface is, is het voor gebruikers extra complex om te leren hoe ze objecten consistent kunnen targeten. Dit werd verergerd door het feit dat de handstraal snel een object selecteert, waardoor planeten ongelooflijk snel naar de gebruiker bewegen.
We hebben dit benaderd met een drieledige oplossing. Het eerste was vrij intuïtief: vertraag het selectieproces zodat planeten de gebruiker op een natuurlijker tempo benaderen. Zodra de snelheid was aangepast, moesten we de audio- en visuele affordances opnieuw bekijken en audiofeedback toevoegen terwijl de planeet naar de gebruiker werd gevolgd.
Het tweede deel van de oplossing bestond uit het tastbaar maken van de visualisatie van de gehele krachtgrijpinteractie. We hebben een dikke lijn gevisualiseerd die naar het doelobject beweegt zodra de handstraal zich ermee verbindt en het object vervolgens weer naar de gebruiker brengt, zoals een lasso.
Ten slotte hebben we de schaal van het zonnestelsel geoptimaliseerd, zodat de planeten groot genoeg waren voor de blik en de handstraal van de gebruiker om ze te richten.
Dankzij deze drie verbeteringen konden gebruikers nauwkeurige selecties maken en op een intuïtieve manier planeten naar hen aanroepen. Over het algemeen is het effect van de laatste krachtgrijper een meer meeslepende en interactieve ervaring in het zonnestelsel.
Spotlight op Jupiter
Het creëren van de zonnelichamen van de Melkweg was een vernederende ervaring. Met name de unieke kenmerken van Jupiter maken het een gezicht om te zien. Het is de grootste en meest kleurrijke van de gasreuzen, en bevat meer massa dan alle andere planeten samen. De pure grootte en hypnotiserende banden van turbulentie en wolkendynamiek zijn prefect voor speciale artistieke aandacht.
Geometrie en meshes
Als gasreus bestaan de buitenste schalen van Jupiter uit gasvormige lagen. De combinatie van de snelle rotatiesnelheid, innerlijke warmteuitwisseling en Coriolis-krachten creëert kleurrijke lagen en stromen die zich vormen in wervelende wolkengordels en vortices. Het vastleggen van deze ingewikkelde schoonheid was de sleutel tot het creëren van ons zonnestelsel.
Het was meteen duidelijk dat het gebruik van visualisatietechnieken zoals vloeistofsimulaties en geanimeerde texturen met vooraf berekende stromen niet aan de orde was. De rekenkracht die nodig is om dit te simuleren in combinatie met al het andere dat tegelijkertijd gebeurt, zou aanzienlijke nadelige gevolgen voor de prestaties hebben gehad.
De volgende benadering was een "rook-en-spiegel"-oplossing, bestaande uit transparante textuurlagen, die elk een specifiek aspect van de atmosferische beweging behandelden, samengesteld op een samenstelling van roterende meshes.
In de onderstaande afbeelding ziet u de binnenste shell aan de linkerkant. Deze matlaag bood een achtergrond aan de compositie om te beschermen tegen kleine openingen tussen de meerdere lagen waaruit de wolken bestaan. Vanwege de trage rotatie van de laag diende het ook als een visuele buffer tussen de sneller bewegende banden om visuele eenheid in de lagen te bouwen.
Nadat dit anker aan het model was ingesteld, werden de bewegende wolkenlagen vervolgens geprojecteerd op de middelste en rechter meshes die hieronder worden weergegeven.
Texturing
Het bestaande patroon werd gescheiden in een driedelige textuuratlas: Het bovenste derde deel host een onbeweesbare laag wolken met openingen om een parallaxeffect te bieden, het middelste gedeelte bevat de snel bewegende buitenste stromen en het onderste derde bevat een langzaam draaiende binnenbasislaag.
De karakteristieke Grote Rode Vlek werd ook gescheiden in de verschillende bewegende delen en vervolgens in een anders onzichtbaar gebied van de textuur ingevoegd. Deze onderdelen kunnen worden gezien als de roodgevlekte spikkels in het middelste gedeelte van de onderstaande afbeelding.
Omdat elke band een specifieke richting en snelheid heeft, werd de textuur op elk gaas afzonderlijk toegepast. De meshes hadden vervolgens een gemeenschappelijk midden en een draaipunt, waardoor het mogelijk was om het hele oppervlak te animeren.
Draai- en patroongedrag
Zodra de visuele samenstelling van Jupiter was ingesteld, moesten we ervoor zorgen dat de rotatie- en baansnelheden correct werden berekend en dienovereenkomstig werden toegepast. Het duurt ongeveer 9 uur voordat Jupiter een volledige rotatie heeft voltooid. Dit is een kwestie van definitie vanwege de differentiële rotatie. Daarom is de equatoriale stroom ingesteld als een 'master stream', met 3600 frames voor een volledige rotatie. Elke andere laag moest een rotatiesnelheid hebben als een factor van 3600 om de oorspronkelijke positie te kunnen vinden, bijvoorbeeld 600, 900, 1200, 1800 enz.
De grote rode vlek
De afzonderlijk draaiende stromen zorgden voor een goede visuele indruk, maar misten detail wanneer ze van dichtbij werden waargenomen.
Het meest in het oog springende onderdeel was Jupiter's Great Red Spot, dus hebben we speciaal een set meshes en texturen gemaakt om het te laten zien. We gebruikten een soortgelijk mechanisme als bij Jupiters banden: een set roterende delen werd over elkaar samengesteld, terwijl ze ook onder de 'masterlaag' werden gegroepeerd om ervoor te zorgen dat ze in positie blijven, ongeacht hoe snel de rest beweegt.
Toen de meshes werden opgezet en op hun plaats werden geplaatst, werden verschillende lagen van de stormachtige vortex aangebracht en werd elke schijf vervolgens afzonderlijk geanimeerd, waarbij de middelste stukken het snelst bewegen, waarbij de rest geleidelijk vertraagt als het naar buiten beweegt.
De samenstelling had ook dezelfde draaiing als elk ander gaas, terwijl ook zijn kanteling ten opzichte van de oorspronkelijke y-as (!) werd behouden om vrijheid te bieden bij het animeren van de rotatie. 3600 frames is de basissnelheid, waarbij elke laag een factor van deze factor heeft als een rotatieperiode.
Het goed doen in Unity
Er zijn een aantal belangrijke dingen waar u rekening mee moet houden bij het implementeren hiervan in Unity.
Unity is gemakkelijk te verwarren wanneer het gaat om grote sets transparante lagen. De oplossing was om het patroonmateriaal voor elk gaas te dupliceren en oplopende renderwachtrijwaarden progressief van binnen naar buiten toe te passen op elk materiaal.
Het resultaat was dat de binnenste shell een renderwachtrijwaarde van 3000 (standaard) had, de statische rode buitenste later een waarde van 3005, de snelle witte buitenwolken 3010. De Grote Rode Vlek (van binnenste naar buitenste laag), voltooid met een waarde van 3025 in dit model.
Laatste handjes
De structuurlagen van Jupiter werden in eerste instantie opgezet, wat onvoldoende bleek voor implementatie.
De originele Planet Standard-shader en alle variaties ontvangen hun lichtinformatie via een script, de SunLightReceiver, die niet wordt ondersteund door de MRTK Standard-arcering.
Het simpelweg verwisselen van de shaders was geen oplossing omdat de Planet Standard-shader geen ondersteuning biedt voor structuurkaarten met doorzichtigheid. We hebben deze arcering bewerkt om ervoor te zorgen dat de Jupiter-build werkt zoals bedoeld.
Ten slotte moesten de alpha blends worden ingesteld door de bronmenging in te stellen op 10 en de doelmenging op 5.
Je kunt de uiteindelijke weergave van Jupiter zien in Galaxy Explorer!
Maak kennis met het team
Ons Mixed Reality studioteam bestaat uit ontwerpers, 3D-artiesten, UX-specialisten, ontwikkelaars, een programmamanager en een studiohoofd. We komen uit de hele wereld: België, Canada, Duitsland, Israël, Japan, het Verenigd Koninkrijk en de Verenigde Staten. We zijn een multidisciplinair team met een diverse achtergrond: gaming - zowel traditioneel als indie, digitale marketing, gezondheidszorg en wetenschap.
We zijn verheugd om Galaxy Explorer voor HoloLens 2 te maken en de HoloLens (eerste generatie), VR en desktopversies bij te werken.
Van links naar rechts: Artemis Tsouflidou (Ontwikkelaar), Angie Teickner (Visual Designer), David Janer (UX Designer), Laura Garrett (Delivery & Production Lead), Yasushi Zonno (Creative Lead), Eline Ledent (Developer) en Ben Turner (Sr. Developer). Van links naar rechtsonder: Amit Rojtblat (Technical Artist), Martin Wettig (3D Artist) en Dirk Songuer (Studio Head). Niet aanbevolen: Tim Gerken (Tech Lead) en Oscar Salandin (Visual Designer).
Aanvullende informatie
Mixed Reality Studio's
Microsoft Mixed Reality Studio-teams - gevestigd in Noord- en Zuid-Amerika, Europa en Asia-Pacific - zijn experts op het gebied van ontwerp van gebruikerservaring, holografische computing, AR/VR-technologieën en 3D-ontwikkeling, waaronder het maken van 3D-assets, DirectX, Unity en Unreal. We helpen bij het bedenken van de gewenste toekomst, het ontwerpen, bouwen en leveren van oplossingen, terwijl we klanten in staat stellen meetbare impact te creëren binnen hun organisatie. De studio's werken nauw samen met meer dan 22.000 Microsoft Services-professionals voor de integratie, acceptatie, bewerkingen en ondersteuning van bedrijfstoepassingen.