Dela via


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

Hero-bild för världslåsningsverktyg

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 skapandet av Mixed Reality-program. Den här artikeln tar dig igenom vår rekommenderade lösning med hjälp av World Locking Tools, men vi går även igenom hur du konfigurerar rumsliga fästpunkter manuellt i dina Unity-projekt. Innan vi går 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

I dag, när du 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 mappas 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 av världen och justerar kontinuerligt sin kunskap över tid för 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 dessa hologram sluta glida över tid, antingen baserat på världen eller i förhållande till varandra.

Till exempel kan headsetet för närvarande tro att två platser i världen är 4 meter ifrån varandra, och sedan förfina den förståelsen och lära sig att platserna i själva verket är 3,9 meter ifrå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 behå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 problematisk.

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 runt. WLT analyserar koordinaterna för kameran och dessa spatiala 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 i stä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 de synliga inkonsekvenserna 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 individuella 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.

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

Konfigurera världslåsning

Kom igång med World Locking Tools genom att ladda ned funktionsverktyget för Mixed Reality. Mer information om grunderna finns på den huvudsakliga dokumentationssidan 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 vald

Viktigt!

Verktyget Konfigurera scen kan köras igen när som helst. Det bör till exempel köras igen 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 visualiserare för att säkerställa att WLT är konfigurerat och fungerar korrekt. De kan tas bort för produktionsprestanda, eller om de av någon anledning inte längre behövs med verktyget Ta bort visualiserare. Mer information om visualiseringarna finns i verktygsdokumentationen.

Beständig världslåsning

Spatiala fästpunkter sparar hologram i verkligt utrymme mellan programsessioner. När de har sparats i HoloLens-fästpunktsarkivet 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 fästpunkter 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 du vill att 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-inspektören

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 ankarpers på HoloLens-enheter. För Android-, iOS- och HoloLens-enheter kan du integrera med Azure Spatial Anchors för att stödja beständighet och delning av koordinatutrymmen mellan sessioner och enheter. Mer information och exempel med hjälp av 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 kontrollpunkterna för Unity-utveckling:

Se även