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:

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 :

HoloLens-projektinställningar med funktioner markerade

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:

Begär Android-behörighetsfunktion

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

Ange Android-behörigheter

Öppna slutligen Projektinställningar > Android och ange samma behörigheter i fältet Extra behörigheter under Avancerad APK-paketering:

Inställningar för Android APK-projekt

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:

Starta platstjänster för iOS

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:

  1. Klicka på Redigera > plugin-program och söka efter Azure Spatial Anchors och Azure Spatial Anchors For WMR.
  2. Markera kryssrutan Aktiverad i båda plugin-programmen för att tillåta åtkomst till Skissbiblioteken för Azure Spatial Anchors i ditt program.

Skärmbild av spatial Anchors-plugin-program i Unreal Editor

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:

  1. Klicka på Redigera > plugin-program och söka efter Azure Spatial Anchors och Azure Spatial Anchors för ARCore.
  2. Markera kryssrutan Aktiverad i båda plugin-programmen för att tillåta åtkomst till Skissbiblioteken för Azure Spatial Anchors i ditt program.

Android-plugin-program i Unreal Editor

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:

  1. Klicka på Redigera > plugin-program och söka efter Azure Spatial Anchors och Azure Spatial Anchors For ARKit.
  2. Markera kryssrutan Aktiverad i båda plugin-programmen för att tillåta åtkomst till Skissbiblioteken för Azure Spatial Anchors i ditt program.

Asa-plugin-program för iOS i Unreal Editor

  1. Sök även efter Mobile Location Services och Mobile Location Services – IOS-implementering
  2. Markera kryssrutan Aktiverad i båda plugin-program så att iOS-enheten får åtkomst till den aktuella platsen.

Plugin-program för iOS-plats i Unreal Editor

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:

  1. Öppna skissen för den pawn som du använder i programmet.
  2. 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.

Skärmbild av informationspanelen med konto-ID, nyckel och variabeltyp för Azure Spatial Anchors markerat

Starta en Azure Spatial Anchors-session genom att:

  1. 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.
  2. 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.

Skiss för att starta anpassad händelse för Azure Spatial Anchors-sessionen

  1. 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.

Skiss för konfigurationssessionsfunktion med konto-ID och nyckel tillagd

  1. Starta Azure Spatial Anchors-sessionen så att programmet kan skapa och hitta Azure Spatial Anchors.

Skiss för startfunktionen för azure spatial anchors-sessionen

Det är bra att rensa Azure Spatial Anchors-resurser i Event Graph-skissen när du inte längre använder tjänsten:

  1. 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.

Skiss för att stoppa anpassad händelse- och stoppsessionsfunktion för Azure Spatial Anchors-sessioner

  1. 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.

Skiss för att förstöra sessionsfunktion

Event Graph-skissen bör se ut som skärmbilden nedan:

Skiss för fullständig händelsediagram över konfigurationen av Azure Spatial Anchor-sessionen

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:

  1. 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.

Skiss för att skapa anpassad azure spatial anchor-händelse

  1. 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.

Skiss för att skapa anpassad azure spatial anchor-händelse med scenkomponent

Så här skapar och sparar du en Azure Spatial Anchor för en Unreal Scene-komponent:

  1. 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.

Skiss av scenkomponent som är ansluten till pin-komponentfunktionen

  1. 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.

Skiss av pin-komponentfunktion ansluten för att skapa en molnankarfunktion som returnerar ARPin

  1. 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.

Skiss av molnankare ansluten för att ange förfallofunktion med ett livslängdsvärde på 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.

Skiss av fästpunkt som är redo att sparas i uppsättningsvariabeln

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.

Skiss för att spara molnankarfunktion som anropas

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.

Skiss med osparade fästpunkter som sparas igen i den angivna variabeln

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.

Skiss för borttagning av molnankarfunktion som anropas

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:

Skiss för komplett händelsediagram för hantering av molnankare

Hitta befintliga fästpunkter

Befintliga fästpunkter kan skapas av peer-datorer med Tjänsten Azure Spatial Anchors:

  1. 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.

Skiss för lagring av anpassad händelse för Azure Spatial Anchor-identifierare med funktionen hämta Azure-molnidentifierare

  1. 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.

Skärmbild av BP_Pawn öppnas i skissredigeraren med komponenter och detaljpaneler öppna

  1. 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.

Skiss för startspelshändelse ansluten till ASAAnchor-lokaliserat ombud

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:

  1. Kontrollera att en Azure Spatial Anchors-session körs.
  2. Skapa en AzureSpatialAnchorsLocateCriteria.
    • Du kan ange olika platsparametrar som avståndet från användaren eller avståndet från en annan fästpunkt.
  3. Deklarera Azure Spatial Anchor-identifieraren som du letar efter i AzureSpatialAnchorsLocateCritieria.
  4. Anropa Create Watcher.

Skiss för att starta anpassad händelse för Azure Spatial Anchors-bevakaren

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.

Skiss för stop watcher-funktionen som anropas

Den slutliga Event Graph-skissen bör nu se ut som skärmbilden nedan:

Skiss över en fullständig händelsegraf för hantering av fästpunktsdelegathändelser

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.

Nästa steg