Systemen coördineren
In hun kern plaatsen mixed reality-apps hologrammen in uw wereld die eruitzien als echte objecten en klinken. Dit omvat het nauwkeurig positioneren en orienteren van die hologrammen op betekenisvolle plaatsen ter wereld, ongeacht of de wereld hun fysieke ruimte is of een virtueel koninkrijk dat u hebt gemaakt. Windows biedt verschillende echte coördinaatsystemen voor het uitdrukken van geometrie. Dit worden ruimtelijke coördinaatsystemen genoemd. U kunt deze systemen gebruiken om redeneren over hologrampositie, stand, kijkstralen of handposities.
Ondersteuning voor apparaten
Functie | HoloLens (eerste generatie) | HoloLens 2 | Insluitende headsets |
Stationair referentiekader | ✔️ | ✔️ | ✔️ |
Bijgevoegd referentiekader | ✔️ | ✔️ | ✔️ |
Referentiekader fase | Nog niet ondersteund | Nog niet ondersteund | ✔️ |
Ruimtelijke ankers | ✔️ | ✔️ | ✔️ |
Ruimtelijke toewijzing | ✔️ | ✔️ | ❌ |
Inzicht in scènes | ❌ | ✔️ | ❌ |
Mixed reality-ervaring schaalt
U kunt Mixed reality-apps ontwerpen voor een breed scala aan gebruikerservaringen, van videoviewers van 360 graden met behulp van headsetstand tot volledige apps en games op wereldschaal met behulp van ruimtelijke toewijzing en ruimtelijke ankers:
Ervaringsschaal | Vereisten | Voorbeeldervaring |
---|---|---|
Alleen afdrukstand | Headsetstand (zwaartekracht uitgelijnd) | 360° videoviewer |
Zitschaal | Boven plus headsetpositie op basis van nulpositie | Racespel of ruimtesimulator |
Staande schaal | Boven plus podiumvloer oorsprong | Actiespel waar je eend en ontwijkt |
Ruimteschaal | Boven plus fasegrenzen veelhoek | Puzzelspel waar je de puzzel rondloopt |
Wereldschaal | Ruimtelijke ankers (en doorgaans ruimtelijke toewijzing) | Game met vijanden die afkomstig zijn van je echte muren, zoals RoboRaid |
De ervaring schaalt hierboven volgt een "nestpoppen"-model. Het belangrijkste ontwerpprincipe voor Windows Mixed Reality is dit: een bepaalde headset ondersteunt apps die zijn gebouwd voor een schaal van een doelervaring en alle kleinere schalen.
6DOF-tracering | Vloer gedefinieerd | 360° tracering | Gedefinieerde grenzen | Ruimtelijke ankers | Maximale ervaring |
---|---|---|---|---|---|
Nee | - | - | - | - | Alleen afdrukstand |
Ja | Nr. | - | - | - | Zittend |
Ja | Ja | Nr. | - | - | Staand - Vooruit |
Ja | Ja | Ja | Nr. | - | Staand - 360° |
Ja | Ja | Ja | Ja | Nr. | Room |
Ja | Ja | Ja | Ja | Ja | Wereld |
Het referentiekader fase wordt nog niet ondersteund op HoloLens. Een app op ruimteschaal op HoloLens moet momenteel ruimtelijk toewijzen of scènebegrip gebruiken om de vloer en muren van de gebruiker te vinden.
Ruimtelijke coördinaatsystemen
Alle 3D-grafische toepassingen maken gebruik van cartesische coördinatensystemen om redeneren over de posities en oriëntaties van virtuele objecten. Deze coördinaatsystemen vormen drie loodrechte assen: X, Y en Z. Elk object dat u aan een scène toevoegt, heeft een XYZ-positie in het coördinaatsysteem. Windows roept een coördinaatsysteem aan dat echte betekenis heeft in de fysieke wereld, een ruimtelijk coördinaatsysteem, dat de coördinaatwaarden in meters uitdrukt. Dit betekent dat objecten die twee eenheden uit elkaar op de X-, Y- of Z-as worden geplaatst, twee meter van elkaar worden weergegeven wanneer ze in mixed reality worden weergegeven. 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 richtingen van de XYZ-assen aan te geven. In beide coördinaatsystemen wijst de positieve X-as naar rechts en de positieve Y-as omhoog. Het verschil tussen de twee is dat in het rechterhandige coördinaatsysteem, de Z-as naar u wijst , terwijl in het linkercoördinaatsysteem de Z-aspunten van u verwijderd zijn.
Ruimtelijke coördinaatsystemen in Windows (en daarom Windows Mixed Reality) zijn altijd rechtshandig.
[! OPMERKINGEN BIJ DE]
- Unity en Unreal gebruiken het linkshandige coördinaatsysteem.
- 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 voor 3D-modelleringstoepassingen om een coördinaatsysteem te gebruiken waarin de Y-as naar of weg van de viewer en de Z-aspunten omhoog wijst.
Een ervaring met alleen oriëntatie of zitschaal bouwen
De sleutel tot holografische rendering is het wijzigen van de weergave van de hologrammen van uw app terwijl de gebruiker zich beweegt, zodat deze overeenkomt met de voorspelde hoofdbeweging. Met behulp van een stationair referentiekader kunt u ervaringen op zitschaal bouwen die wijzigingen in de hoofdpositie en de hoofdstand van de gebruiker respecteren.
Sommige inhoud moet updates van de hoofdpositie negeren, waarbij de positie altijd vast blijft op een gekozen kop en afstand van de gebruiker. Het primaire voorbeeld is 360 graden video: omdat de video vanuit één vast perspectief wordt vastgelegd, wordt de illusie voor de weergavepositie verpest om te worden verplaatst op basis van de inhoud, ook al verandert de weergavestand terwijl de gebruiker kijkt. U kunt dergelijke afdrukstandservaringen bouwen met behulp van een bijgevoegd referentiekader.
Stationair referentiekader
Het coördinatensysteem van een stationair referentiekader werkt om de positie van objecten in de buurt van de gebruiker zo stabiel mogelijk te houden op basis van de wereld, terwijl wijzigingen in de hoofdpositie van de gebruiker worden gerespecteerd.
Voor ervaringen op zitschaal in een game-engine, zoals Unity, is een stationair referentiekader wat de 'wereldoorsprong' van de engine definieert. Objecten die op een specifieke wereldcoördinaat worden geplaatst, gebruiken het stationaire referentiekader om hun positie in de praktijk te definiëren met behulp van dezelfde coördinaten. Inhoud die in de wereld blijft, zelfs als de gebruiker rondloopt, wordt ook wel 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 eerste positie en stand van de gebruiker bevindt. Als de gebruiker naar een nieuwe locatie gaat en de ervaring op de schaal van de zitschaal wil voortzetten, kunt u de oorsprong van de wereld op die locatie recenter maken.
Naarmate het systeem in de loop van de tijd meer leert over de omgeving van de gebruiker, kan het bepalen dat de afstanden tussen verschillende punten in de echte wereld korter of langer zijn dan het eerder geloofde systeem. Als u hologrammen weergeeft in een stationair referentiekader voor een app op HoloLens waar gebruikers zich buiten een gebied van ongeveer 5 meter bevinden, kan uw app afwijkingen observeren op de waargenomen locatie van die hologrammen. Als uw ervaring gebruikers heeft die meer dan 5 meter lopen, bouwt u een wereldschaalervaring, waarvoor andere technieken nodig zijn om hologrammen stabiel te houden, zoals hieronder wordt beschreven.
Bijgevoegd referentiekader
Een bijgevoegd referentiekader wordt verplaatst met de gebruiker terwijl deze rondloopt, met een vaste kop die is gedefinieerd wanneer de app het frame voor het eerst maakt. Hierdoor kan de gebruiker gemakkelijk kijken naar inhoud die in dat referentiekader is geplaatst. Inhoud die op deze gebruikers-relatieve manier wordt weergegeven, wordt inhoud met hoofdtekst vergrendeld genoemd.
Wanneer de headset niet kan achterhalen waar deze zich in de 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 de terugvalgebruikersinterface om de gebruiker te vertellen dat het apparaat ze niet kan vinden in de wereld. Apps die zijn geplaatst op schaal of hoger, moeten een terugval met alleen afdrukstand bevatten om de gebruiker te helpen opnieuw aan de slag te gaan, met een gebruikersinterface die vergelijkbaar is met die in het mixed reality-huis.
Een ervaring op schaal of ruimteschaal bouwen
Als u verder wilt gaan dan de schaal van een insluitende headset en een ervaring op staande schaal wilt bouwen, kunt u het referentiekader van het podium gebruiken.
Als u een ruimteschaalervaring wilt bieden, kunt u gebruikers ook binnen de vooraf gedefinieerde grenzen van 5 meter laten lopen, kunt u ook controleren op fasegrenzen .
Referentiekader fase
Bij het instellen van een insluitende headset definieert de gebruiker een fase, die de ruimte vertegenwoordigt waarin ze mixed reality ervaren. De fase definieert minimaal een fase-oorsprong, een ruimtelijk coördinaatsysteem dat is gecentreerd op de door de gebruiker gekozen vloerpositie en de stand vooruit 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 staat, zodat gebruikers een staande ervaring hebben.
Fasegrenzen
De gebruiker kan eventueel ook fasegrenzen definiëren, een gebied in de ruimte dat ze hebben gewist om in mixed reality te navigeren. Zo ja, dan kan de app een ruimteschaalervaring bouwen, met behulp van deze grenzen om ervoor te zorgen dat hologrammen altijd worden geplaatst waar de gebruiker deze kan bereiken.
Omdat het referentiekader van het podium één vast coördinaatsysteem biedt om vloer-relatieve inhoud te plaatsen, is het het eenvoudigste pad voor het overzetten van staande schaal- en ruimteschaaltoepassingen die zijn ontwikkeld voor virtual reality-headsets. Net als bij die VR-platformen kan een enkel coördinatensysteem echter alleen inhoud stabiliseren in ongeveer 5 meter (16 voet) diameter, voordat leverarmeffecten inhoud ver van het midden verplaatsen naarmate het systeem zich aanpast. Om meer dan 5 meter te gaan, zijn ruimtelijke ankers nodig.
Een ervaring op wereldschaal bouwen
HoloLens biedt echte ervaringen op wereldschaal waarmee gebruikers meer dan 5 meter kunnen dwalen. Als u een app op wereldschaal wilt bouwen, hebt u nieuwe technieken nodig dan technieken die worden gebruikt voor ervaringen op ruimteschaal.
Waarom een enkel stijf coördinaatsysteem niet meer dan 5 meter kan worden gebruikt
Vandaag de dag, bij het schrijven van games, apps voor gegevensvisualisatie of virtual reality-apps, is de gebruikelijke benadering om één absoluut wereldcoördinaatsysteem tot stand te brengen waarnaar alle andere coördinaten betrouwbaar 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 hebt verplaatst, blijven de relatieve transformaties altijd hetzelfde. Dit soort globale coördinaatsysteem werkt goed bij het weergeven van een puur virtuele wereld waar u alle geometrie van tevoren kent. Vr-apps op ruimteschaal stellen tegenwoordig meestal dit soort absolute coördinaatsysteem op ruimteschaal vast met de oorsprong ervan op de vloer.
Een niet-gekoppeld mixed reality-apparaat zoals HoloLens heeft daarentegen een dynamisch sensorgestuurd begrip van de wereld, waarbij continu de kennis in de loop van de tijd van de omgeving van de gebruiker wordt aangepast wanneer ze veel meters over een hele verdieping van een gebouw lopen. Als u al uw hologrammen in één stijf coördinaatsysteem op wereldschaal plaatst, zouden die hologrammen noodzakelijkerwijs in de loop van de tijd afdrijven, hetzij op basis van de wereld of aan elkaar.
De headset kan bijvoorbeeld geloven dat twee locaties in de wereld 4 meter uit elkaar liggen en later dat begrip verfijnen, leren dat de locaties in feite 3,9 meter uit elkaar liggen. Als die hologrammen aanvankelijk 4 meter uit elkaar waren geplaatst in één stijf coördinaatsysteem, zou een van hen altijd 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 ruimtelijke ankers te maken om belangrijke punten in de wereld te markeren waarin 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 weet over de wereld, kunnen deze ruimtelijke ankers zo nodig hun positie aanpassen op basis van elkaar om ervoor te zorgen dat elk anker precies op de plaats 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 op basis van het ruimtelijke anker plaatst, 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 referentieframes:
Hologrammen die in het stationaire referentiekader worden geplaatst, houden allemaal een stijve relatie met elkaar. Als de gebruiker echter op lange afstanden loopt, kan het coördinaatsysteem van dat frame op basis van de wereld verschuiven om ervoor te zorgen dat hologrammen naast de gebruiker stabiel lijken.
Hologrammen die in het referentiekader worden geplaatst, houden ook een stijve relatie met elkaar. In tegenstelling tot het stationaire frame blijft het podiumframe altijd op zijn plaats op basis van de gedefinieerde fysieke oorsprong. Inhoud die wordt weergegeven in het coördinaatsysteem van de fase buiten de grens van 5 meter, wordt echter alleen stabiel weergegeven terwijl de gebruiker zich binnen die grens bevindt.
Hologrammen die worden geplaatst met behulp van één ruimtelijk anker kunnen afdrijven op basis van hologrammen die zijn geplaatst met behulp van een ander ruimtelijk anker. Hierdoor kan Windows het inzicht in de positie van elk ruimtelijk anker verbeteren, zelfs als één anker zich links moet aanpassen en een ander anker rechts moet aanpassen.
In tegenstelling tot een stationair referentiekader, dat altijd optimaliseert voor stabiliteit in de buurt van de gebruiker, zorgt het fasekader van referentie en ruimtelijke ankers voor stabiliteit in de buurt van hun oorsprong. Dit helpt deze hologrammen nauwkeurig in de loop van de tijd te blijven, maar het betekent ook dat hologrammen die te ver van de oorsprong van hun coördinaatsysteem worden weergegeven, steeds ernstigere leverarmeffecten ondervinden. Dit komt doordat kleine aanpassingen aan de positie en stand van het podium of anker evenredig worden vergroot ten opzichte van de afstand van dat anker.
Een goede vuistregel is ervoor te zorgen dat alles wat u weergeeft op basis van het coördinaatsysteem van een verafgelegen ruimtelijk anker binnen ongeveer 3 meter van zijn oorsprong is. Voor de 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 in de weergave van de gebruiker veranderen.
Persistentie van ruimtelijk anker
Met ruimtelijke ankers kan uw app ook een belangrijke locatie onthouden, zelfs nadat uw app is onderbroken of het apparaat is afgesloten.
U kunt opslaan op de schijf van de ruimtelijke ankers die uw app maakt en deze later opnieuw laden door ze te behouden in de ruimtelijke ankeropslag 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 beschouwen als de bestandsnaam voor uw anker. Als u andere gegevens wilt koppelen aan dat anker, 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 vast te leggen, kunnen uw gebruikers afzonderlijke hologrammen plaatsen of een werkruimte plaatsen waar een app de verschillende hologrammen plaatst en deze hologrammen later vinden waar ze ze verwachten, via veel toepassingen van uw app.
Voorkom kop-vergrendelde inhoud
We raden het weergeven van door hoofd vergrendelde inhoud sterk af, die op een vaste plek in het scherm blijft (zoals een HUD). Over het algemeen is hoofd-vergrendelde inhoud ongemakkelijk voor gebruikers en voelt het niet als een natuurlijk deel van hun wereld.
Inhoud met hoofdvergrendeling moet meestal worden vervangen door hologrammen die zijn gekoppeld aan de gebruiker of die in de wereld zelf zijn geplaatst. Cursors moeten bijvoorbeeld over het algemeen naar de wereld worden gepusht, zodat de positie en afstand van het object onder de blik van de gebruiker worden weergegeven.
Traceringsfouten afhandelen
In sommige omgevingen, zoals donkere gangen, is het misschien niet mogelijk voor een headset die het binnenuit volgen gebruikt om zichzelf correct in de wereld te 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 voorwaarden waarin dit kan gebeuren, de impact ervan op de gebruikerservaring en tips om deze situatie het beste te verwerken.
Headset kan niet worden bijgehouden 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 worden bedekt door haar of handen
- Als de omgeving niet voldoende textuur heeft.
Als dit gebeurt, kan de headset de positie niet met voldoende nauwkeurigheid bijhouden om hologrammen die door de wereld zijn vergrendeld weer te geven. U kunt niet achterhalen waar een ruimtelijk anker, stationair frame of faseframe is gebaseerd op het apparaat. U kunt echter nog steeds inhoud met hoofdtekst weergeven in het bijgevoegde referentiekader.
Uw app moet de gebruiker laten weten hoe ze positionele tracering terug kunnen krijgen, wat terugvalinhoud weergeeft die is vergrendeld met een terugvaltekst 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 worden bijgehouden als 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 zweven, omdat het apparaat zichzelf in deze dynamische omgeving probeert bij te houden. We raden u aan het apparaat in een minder dynamische omgeving te gebruiken als u dit scenario bereikt.
Headset houdt onjuist bij omdat de omgeving in de loop van de tijd aanzienlijk is gewijzigd
Wanneer u een headset gaat gebruiken in een omgeving waar meubels, wandhangingen enzovoort zijn verplaatst, is het mogelijk dat sommige hologrammen worden verplaatst van hun oorspronkelijke locaties. De eerdere hologrammen kunnen ook springen wanneer de gebruiker in de nieuwe ruimte beweegt, omdat het begrip van uw ruimte niet meer waar is. Het systeem probeert vervolgens de omgeving opnieuw toe te kennen en probeert ook 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 ruimten in een omgeving
Soms kan een huis of andere ruimte twee identieke gebieden hebben. Twee identieke vergaderruimten, twee identieke hoekgebieden, twee grote identieke posters die het weergaveveld van het apparaat bedekken. In dergelijke scenario's kan het apparaat soms worden verward tussen de identieke onderdelen en deze markeren als hetzelfde in de interne weergave. Dit kan ertoe leiden dat de hologrammen van sommige gebieden op andere locaties worden weergegeven. Het apparaat kan het bijhouden vaak verliezen omdat de interne weergave van de omgeving is beschadigd. In dit geval is het raadzaam om het omgevingskennis van het systeem opnieuw in te stellen. Het opnieuw instellen van de kaart leidt tot verlies van alle ruimtelijke ankerplaatsingen. Hierdoor wordt de headset goed bijgehouden in de unieke gebieden van de omgeving. Het probleem kan echter opnieuw optreden als het apparaat opnieuw wordt verward tussen de identieke gebieden.