Systemen coördineren

In de kern plaatsen mixed reality-apps hologrammen in uw wereld die eruitzien als echte objecten. Dit omvat het nauwkeurig positioneren en orienteren van die hologrammen op zinvolle plaatsen in de wereld, ongeacht of de wereld hun fysieke ruimte is of een virtueel domein dat u hebt gemaakt. Windows biedt verschillende echte coördinatensystemen voor het uitdrukken van geometrie. Deze worden ook wel ruimtelijke coördinatensystemen genoemd. U kunt deze systemen gebruiken om te redeneren over de positie van hologrammen, de richting, de staarstraal of de positie van de hand.

Ondersteuning voor apparaten

Functie HoloLens (1e generatie) HoloLens 2 Immersive headsets
Stationair referentiekader ✔️ ✔️ ✔️
Bijgevoegd referentiekader ✔️ ✔️ ✔️
Referentiekader voor fase Nog niet ondersteund Nog niet ondersteund ✔️
Ruimtelijke ankers ✔️ ✔️ ✔️
Ruimtelijke toewijzing ✔️ ✔️
Scène begrijpen ✔️

Schalen voor mixed reality-ervaring

U kunt mixed reality-apps ontwerpen voor een breed scala aan gebruikerservaringen, van 360-graden videoviewers met headsetstand tot volledige apps en games op wereldschaal met behulp van ruimtelijke toewijzing en ruimtelijke ankers:


Ervaringsschaal Vereisten Voorbeeldervaring
Alleen afdrukstand Richting van headset (zwaartekracht uitgelijnd) 360° videoviewer
Zittende schaal Boven plus headsetpositie op basis van nulpositie Racespel of ruimtesimulator
Staande schaal Oorsprong boven plus podiumvloer Actiespel waar je duikt en ontwijkt op zijn plaats
Ruimteschaal Veelhoek boven plusfasegrenzen Puzzelspel waar je rond de puzzel loopt
Wereldschaal Ruimtelijke ankers (en meestal ruimtelijke toewijzing) Game met vijanden die afkomstig zijn van je echte muren, zoals RoboRaid

De bovenstaande ervaringsschalen volgen een model voor het nesten van poppen. Het belangrijkste ontwerpprincipe voor Windows Mixed Reality is dit: een bepaalde headset ondersteunt apps die zijn gebouwd voor een beoogde ervaringsschaal en alle kleinere schalen.


6DOF-tracering Gedefinieerde verdieping 360° tracking Gedefinieerde grenzen Ruimtelijke ankers Maximale ervaring
Nee - - - - Alleen afdrukstand
Ja Nee - - - Zitten
Ja Ja Nee - - Staand - Vooruit
Ja Ja Ja Nee - Staand - 360°
Ja Ja Ja Ja Nee Kamer
Ja Ja Ja Ja Ja Wereld

Het referentieframe stage wordt nog niet ondersteund op HoloLens. Een app op ruimteschaal op HoloLens moet momenteel gebruikmaken van ruimtelijke toewijzing of inzicht in scènes om de vloer en wanden van de gebruiker te vinden.

Ruimtelijke coördinatensystemen

Alle 3D-grafische toepassingen maken gebruik van Cartesische coördinatensystemen om de posities en richtingen van virtuele objecten te berekent. Met deze coördinatensystemen worden drie loodrechte assen tot stand gebracht: X, Y en Z. Elk object dat u aan een scène toevoegt, heeft een XYZ-positie in het coördinatensysteem. Windows noemt een coördinatensysteem met een werkelijke betekenis in de fysieke wereld een ruimtelijk coördinatensysteem, dat de coördinaatwaarden uitdrukt in meters. Dit betekent dat objecten die twee eenheden uit elkaar zijn geplaatst op de X-, Y- of Z-as twee meter van elkaar worden weergegeven wanneer ze worden weergegeven in mixed reality. Als u dit weet, kunt u eenvoudig objecten en omgevingen weergeven op echte schaal.

In het algemeen worden Cartesische coördinatensystemen aangeduid als 'rechtshandig' of 'linkshandig' omdat u handposities kunt gebruiken om de richting van de XYZ-assen aan te geven. In beide coördinatensystemen wijst de positieve X-as naar rechts en de positieve Y-as naar boven. Het verschil tussen de twee is dat in het rechterhandige coördinatensysteem de Z-as naar u wijst , terwijl in het linkshandige coördinatensysteem de Z-as van u af wijst.

Afbeelding van de rechterhand van een persoon die het rechtshandige coördinatensysteem demonstreert

Afbeelding van de linkerhand van een persoon die het linkshandige coördinatensysteem demonstreert

Ruimtelijke coördinatensystemen in Windows (en dus Windows Mixed Reality) zijn altijd rechtshandig.

[! OPMERKINGEN BIJ DE]

  • Unity en Unreal gebruiken het linkshandige coördinatensysteem.
  • Hoewel linkshandige en rechtshandige coördinaten de meest voorkomende systemen zijn, zijn er andere coördinatensystemen die worden gebruikt in 3D-software. Het is bijvoorbeeld niet ongebruikelijk dat 3D-modelleringstoepassingen een coördinatensysteem gebruiken waarin de Y-as naar of weg wijst van de viewer en de Z-as naar boven wijst.

Een ervaring met alleen oriëntatie of zittende schaal bouwen

De sleutel tot holografische rendering is het wijzigen van de weergave van de hologrammen van uw app op elk frame terwijl de gebruiker zich verplaatst, zodat deze overeenkomt met de voorspelde hoofdbeweging. U kunt zittende ervaringen bouwen die rekening houdt met wijzigingen in de hoofdpositie en richting van het hoofd van de gebruiker met behulp van een stationair referentiekader.

Sommige inhoud moet updates van de hoofdpositie negeren, en altijd op een gekozen kop en op afstand van de gebruiker blijven. Het primaire voorbeeld is 360-graden video: omdat de video wordt vastgelegd vanuit één vast perspectief, zou dit de illusie verpesten dat de weergavepositie kan worden verplaatst op basis van de inhoud, ook al verandert de weergaverichting terwijl de gebruiker rondkijkt. U kunt dergelijke oriëntatie-ervaringen bouwen met behulp van een gekoppeld referentiekader.

Stationair referentiekader

Het coördinatensysteem van een stationair referentiekader werkt om de posities van objecten in de buurt van de gebruiker zo stabiel mogelijk te houden op basis van de wereld, met inachtneming van wijzigingen in de hoofdpositie van de gebruiker.

Voor zittende ervaringen in een game-engine zoals Unity definieert een stationair referentiekader de 'oorsprong van de wereld' van de engine. Objecten die op een specifieke wereldcoördinaat zijn geplaatst, gebruiken het stationaire referentiekader om hun positie in de echte wereld te definiëren met behulp van dezelfde coördinaten. Inhoud die in de wereld blijft, zelfs wanneer de gebruiker rondloopt, wordt wereld-vergrendelde inhoud genoemd.

Een app maakt doorgaans één stationair referentiekader bij het opstarten en gebruikt het bijbehorende coördinatensysteem gedurende de levensduur van de app. Als app-ontwikkelaar in Unity kunt u gewoon beginnen met het plaatsen van inhoud op basis van de oorsprong, die zich op de oorspronkelijke positie en richting van de gebruiker bevindt. Als de gebruiker naar een nieuwe locatie verhuist en de ervaring op de zittende schaal wil voortzetten, kunt u de oorsprong van de wereld op die locatie recenter maken.

Naarmate het systeem na verloop van tijd meer te weten komt over de omgeving van de gebruiker, kan het bepalen dat de afstanden tussen verschillende punten in de echte wereld korter of langer zijn dan eerder werd aangenomen. Als u hologrammen weergeeft in een stationair referentiekader voor een app op HoloLens waarbij gebruikers buiten een gebied van ongeveer 5 meter breed dwalen, kan uw app afwijkingen in de waargenomen locatie van die hologrammen observeren. Als uw ervaring gebruikers meer dan 5 meter heeft, bouwt u een ervaring op wereldschaal, waarvoor andere technieken nodig zijn om hologrammen stabiel te houden, zoals hieronder wordt beschreven.

Bijgevoegd referentiekader

Een gekoppeld referentiekader wordt met de gebruiker mee verplaatst terwijl deze rondloopt, met een vaste kop die is gedefinieerd wanneer de app het frame voor het eerst maakt. Hierdoor kan de gebruiker comfortabel rondkijken naar inhoud die binnen dat referentiekader is geplaatst. Inhoud die op deze gebruiker-relatieve manier wordt weergegeven, wordt inhoud met de hoofdtekst vergrendeld genoemd.

Wanneer de headset niet kan achterhalen waar deze zich ter wereld bevindt, biedt een gekoppeld referentiekader het enige coördinatensysteem dat kan worden gebruikt om hologrammen weer te geven. Dit maakt het ideaal voor het weergeven van een terugvalgebruikersinterface om de gebruiker te vertellen dat het apparaat ze niet kan vinden in de wereld. Apps met een seated-scale of hoger moeten een terugval met alleen oriëntaties bevatten om de gebruiker te helpen weer aan de slag te gaan, met een gebruikersinterface die vergelijkbaar is met de gebruikersinterface die wordt weergegeven in de Mixed Reality startpagina.

Een staande of ruimteschaal-ervaring bouwen

Als u verder wilt gaan dan zitschaal op een immersive headset en een staande ervaring wilt bouwen, kunt u het referentiekader van het podium gebruiken.

Om een ervaring op ruimteschaal te bieden, zodat gebruikers binnen de vooraf gedefinieerde grens van 5 meter kunnen lopen, kunt u ook controleren op de grenzen van de fase.

Referentiekader voor fase

Wanneer de gebruiker voor het eerst een immersive headset instelt, definieert hij een fase, die de ruimte vertegenwoordigt waarin mixed reality wordt ervaren. De fase definieert minimaal een fase-oorsprong, een ruimtelijk coördinatensysteem dat is gecentreerd op de gekozen vloerpositie van de gebruiker en de voorwaartse richting waar ze het apparaat willen gebruiken. Door inhoud in dit fasecoördinaatsysteem op het Y=0-vloervlak te plaatsen, kunt u ervoor zorgen dat uw hologrammen comfortabel op de vloer verschijnen wanneer de gebruiker zich bevindt, zodat gebruikers een staande ervaring hebben.

Fasegrenzen

De gebruiker kan optioneel ook fasegrenzen definiëren, een gebied binnen de ruimte dat ze hebben leeggemaakt om zich te verplaatsen in mixed reality. Als dat het zo is, kan de app een ervaring op ruimteschaal bouwen, waarbij deze grenzen worden gebruikt om ervoor te zorgen dat hologrammen altijd worden geplaatst waar de gebruiker ze kan bereiken.

Omdat het referentiekader voor de fase één vast coördinatensysteem biedt voor het plaatsen van vloer-relatieve inhoud, is dit het eenvoudigste pad voor het overzetten van staande en ruimteschaaltoepassingen die zijn ontwikkeld voor virtual reality-headsets. Net als bij die VR-platforms kan een enkel coördinatensysteem de inhoud echter alleen stabiliseren in een diameter van ongeveer 5 meter (16 voet), voordat de lever-arm-effecten ervoor zorgen dat inhoud ver van het midden merkbaar ver van het systeem ver van het systeem verschuift. Om verder te gaan dan 5 meter, zijn ruimtelijke ankers nodig.

Een ervaring op wereldschaal bouwen

HoloLens biedt echte wereldwijde ervaringen waarmee gebruikers meer dan 5 meter kunnen dwalen. Als u een wereldwijde app wilt bouwen, hebt u nieuwe technieken nodig die verder gaan dan de technieken die worden gebruikt voor ervaringen op ruimteschaal.

Waarom een enkel star coördinaatsysteem niet meer dan 5 meter kan worden gebruikt

Bij het schrijven van games, apps voor gegevensvisualisatie of virtual reality-apps is het tegenwoordig gebruikelijk om één absoluut wereldcoördinaatsysteem te creëren waaraan alle andere coördinaten op betrouwbare wijze kunnen worden toegewezen. In die omgeving kunt u altijd een stabiele transformatie vinden die een relatie definieert tussen twee objecten in die wereld. Als u deze objecten niet verplaatst, blijven hun relatieve transformaties altijd hetzelfde. Dit soort globale coördinatensysteem werkt goed bij het weergeven van een puur virtuele wereld waarin u alle geometrie vooraf kent. VR-apps op ruimteschaal vormen tegenwoordig meestal dit soort absolute coördinaatsystemen op ruimteschaal met zijn oorsprong op de vloer.

Een niet-gekoppeld mixed reality-apparaat, zoals HoloLens, heeft daarentegen een dynamisch sensorgestuurd inzicht in de wereld, waarbij de kennis in de loop van de tijd van de omgeving van de gebruiker voortdurend wordt aangepast wanneer deze vele meters over een hele verdieping van een gebouw loopt. Als u al uw hologrammen in één star coördinaatsysteem plaatst, zouden die hologrammen in de loop van de tijd noodzakelijkerwijs afdrijven, hetzij op basis van de wereld, hetzij op basis van elkaar.

De headset kan bijvoorbeeld denken dat twee locaties in de wereld op dit moment 4 meter van elkaar liggen en dat begrip later verfijnen en leren dat de locaties in feite 3,9 meter uit elkaar liggen. Als deze hologrammen in eerste instantie 4 meter uit elkaar waren geplaatst in een enkel star coördinatensysteem, zou een van hen altijd op 0,1 meter van de echte wereld verschijnen.

Ruimtelijke ankers

Windows Mixed Reality lost het probleem op dat in de vorige sectie wordt beschreven door ruimtelijk ankers te maken om belangrijke punten te markeren in de wereld waar de gebruiker hologrammen heeft geplaatst. Een ruimtelijk anker vertegenwoordigt een belangrijk punt in de wereld dat het systeem in de loop van de tijd moet bijhouden.

Naarmate het apparaat meer te weten komt over de wereld, kunnen deze ruimtelijke ankers hun positie zo nodig op elkaar aanpassen om ervoor te zorgen dat elk anker precies blijft waar het is geplaatst op basis van de echte wereld. Door een ruimtelijk anker te plaatsen op de locatie waar de gebruiker een hologram plaatst en dat hologram vervolgens te positioneren op basis van het ruimtelijke anker, kunt u ervoor zorgen dat het hologram optimale stabiliteit behoudt, zelfs als de gebruiker over tientallen meters zwerven.

Deze continue aanpassing van ruimtelijke ankers op basis van elkaar is het belangrijkste verschil tussen coördinatensystemen van ruimtelijke ankers en stationaire referentiekaders:

  • Hologrammen die in het stationaire referentiekader worden geplaatst, houden allemaal een starre relatie met elkaar. Als de gebruiker echter lange afstanden loopt, kan het coördinatensysteem van dat frame afwijken op basis van de wereld om ervoor te zorgen dat hologrammen naast de gebruiker stabiel lijken.

  • Hologrammen die in het referentiekader van de fase worden geplaatst, houden ook een starre relatie met elkaar. In tegenstelling tot het stationaire frame blijft het podiumframe altijd op zijn plaats staan op basis van de gedefinieerde fysieke oorsprong. Inhoud die wordt weergegeven in het coördinatensysteem van de fase buiten de grens van 5 meter, wordt echter alleen stabiel weergegeven als de gebruiker zich binnen die grens bevindt.

  • Hologrammen die zijn geplaatst met één ruimtelijk anker, kunnen afwijken op basis van hologrammen die zijn geplaatst met een ander ruimtelijk anker. Hierdoor kan Windows de positie van elk ruimtelijk anker beter begrijpen, zelfs als bijvoorbeeld het ene anker zich naar links moet aanpassen en een ander anker zich rechts moet aanpassen.

In tegenstelling tot een stationair referentiekader, dat altijd optimaliseert voor stabiliteit in de buurt van de gebruiker, zorgen het fasekader van referentie en ruimtelijke ankers voor stabiliteit in de buurt van hun oorsprong. Dit helpt deze hologrammen in de loop van de tijd precies op hun plaats te blijven, maar het betekent ook dat hologrammen die te ver van de oorsprong van hun coördinatensysteem worden weergegeven, steeds ernstigere effecten ondervinden. Dit komt doordat kleine aanpassingen aan de positie en richting van het podium of anker evenredig worden vergroot met de afstand tot dat anker.

Een goede vuistregel is ervoor te zorgen dat alles wat u op basis van het coördinatensysteem van een ver ruimtelijk anker maakt, zich binnen ongeveer 3 meter van zijn oorsprong bevindt. Voor een oorsprong van een nabijgelegen fase is het weergeven van verre inhoud ok, omdat een verhoogde positionele fout alleen van invloed is op kleine hologrammen die niet veel verschuiven in de weergave van de gebruiker.

Ruimtelijke ankerpersistentie

Met ruimtelijke ankers kan uw app ook een belangrijke locatie onthouden, zelfs nadat uw app is onderbroken of het apparaat is afgesloten.

U kunt de ruimtelijke ankers die uw app maakt opslaan op schijf en deze later opnieuw laden door ze op te slaan in het ruimtelijke ankerarchief van uw app. Wanneer u een anker opslaat of laadt, geeft u een tekenreekssleutel op die zinvol is voor uw app, om het anker later te identificeren. U kunt deze sleutel zien als de bestandsnaam voor uw anker. Als u andere gegevens aan dat anker wilt koppelen, zoals een 3D-model dat de gebruiker op die locatie heeft geplaatst, slaat u deze op in de lokale opslag van uw app en koppelt u deze aan de sleutel die u hebt gekozen.

Door ankers in de store te behouden, kunnen uw gebruikers afzonderlijke hologrammen plaatsen of een werkruimte plaatsen waar een app de verschillende hologrammen omheen plaatst, en deze hologrammen later vinden waar ze ze verwachten, bij veel gebruik van uw app.

U kunt Azure Spatial Anchors ook gebruiken voor asynchrone hologrampersistentie op HoloLens-, iOS- en Android-apparaten. Door een duurzaam ruimtelijk anker in de cloud te delen, kunnen meerdere apparaten in de loop van de tijd hetzelfde persistente hologram observeren, zelfs als deze apparaten niet tegelijkertijd aanwezig zijn.

Ruimtelijk anker delen

Uw app kan ook een ruimtelijk anker in realtime delen met andere apparaten, zodat realtime gedeelde ervaringen mogelijk zijn.

Met behulp van Azure Spatial Anchors kan uw app een ruimtelijk anker delen op meerdere HoloLens-, iOS- en Android-apparaten. Door elk apparaat een hologram weer te geven met behulp van hetzelfde ruimtelijke anker, zien alle gebruikers dat het hologram op dezelfde plaats in de echte wereld wordt weergegeven.

Inhoud met hoofdvergrendeling voorkomen

We raden het weergeven van inhoud met hoofdvergrendeling sterk af, die op een vaste plek in het beeldscherm blijft staan (zoals een HUD). Over het algemeen is hoofd-vergrendelde inhoud onprettig voor gebruikers en voelt het niet als een natuurlijk onderdeel van hun wereld.

Inhoud met hoofdvergrendeling moet meestal worden vervangen door hologrammen die zijn gekoppeld aan de gebruiker of in de wereld zelf worden geplaatst. Cursors moeten bijvoorbeeld over het algemeen de wereld in worden geduwd en op een natuurlijke manier worden geschaald om de positie en afstand van het object onder de blik van de gebruiker weer te geven.

Traceringsfouten afhandelen

In sommige omgevingen, zoals donkere gangen, is het mogelijk dat een headset die gebruikmaakt van inside-out tracking, zich op de juiste manier in de wereld kan vinden. Dit kan ertoe leiden dat hologrammen niet worden weergegeven of op onjuiste plaatsen worden weergegeven als ze onjuist worden verwerkt. We bespreken nu de omstandigheden waarin dit kan gebeuren, de impact ervan op de gebruikerservaring en tips om deze situatie het beste aan te pakken.

Headset kan niet worden gevolgd vanwege onvoldoende sensorgegevens

Soms kunnen de sensoren van de headset niet achterhalen waar de headset zich bevindt. Dit kan gebeuren als:

  • De kamer is donker
  • Als de sensoren bedekt zijn met haar of handen
  • Als de omgeving niet genoeg textuur heeft.

Als dit gebeurt, kan de headset de positie niet met voldoende nauwkeurigheid volgen om hologrammen met wereldvergrendeling weer te geven. U kunt niet achterhalen waar een ruimtelijk anker, stationair frame of podiumframe is gebaseerd op het apparaat. U kunt echter nog steeds inhoud die is vergrendeld met de hoofdtekst weergeven in het bijgevoegde referentiekader.

Uw app moet de gebruiker vertellen hoe positietracering kan worden teruggezet, waarbij inhoud met terugval door het lichaam wordt weergegeven die enkele tips beschrijft, zoals het blootleggen van de sensoren en het inschakelen van meer lichten.

Headset houdt onjuist bij vanwege dynamische wijzigingen in de omgeving

Het apparaat kan niet goed bijhouden of er veel dynamische wijzigingen in de omgeving zijn, zoals veel mensen die in de ruimte rondlopen. In dit geval lijken de hologrammen te springen of te driften terwijl het apparaat zichzelf in deze dynamische omgeving probeert te traceren. We raden u aan het apparaat in een minder dynamische omgeving te gebruiken als u dit scenario hebt bereikt.

Headset volgt onjuist omdat de omgeving in de loop van de tijd aanzienlijk is gewijzigd

Wanneer u een headset gaat gebruiken in een omgeving waarin meubels, wandhangingen, enzovoort zijn verplaatst, is het mogelijk dat sommige hologrammen verschoven lijken van de oorspronkelijke locaties. De eerdere hologrammen kunnen ook rondspringen terwijl de gebruiker zich in de nieuwe ruimte verplaatst, omdat het systeem niet langer waar is. Het systeem probeert vervolgens de omgeving opnieuw in kaart te brengen en tegelijkertijd de functies van de ruimte af te stemmen. In dit scenario is het raadzaam om gebruikers aan te moedigen hologrammen te vervangen die ze in de wereld hebben vastgemaakt als ze niet worden weergegeven waar verwacht.

Headset houdt onjuist bij vanwege identieke spaties in een omgeving

Soms kan een huis of andere ruimte twee identieke gebieden hebben. Bijvoorbeeld twee identieke vergaderruimten, twee identieke hoekgebieden, twee grote identieke posters die het gezichtsveld van het apparaat bedekken. In dergelijke scenario's kan het apparaat soms in de war raken tussen de identieke onderdelen en deze als hetzelfde markeren in de interne weergave. Dit kan ertoe leiden dat de hologrammen van sommige gebieden op andere locaties worden weergegeven. Het apparaat kan de tracering vaak verliezen omdat de interne weergave van de omgeving is beschadigd. In dit geval is het raadzaam om de omgevingskennis van het systeem opnieuw in te stellen. Het opnieuw instellen van de kaart leidt tot het verlies van alle ruimtelijke ankerplaatsingen. Dit zorgt ervoor dat de headset goed kan worden bijgehouden in de unieke gebieden van de omgeving. Het probleem kan zich echter opnieuw voordoen als het apparaat opnieuw in de war raakt tussen de identieke gebieden.

Zie ook