Världslåsning och rumsliga fästpunkter i Unity

World locking tools hero image

Att få dina hologram att stanna kvar, flytta med dig eller i vissa fall placera sig i förhållande till andra hologram är en stor del av att skapa Mixed Reality program. Den här artikeln tar dig igenom vår rekommenderade lösning med Hjälp av World Locking Tools, men vi kommer också att gå igenom hur du manuellt konfigurerar rumsliga fästpunkter i dina Unity-projekt. Innan vi hoppar in i någon kod är det viktigt att förstå hur Unity hanterar koordinatutrymme och fästpunkter i sin egen motor.

Koordinatsystem i världsskala

När du i dag skriver spel, datavisualiseringsappar eller appar för virtuell verklighet är den typiska metoden att upprätta ett absolut världskoordinatsystem som alla andra koordinater på ett tillförlitligt sätt kan mappa tillbaka till. I den miljön kan du alltid hitta en stabil transformering som definierar en relation mellan två objekt i den världen. Om du inte flyttade objekten förblir deras relativa transformeringar alltid desamma. Den här typen av globalt koordinatsystem är lätt att få rätt när du återger en rent virtuell värld där du känner till all geometri i förväg. Vr-appar i rumsskala etablerar idag vanligtvis den här typen av absoluta koordinatsystem i rumsskala med sitt ursprung på golvet.

Däremot har en untethered mixed reality-enhet som HoloLens en dynamisk sensordriven förståelse för världen och justerar kontinuerligt sin kunskap över tid av användarens omgivning när de går många meter över en hel våning i en byggnad. Om du i världsskala placerar alla dina hologram i ett naivt stelt koordinatsystem skulle de hologramen glida över tid, antingen baserat på världen eller i förhållande till varandra.

Headsetet kan till exempel för närvarande tro att två platser i världen är 4 meter från varandra, och sedan förfina den förståelsen senare och lära sig att platserna i själva verket är 3,9 meter från varandra. Om dessa hologram ursprungligen hade placerats 4 meter från varandra i ett enda stelt koordinatsystem, skulle en av dem alltid visas 0,1 meter från den verkliga världen.

Du kan placera rumsliga fästpunkter manuellt i Unity för att upprätthålla ett holograms position i den fysiska världen när användaren är mobil. Detta offrar dock självkonsekvensen i den virtuella världen. Olika fästpunkter rör sig ständigt i förhållande till varandra och rör sig också genom det globala koordinatutrymmet. I det här scenariot blir enkla uppgifter som layout svårt. Fysiksimulering kan också vara problematiskt.

WLT (World Locking Tools ) ger dig det bästa av två världar och stabiliserar ett enda stelt koordinatsystem med hjälp av ett internt utbud av rumsliga fästpunkter spridda över hela den virtuella scenen när användaren rör sig. WLT analyserar koordinaterna för kameran och dessa rumsliga fästpunkter varje bildruta. I stället för att ändra koordinaterna för allt i världen för att kompensera för korrigeringarna i koordinaterna för användarens huvud, korrigerar WLT bara huvudets koordinater istället.

Välj din världslåsningsmetod

Om möjligt använder du World Locking Tools för hologrampositionering.

World Locking Tools tillhandahåller ett stabilt koordinatsystem som minimerar synliga inkonsekvenser mellan virtuella och verkliga markörer. World Locking Tools låser hela scenen med en delad pool med fästpunkter, i stället för att låsa varje grupp med objekt med gruppens egna enskilda fästpunkt.

World Locking Tools hanterar automatiskt internt skapande och hantering av rumsliga fästpunkter. Du behöver inte interagera med ARAnchorManager eller WorldAnchor för att hålla dina hologram världslåsta.

  • För Unity 2019/2020 med OpenXR eller Windows XR-plugin-programmet använder du ARAnchorManager.
  • Använd WorldAnchor för äldre Unity-versioner eller WSA-projekt.

Konfigurera världslåsning

Om du vill komma igång med World Locking Tools laddar du ned Mixed Reality funktionsverktyget. Mer information om grunderna finns på huvudsidan för World Locking Tools för länkar till Översikt, Snabbstart och andra användbara ämnen.

Automatisk installation

När projektet är klart kör du verktyget konfigurera scen från Mixed Reality > World Locking Tools:

Unity-redigeraren med Mixed Reality Toolkit-menyn markerad

Viktigt

Verktyget Konfigurera scen kan köras igen när som helst. Det bör till exempel köras om AR-målet har ändrats från Äldre till XR SDK. Om scenen redan är korrekt konfigurerad har det ingen effekt att köra verktyget.

Visualiserare

Under tidig utveckling kan det vara bra att lägga till visualiseringar för att säkerställa att WLT konfigureras och fungerar korrekt. De kan tas bort för produktionsprestanda eller om de av någon anledning inte längre behövs med hjälp av verktyget Ta bort visualiserare. Mer information om visualiseringarna finns i verktygsdokumentationen.

Beständig världslåsning

Rumsliga fästpunkter sparar hologram i verkligt utrymme mellan programsessioner. När de har sparats i HoloLens-ankararkivet kan rumsliga fästpunkter hittas och läsas in i olika sessioner och är en idealisk reserv när det inte finns någon internetanslutning.

Viktigt

Lokala fästpunkter lagras på enheten, medan Azure Spatial Anchors lagras i molnet. Du kan ha lokala och Azure-fästpunkter i samma projekt utan konflikt. Mer information om hur du integrerar Azure-molntjänster för att lagra dina fästpunkter finns i Azure Spatial Anchors.

Som standard återställer World Locking Tools Unitys koordinatsystem i förhållande till den fysiska världen mellan sessioner på enheter som stöder beständighet av lokala rumsliga fästpunkter. Om ett hologram ska visas på samma plats i den fysiska världen efter att programmet har avslutats och körts på nytt behöver programmet bara återställa samma pose till hologrammet.

Kontextkomponent för världslåsning i Unity Inspector

Om programmet behöver finare kontroll kan du inaktivera Spara automatiskt och läsa in automatiskt i inspektören och hantera beständighet från ett skript. Mer information finns i Spara rumsliga koordinatsystem.

World Locking Tools stöder endast lokal fästpunktspersistence på HoloLens-enheter. För Android-, iOS- och HoloLens-enheter integrerar du med Azure Spatial Anchors för att stödja beständighet och delning av koordinatutrymmen mellan sessioner och enheter. Mer information och exempel som använder World Locking Tools med Azure Spatial Anchors finns i World Locking Tools (WLT) kombinerat med Azure Spatial Anchors (ASA).

Nästa steg

Dela ett världslåst koordinatutrymme:

Lär dig mer om rumslig mappning:

Gå tillbaka till unity-utvecklingskontrollpunkterna:

Se även