Azure Spatial Anchors i Unreal
Azure Spatial Anchors är en Microsoft Mixed Reality-tjänst som gör att enheter för förhöjd verklighet kan identifiera, dela och bevara fästpunkter i den fysiska världen. Dokumentationen nedan innehåller instruktioner för att integrera Tjänsten Azure Spatial Anchors i ett Unreal-projekt. Om du vill ha mer information kan du läsa azure spatial anchors-tjänsten.
Anteckning
Unreal Engine 4.26 har nu plugin-program för ARKit- och ARCore-stöd om du riktar in dig på iOS eller Android.
Viktigt
Lokala fästpunkter lagras på enheten, medan Azure Spatial Anchors lagras i molnet. Om du vill lagra dina fästpunkter lokalt på en enhet har vi ett local spatial anchors-dokument som kan hjälpa dig genom processen. Observera att du kan ha lokala fästpunkter och Azure-fästpunkter i samma projekt utan konflikter.
Förutsättningar
Kontrollera att du har gjort så här för att slutföra den här guiden:
- Installerat Microsoft OpenXR-plugin-program som är tillgängligt från Unreal Marketplace eller GitHub.
- Unreal version 4.25 eller senare har installerats
- En HoloLens 2 projektkonfiguration i Unreal
- Läs igenom översikten över Azure Spatial Anchors
- Grundläggande kunskaper om C++ och Unreal
Hämta kontoinformation för Azure Spatial Anchors
Innan du använder Azure Spatial Anchors i projektet måste du:
- Skapa en spatial anchors-resurs och kopiera kontofälten som anges nedan. Dessa värden används för att autentisera användare med programmets konto:
- Konto-ID
- Kontonyckel
Mer information finns i autentiseringsdokumenten för Azure Spatial Anchors .
Anteckning
Azure Spatial Anchors i Unreal 4.25 stöder inte Azure AD autentiseringstoken, men stöd för den här funktionen kommer i en senare version.
Aktivera funktioner och behörigheter
HoloLens
Öppna Projektinställningar > HoloLens och aktivera internetklientfunktionen :
Android
För att en Android-app ska kunna visa en behörighetsdialogruta och tillåta platsfunktioner måste funktionen Begär Android-behörigheter anropas innan du försöker starta Azure Spatial Anchor-sessionen:
Skapa en lokal variabel för indatabehörigheterna och fyll i med:
- android.permission.ACCESS_WIFI_STATE
- android.permission.CHANGE_WIFI_STATE
- android.permission.INTERNET
- android.permission.BLUETOOTH
- android.permission.BLUETOOTH_ADMIN
- android.permission.ACCESS_COARSE_LOCATION
- android.permission.ACCESS_FINE_LOCATION
- android.permission.CAMERA
Öppna slutligen Projektinställningar > Android och ange samma behörigheter i fältet Extra behörigheter under Avancerad APK-paketering:
iOS
Om du vill skapa ett program för iOS måste du använda Unreal på en Mac. Om du vill paketera med ett Apple-utvecklarkonto öppnar du Projektinställningar > iOS och rullar ned till avsnittet Skapa . Aktivera kryssrutan Automatisk signering och fyll i IOS-team-ID :t med ditt team-ID.
Du hittar ditt team-ID genom att logga in på developer.apple.com, navigera till fliken Medlemskap och söka efter team-ID.
Om du vill visa en behörighetsdialogruta och tillåta att iOS-enheten får åtkomst till platsinformation måste funktionerna Init Location Services och Start Location Services anropas innan du försöker starta Azure Spatial Anchor-sessionen:
Lägga till plugin-program för Azure Spatial Anchors
Tips
När du använder Azure Spatial Anchors för Unreal finns det ett Azure Spatial Anchors-plugin-program och ett plattformsspecifikt plugin-program (WMR, ARKit, ARCore, OpenXR). Du bör bara ha ett plattformsspecifikt plugin-program aktiverat i taget.
HoloLens
Aktivera Azure Spatial Anchors-plugin-programmet i Unreal-redigeraren genom att:
- Klicka på Redigera > plugin-program och söka efter Azure Spatial Anchors och Azure Spatial Anchors For WMR.
- Markera kryssrutan Aktiverad i båda plugin-programmen för att tillåta åtkomst till Skissbiblioteken för Azure Spatial Anchors i ditt program.
När det är klart startar du om Unreal Editor för att ändringarna i plugin-programmet ska börja gälla. Projektet är nu redo att använda Azure Spatial Anchors.
Android
Aktivera Azure Spatial Anchors-plugin-programmet i Unreal-redigeraren genom att:
- Klicka på Redigera > plugin-program och söka efter Azure Spatial Anchors och Azure Spatial Anchors för ARCore.
- Markera kryssrutan Aktiverad i båda plugin-programmen för att tillåta åtkomst till Skissbiblioteken för Azure Spatial Anchors i ditt program.
När det är klart startar du om Unreal Editor för att ändringarna i plugin-programmet ska börja gälla. Projektet är nu redo att använda Azure Spatial Anchors.
iOS
Aktivera Azure Spatial Anchors-plugin-programmet i Unreal-redigeraren genom att:
- Klicka på Redigera > plugin-program och söka efter Azure Spatial Anchors och Azure Spatial Anchors For ARKit.
- Markera kryssrutan Aktiverad i båda plugin-programmen för att tillåta åtkomst till Skissbiblioteken för Azure Spatial Anchors i ditt program.
- Sök även efter Mobile Location Services och Mobile Location Services – IOS-implementering
- Markera kryssrutan Aktiverad i båda plugin-program så att iOS-enheten får åtkomst till den aktuella platsen.
När det är klart startar du om Unreal Editor för att ändringarna i plugin-programmet ska börja gälla. Projektet är nu redo att använda Azure Spatial Anchors.
Starta en Spatial Anchors-session
Med en Azure Spatial Anchors-session kan klientprogram kommunicera med Tjänsten Azure Spatial Anchors. Du måste skapa och starta en Azure Spatial Anchors-session för att skapa, bevara och dela Azure Spatial Anchors:
- Öppna skissen för den pawn som du använder i programmet.
- Lägg till två strängvariabler för konto-ID och kontonyckel och tilldela sedan motsvarande värden från ditt Azure Spatial Anchors-konto för att autentisera sessionen.
Starta en Azure Spatial Anchors-session genom att:
- Kontrollerar att en AR-session körs i HoloLens-programmet eftersom Azure Spatial Anchors-sessionen inte kan starta förrän en AR-session körs. Om du inte har en konfiguration skapar du en AR-sessionstillgång.
- Lägga till den anpassade händelsen Starta Azure Spatial Anchors-sessionen och konfigurera den enligt skärmbilden nedan.
- Att skapa en session startar inte sessionen som standard, vilket gör att du kan konfigurera sessionen för autentisering med Tjänsten Azure Spatial Anchors.
- Konfigurera Azure Spatial Anchors-sessionen för att ange konto-ID, kontonyckel, kontodomän och kurslokaliseringsinställningar. Alla kryssrutor ska vara aktiverade i inställningarna för kurslokalisering så att tjänsten azure spatial anchor kan använda sensordata för att hitta fästpunkter.
- Starta Azure Spatial Anchors-sessionen så att programmet kan skapa och hitta Azure Spatial Anchors.
Det är bra att rensa Azure Spatial Anchors-resurser i Event Graph-skissen när du inte längre använder tjänsten:
- Stoppa Azure Spatial Anchors-sessionen. Sessionen kommer inte längre att köras, men dess associerade resurser finns fortfarande i plugin-programmet Azure Spatial Anchors.
- Förstör Azure Spatial Anchors-sessionen för att rensa alla Azure Spatial Anchors-sessionsresurser som fortfarande är kända för plugin-programmet Azure Spatial Anchors.
Event Graph-skissen bör se ut som skärmbilden nedan:
Skapa en fästpunkt
En Azure Spatial Anchor representerar en fysisk värld i programutrymmet för förhöjd verklighet, som låser innehållet i förhöjd verklighet till fysiska platser. Azure Spatial Anchors kan också delas mellan olika användare. Den här delningen gör att innehåll för förhöjd verklighet som ritats på olika enheter kan placeras på samma plats i den fysiska världen.
Så här skapar du en ny Azure Spatial Anchor:
- Kontrollera att en Azure Spatial Anchors-session körs. Programmet kan inte skapa eller bevara en Azure Spatial Anchor när ingen Azure Spatial Anchors-session körs.
- Skapa eller hämta en unreal scene-komponent som ska ha kvar sin plats.
- I bilden nedan används komponenten Scene Component Needing Anchor som en variabel. En unreal Scene-komponent krävs för att upprätta en programvärldstransformering för en AR Pin och Azure Spatial Anchor.
Så här skapar och sparar du en Azure Spatial Anchor för en Unreal Scene-komponent:
- Anropa pin-komponenten för den overkliga scenkomponenten och ange Scenkomponentens Världstransformering som den världstransformering som används för AR-stiftet.
- Unreal spårar AR-punkter i programutrymmet med hjälp av AR-pins, som används för att skapa en Azure Spatial Anchor. I Unreal motsvarar en AR-pins en SpatialAnchor på HoloLens.
- Anropa Skapa Cloud Anchor med hjälp av den nyligen skapade AR-pinen.
- Skapa Cloud Anchor skapar en Azure Spatial Anchor lokalt men inte i Tjänsten Azure Spatial Anchor. Parametrar för Azure Spatial Anchor, till exempel ett förfallodatum, kan anges innan du skapar Azure Spatial Anchor med tjänsten.
- Ange förfallodatum för Azure Spatial Anchor. Med den här funktionens lifetime-parameter kan utvecklaren i sekunder ange hur länge fästpunkten ska underhållas av tjänsten.
- En veckas förfallotid tar till exempel ett värde på 60 sekunder x 60 minuter x 24 timmar x sju dagar = 604 800 sekunder.
När du har angett fästpunktsparametrar deklarerar du fästpunkten som redo att spara. I exemplet nedan läggs den nyligen skapade Azure Spatial Anchor till i en uppsättning Azure Spatial Anchors som behöver sparas. Den här uppsättningen deklareras som en variabel för pawn-skissen.
Spara en fästpunkt
När du har konfigurerat Azure Spatial Anchor med dina parametrar anropar du Spara Cloud Anchor. Spara Cloud Anchor deklarerar fästpunkten till Tjänsten Azure Spatial Anchors. När anropet till Spara Cloud Anchor lyckas är Azure Spatial Anchor tillgängligt för andra användare av Tjänsten Azure Spatial Anchor.
Anteckning
Save Cloud Anchor är en asynkron funktion och kan bara anropas på en speltrådshändelse, till exempel EventTick. Spara Cloud Anchor kanske inte visas som en tillgänglig skissfunktion i anpassade skissfunktioner. Den bör dock vara tillgänglig i Skissredigeraren för Pawn Event Graph.
I exemplet nedan lagras Azure Spatial Anchor i en uppsättning under ett återanrop till indatahändelsen. Fästpunkten sparas sedan på EventTick. Det kan ta flera försök att spara en Azure Spatial Anchor beroende på mängden rumsliga data som din Azure Spatial Anchors-session har skapat. Det är därför det är en bra idé att kontrollera om spara-anropet lyckades.
Om fästpunkten inte sparas läser du den till den uppsättning fästpunkter som fortfarande behöver sparas. Framtida EventTicks fortsätter att försöka spara fästpunkten tills den har lagrats.
När fästpunkten har sparats fungerar AR Pins-transformen som en referenstransformering för att placera innehåll i din app. Andra användare kan identifiera fästpunkten och justera AR-innehållet för olika enheter i den fysiska världen.
Ta bort en fästpunkt
Du kan ta bort fästpunkter från Azure Spatial Anchor-tjänsten genom att anropa Ta bort Cloud Anchor.
Anteckning
Delete Cloud Anchor är en latent funktion och kan bara anropas på en speltrådshändelse, till exempel EventTick. Ta bort Cloud Anchor kanske inte visas som en tillgänglig skissfunktion i anpassade skissfunktioner. Den bör dock vara tillgänglig i Skissredigeraren för Pawn Event Graph.
I exemplet nedan flaggas fästpunkten för borttagning av en anpassad indatahändelse. Borttagningen görs sedan på EventTick. Om borttagningen av fästpunkten misslyckas lägger du till Azure Spatial Anchor i uppsättningen fästpunkter som flaggats för borttagning och försöker igen vid senare EventTicks.
Din Event Graph-skiss bör nu se ut som skärmbilden nedan:
Hitta befintliga fästpunkter
Befintliga fästpunkter kan skapas av peer-datorer med Tjänsten Azure Spatial Anchors:
- Hämta en Azure Spatial Anchor-identifierare för fästpunkten som du vill identifiera.
- En fästpunktsidentifierare kan hämtas för en fästpunkt som skapats av samma enhet i en tidigare Azure Spatial Anchors-session. Den kan också skapas och delas av peer-enheter som interagerar med Tjänsten Azure Spatial Anchors.
- Lägg till en AzureSpatialAnchorsEvent-komponent i din pawn-skiss.
- Med den här komponenten kan du prenumerera på olika Azure Spatial Anchors-händelser, till exempel händelser som anropas när Azure Spatial Anchors finns.
- Prenumerera på ASAAnchor-ombudet som finns för komponenten AzureSpatialAnchorsEvent .
- Ombudet meddelar programmet när nya fästpunkter som är associerade med Azure Spatial Anchors-kontot har hittats.
- Med händelseåteranropet har Azure Spatial Anchors som skapats av peer-datorer som använder Azure Spatial Anchors-sessionen inte AR Pins som standard. För att skapa en AR-pins för den identifierade Azure Spatial Anchor kan utvecklare anropa Create ARPin Around Azure Cloud Spatial Anchor.
För att hitta Azure Spatial Anchors som skapats av peer-datorer med tjänsten Azure Spatial Anchor måste programmet skapa en Azure Spatial Anchors Watcher:
- Kontrollera att en Azure Spatial Anchors-session körs.
- Skapa en AzureSpatialAnchorsLocateCriteria.
- Du kan ange olika platsparametrar som avståndet från användaren eller avståndet från en annan fästpunkt.
- Deklarera Azure Spatial Anchor-identifieraren som du letar efter i AzureSpatialAnchorsLocateCritieria.
- Anropa Create Watcher.
Nu börjar programmet leta efter Azure Spatial Anchors som är kända för Tjänsten Azure Spatial Anchors, vilket innebär att användarna kan hitta Azure Spatial Anchors som skapats av deras peer-datorer.
När du har lokaliserat Azure Spatial Anchor anropar du Stop Watcher för att stoppa Azure Spatial Anchors Watcher och rensa bevakarresurser.
Den slutliga Event Graph-skissen bör nu se ut som skärmbilden nedan:
Nästa kontrollpunkt för utveckling
Om du följer unreal-utvecklingsresan som vi har lagt fram är du mitt uppe i att utforska MRTK-kärnbyggstenarna. Härifrån kan du fortsätta till nästa byggblock:
Eller gå vidare till Mixed Reality plattformsfunktioner och API:er:
Du kan alltid gå tillbaka till kontrollpunkterna för Unreal-utveckling när som helst.