Ruimtelijke ankers

Een ruimtelijk anker vertegenwoordigt een belangrijk punt in de wereld dat het systeem in de tijd bij houdt. Elk anker heeft een aanpasbaar coördinatensysteem, gebaseerd op andere ankers of referentieframes, om ervoor te zorgen dat ankerde hologrammen nauwkeurig op hun plaats blijven. Het weergeven van een hologram in het coördinatensysteem van een anker biedt u op elk moment de meest nauwkeurige positie voor dat hologram. Dit gaat ten koste van kleine aanpassingen in de tijd van de positie van het hologram, omdat het systeem het steeds weer terug verplaatst op basis van de echte wereld.

U kunt ruimtelijke ankers ook persistent maken en delen tussen toepassingssessies en op verschillende apparaten:

  • Door lokale ruimtelijke ankers op schijf op te slaan en later weer te laden, kan uw toepassing dezelfde locatie in de echte wereld berekenen voor meerdere toepassingssessies op één HoloLens.
  • Door Azure Spatial Anchors een cloudanker te maken, kan uw toepassing een ruimtelijk anker delen op meerdere HoloLens-, iOS- en Android-apparaten. Door elk apparaat een hologram te laten renderen met behulp van hetzelfde ruimtelijke anker, zien gebruikers dat het hologram op dezelfde plaats in de echte wereld wordt weergegeven. Dit maakt realtime gedeelde ervaringen mogelijk.
  • U kunt Ook Azure Spatial Anchors voor asynchrone hologrammen persistentie op HoloLens, iOS- en Android-apparaten. Door een duurzaam ruimtelijk anker in de cloud te delen, kunnen meerdere apparaten gedurende een periode hetzelfde persistente hologram observeren, zelfs als deze apparaten niet tegelijk aanwezig zijn.

Voor stand-scale of room-scale-ervaringen voor tethered desktop-headsets die binnen eendiameter van 5 meter blijven, kunt u doorgaans het referentieframe gebruiken in plaats van ruimtelijke ankers, waarmee u één coördinatensysteem kunt gebruiken om alle inhoud weer te geven. Als gebruikers met uw toepassing echter meer dan 5 meter in HoloLens kunnen lopen, mogelijk in een hele verdieping van een gebouw, hebt u ruimtelijke ankers nodig om de inhoud stabiel te houden.

Ruimtelijke ankers zijn geweldig voor hologrammen die in de wereld vast moeten blijven, maar zodra een anker is geplaatst, kan het niet worden verplaatst. Er zijn alternatieven voor ankers die geschikter zijn voor dynamische hologrammen die samen met de gebruiker taggen. Het is het beste om dynamische hologrammen te plaatsen met behulp van een stationair referentiekader (de basis voor de wereldcoördinaten van Unity) of een bijgevoegd referentieframe.

Aanbevolen procedures

Deze richtlijnen voor ruimtelijk anker helpen u bij het renderen van stabiele hologrammen die de echte wereld nauwkeurig volgen.

Ruimtelijke ankers maken waar gebruikers ze plaatsen

Meestal zijn het gebruikers die expliciet ruimtelijke ankers plaatsen.

Zo kan een toepassing HoloLens de star ray van de gebruiker kruisen met de mesh voor ruimtelijke toewijzing, zodat de gebruiker kan bepalen waar een hologram moet worden plaatsen. Wanneer de gebruiker tikt om dat hologram te plaatsen, maakt u een ruimtelijk anker op het snijpunt en plaats het hologram vervolgens aan de oorsprong van het coördinatensysteem van dat anker.

Lokale ruimtelijke ankers zijn eenvoudig en presteren goed om te maken. Het systeem combineert interne gegevens als meerdere ankers hun onderliggende sensorgegevens kunnen delen. We raden u aan een nieuw lokaal ruimtelijk anker te maken voor elk hologram dat een gebruiker expliciet plaatst, behalve in de gevallen die hieronder worden beschreven, zoals strikte groepen hologrammen.

Anker hologrammen altijd binnen 3 meter van hun anker renderen

Ruimtelijke ankers stabiliseren hun coördinatensysteem in de buurt van de oorsprong van het anker. Als u hologrammen meer dan 3 meter vanaf de oorsprong rendert, kunnen de hologrammen merkbare positiefouten ervaren in verhouding tot hun afstand tot die oorsprong vanwege lever-arm-effecten. Dit werkt als de gebruiker zich in de buurt van het anker bevindt, omdat het hologram ook ver van de gebruiker is verwijderd. Met andere woorden, de angular-fout van het verre hologram is klein. Als de gebruiker echter naar dat verre hologram gaat, is het in zijn weergave groot, waardoor de lever-arm-effecten van de verafgelegen ankerlanding duidelijk zichtbaar zijn.

Hologrammen groeperen die een star cluster moeten vormen

Meerdere hologrammen kunnen hetzelfde ruimtelijk anker delen als de toepassing verwacht dat deze hologrammen vaste relaties met elkaar onderhouden.

Als u bijvoorbeeld een holografische zonnestelsel in een ruimte animeert, is het beter om alle objecten van het zonnestelsel te binden aan één anker in het midden. Op die manier worden ze soepel op elkaar gebaseerd. In dit geval is het het zonnestelsel als geheel dat is verankerd, zelfs als de onderdelen dynamisch rond het anker worden verplaatst.

Het belangrijkste nadeel voor het behouden van de stabiliteit van hologrammen is dat u de bovenstaande regel van drie meter volgt.

Zeer dynamische hologrammen renderen met behulp van het stationaire referentiekader in plaats van een lokaal ruimtelijk anker

Als u een zeer dynamisch hologram hebt, zoals een teken dat rond een kamer loopt of een zwevende gebruikersinterface die volgt op de wand bij de gebruiker, is het het beste om lokale ruimtelijke ankers over te slaan en deze hologrammen rechtstreeks weer te geven in het coördinatensysteem dat wordt geleverd door het stationaire referentieframe. In Unity bereikt u dit door hologrammen rechtstreeks in wereldcoördinaten te plaatsen zonder een WorldAnchor. Hologrammen in een stationair referentiekader kan drift ervaren wanneer de gebruiker ver van het hologram is. Maar dit is minder waarschijnlijk zichtbaar voor dynamische hologrammen: ofwel het hologram is toch voortdurend in beweging of de beweging houdt het constant dicht bij de gebruiker waar drift wordt geminimaliseerd.

Een interessant geval van dynamische hologrammen is een object dat van het ene ankercoördinatensysteem naar het andere animeert. U kunt bijvoorbeeld twee 10 meter uit elkaar liggen, elk op hun eigen ruimtelijk anker, waarbij de ene persoon een handsball op de andere kan afvuren. Wanneer deballon wordt gelost, kunt u deze op de juiste locatie in het stationaire referentiekader renderen om samen te vallen met deluis in het ankercoördinaatsysteem van de eerste ervan. Het kan vervolgens het traject volgen in het stationaire referentiekader, omdat het 10 meter door de lucht ging. Wanneer deballon de andere manege bereikt, kunt u deze verplaatsen naar het ankercoördinaatsysteem van de tweede man om fysicaberekeningen mogelijk te maken met de stare lichamen van die man.

Als u een zeer dynamisch hologram deelt op meerdere apparaten, kiest u een ruimtelijk anker in de cloud om als bovenliggend anker te fungeren, omdat stationaire referentieframes niet kunnen worden gedeeld tussen apparaten. U moet er echter voor zorgen dat het dynamische hologram of de apparaten die het weergeven binnen de radius van 3 meter van het anker blijven, zodat het hologram stabiel wordt weergegeven op alle apparaten.

Vermijd het maken van een raster van ruimtelijke ankers

Mogelijk bent u geneigd om uw toepassing een regulier raster van ruimtelijke ankers te laten verwijderen terwijl de gebruiker rondloopt, waarbij dynamische objecten van anker naar anker worden verplaatst terwijl ze zich verplaatsen. Dit omvat echter meer beheer voor uw toepassing, zonder het voordeel van de diepe sensorgegevens die het systeem zelf intern onderhoudt. Voor deze gevallen bereikt u betere resultaten door uw hologrammen in het stationaire referentiekader te plaatsen, zoals beschreven in de bovenstaande sectie. Wanneer u vooraf een set ruimtelijke ankers in de cloud plaatst rond een statische ruimte, kunt u overwegen om de ruimtelijke ankers te plaatsen op de locaties van de sleutel hologrammen die de gebruiker volgens het bovenstaande principe tegenkomt in plaats van een willekeurig raster met ankers te maken. Dit zorgt ervoor dat u maximale stabiliteit krijgt voor deze belangrijke hologrammen.

Lokale ruimtelijke ankers vrijgeven die u niet meer nodig hebt

Hoewel een lokaal ruimtelijk anker actief is, geeft het systeem prioriteit aan het bewaren van de sensorgegevens in de buurt van dat anker. Als u een ruimtelijk anker niet meer gebruikt, stopt u met het openen van het coördinatensysteem. Hierdoor kunnen de onderliggende sensorgegevens zo nodig worden verwijderd.

Dit is vooral belangrijk voor lokale ankers die u hebt opgeslagen in de ruimtelijke ankeropslag. De sensorgegevens achter deze ankers worden permanent bewaard zodat uw toepassing dat anker in toekomstige sessies kan vinden, waardoor er minder ruimte is om andere ankers bij te houden. Lokale ankers alleen persistent maken die u in toekomstige sessies opnieuw moet vinden. We raden u aan deze uit de store te verwijderen wanneer ze niet meer zinvol zijn voor de gebruiker.

Voor ruimtelijke ankers in de cloud kan uw opslag worden geschaald zoals uw scenario vereist. U kunt zoveel cloudankers opslaan als u nodig hebt, zodat u ze vrij kunt geven wanneer u weet dat uw gebruikers het anker niet meer nodig hebben.

Zie ook