Ruimtelijke ankers
Een ruimtelijk anker vertegenwoordigt een belangrijk punt in de wereld dat het systeem in de loop van de tijd bijhoudt. Elk anker heeft een aanpasbaar coördinatensysteem, gebaseerd op andere ankers of frames van referentie, om ervoor te zorgen dat verankerde hologrammen nauwkeurig op hun plaats blijven. Het weergeven van een hologram in het coördinaatsysteem van een anker geeft u op elk gewenst moment de meest nauwkeurige plaatsing voor dat hologram. Dit komt ten koste van kleine aanpassingen in de loop van de tijd aan de positie van het hologram, omdat het systeem het voortdurend weer op zijn plaats verplaatst op basis van de echte wereld.
U kunt ook ruimtelijke ankers behouden en delen in toepassingssessies: Door lokale ruimtelijke ankers op schijf op te slaan en ze later weer te laden, kan uw toepassing dezelfde locatie in de echte wereld berekenen in meerdere toepassingssessies op één HoloLens.
Voor permanente of ruimteschaalervaringen voor tethered desktop headsets die binnen een diameter van 5 meter blijven, kunt u meestal het fasekader van referentie gebruiken in plaats van ruimtelijke ankers, waarmee u één coördinatensysteem krijgt om alle inhoud weer te geven. Als uw toepassing gebruikers echter meer dan 5 meter in HoloLens laat rondlopen, misschien gedurende een hele verdieping van een gebouw, hebt u ruimtelijke ankers nodig om inhoud stabiel te houden.
Hoewel ruimtelijke ankers ideaal zijn voor hologrammen die in de wereld moeten blijven staan, kan het niet meer worden verplaatst zodra een anker is geplaatst. Er zijn alternatieven voor ankers die geschikter zijn voor dynamische hologrammen die samen met de gebruiker taggen. U kunt dynamische hologrammen het beste positioneren met behulp van een stationair referentiekader (de basis voor de wereldcoördinaten van Unity) of een bijgevoegd referentiekader.
Aanbevolen procedures
Deze richtlijnen voor ruimtelijke ankers helpen u stabiele hologrammen weer te geven die de echte wereld nauwkeurig bijhouden.
Ruimtelijke ankers maken waar gebruikers ze plaatsen
Normaal gesproken zijn gebruikers die expliciet ruimtelijke ankers plaatsen.
Op HoloLens kan een toepassing bijvoorbeeld de kijkstraal van de gebruiker kruisen met de ruimtelijke toewijzingsmaas, zodat de gebruiker kan bepalen waar een hologram moet worden gezet. Wanneer de gebruiker op dat hologram tikt, maakt u een ruimtelijk anker op het snijpunt en plaatst u het hologram vervolgens op de oorsprong van het coördinatensysteem van dat anker.
Lokale ruimtelijke ankers zijn eenvoudig en presterend 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 gevallen die hieronder worden beschreven, zoals starre groepen hologrammen.
Altijd verankerde hologrammen binnen 3 meter van hun anker weergeven
Ruimtelijke ankers stabiliseren hun coördinatensysteem in de buurt van de oorsprong van het anker. Als u hologrammen meer dan 3 meter van de oorsprong weergeeft, kunnen de hologrammen merkbare positionele fouten ervaren in verhouding tot hun afstand tot die oorsprong vanwege leverarmeffecten. Dit werkt als de gebruiker zich in de buurt van het anker bevindt, omdat het hologram zich ook ver van de gebruiker bevindt. Met andere woorden, de hoekige fout van het verre hologram is klein. Als de gebruiker echter naar dat verre hologram loopt, is het groot in hun weergave, waardoor de leverarmeffecten van de verre ankeroorsprong duidelijk zijn.
Hologrammen groeperen die een stijf cluster moeten vormen
Meerdere hologrammen kunnen hetzelfde ruimtelijke anker delen als de toepassing verwacht dat deze hologrammen vaste relaties met elkaar onderhouden.
Als u bijvoorbeeld een holografisch zonnestelsel in een kamer aan het animeren bent, is het beter om alle objecten van het zonnestelsel te koppelen aan één anker in het midden. Op die manier bewegen ze soepel op elkaar. In dit geval is het het zonnestelsel als geheel dat is verankerd, ook al bewegen de onderdelen dynamisch rond het anker.
De belangrijkste kanttekening om de stabiliteit van hologrammen te behouden, is door de bovenstaande regel van 3 meter te volgen.
Zeer dynamische hologrammen weergeven met behulp van het stationaire referentiekader in plaats van een lokaal ruimtelijk anker
Als u een zeer dynamisch hologram hebt, zoals een teken dat rondloopt in een ruimte of een zwevende gebruikersinterface die langs de muur bij de gebruiker volgt, kunt u het beste lokale ruimtelijke ankers overslaan en deze hologrammen rechtstreeks weergeven in het coördinatensysteem dat wordt geleverd door het stationaire referentiekader. In Unity bereikt u dit door hologrammen rechtstreeks in wereldcoördinaten te plaatsen zonder een WorldAnchor. Hologrammen in een stationair referentiekader kunnen afwijkingen ervaren wanneer de gebruiker ver van het hologram is. Maar dit is minder waarschijnlijk merkbaar voor dynamische hologrammen: het hologram beweegt voortdurend of de beweging houdt het voortdurend dicht bij de gebruiker waar drift wordt geminimaliseerd.
Een interessant geval van dynamische hologrammen is een object dat van het ene verankerde coördinaatsysteem naar het andere animaties verwijst. U kunt bijvoorbeeld twee kastelen van 10 meter uit elkaar hebben, elk op hun eigen ruimtelijke anker met één kasteel dat een kanonskogel afvuren in het andere kasteel. Wanneer de kanonskogel wordt afgevuurd, kunt u het weergeven op de juiste locatie in het stationaire referentiekader om samen te vallen met het kanon in het verankerde coördinaatsysteem van het eerste kasteel. Het kan dan zijn traject volgen in het stationaire referentiekader terwijl het 10 meter door de lucht vliegt. Naarmate het kanonskogel het andere kasteel bereikt, kunt u het verplaatsen naar het verankerde coördinaatsysteem van het tweede kasteel om fysicaberekeningen met de stijve lichamen van dat kasteel mogelijk te maken.
Als u een zeer dynamisch hologram deelt op apparaten, kiest u een ruimtelijk anker in de cloud om als bovenliggend element te fungeren, omdat stationaire referentieframes niet kunnen worden gedeeld tussen apparaten. Zorg er echter voor dat het dynamische hologram of de apparaten die het bekijken binnen de straal van 3 meter van het anker blijven, zodat het hologram op alle apparaten stabiel wordt weergegeven.
Vermijd het maken van een raster met ruimtelijke ankers
Het is misschien verleidelijk om ervoor te zorgen dat uw toepassing een normaal raster met ruimtelijke ankers neerzet terwijl de gebruiker rondloopt en dynamische objecten van anker naar anker overzet terwijl ze bewegen. 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 een set ruimtelijke ankers in de cloud vooraf plaatst rond een statische ruimte, kunt u overwegen de ruimtelijke ankers op de locaties van de sleutel hologrammen te plaatsen 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 sleutel 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 die zich in de buurt van dat anker bevinden. Als u geen ruimtelijk anker meer gebruikt, stopt u met het openen van het coördinatensysteem. Hierdoor kunnen de onderliggende sensorgegevens indien nodig worden verwijderd.
Dit is vooral belangrijk voor lokale ankers die u in het ruimtelijke ankerarchief hebt bewaard. De sensorgegevens achter deze ankers worden permanent bewaard, zodat uw toepassing dat anker in toekomstige sessies kan vinden, waardoor er minder ruimte beschikbaar is om andere ankers bij te houden. Behoud alleen lokale ankers die u opnieuw moet vinden in toekomstige sessies. We raden u aan ze uit de store te verwijderen wanneer ze niet meer zinvol zijn voor de gebruiker.
Voor ruimtelijke ankers in de cloud kan uw opslag naar behoefte worden geschaald. U kunt zoveel cloudankers opslaan als u nodig hebt, zodat u ze vrijgeeft wanneer u weet dat uw gebruikers het anker niet opnieuw nodig hebben.