Sdílet prostřednictvím


Azure Spatial Anchors v Unreal

Azure Spatial Anchors je služba Microsoftu Mixed Reality, která umožňuje zařízením rozšířené reality zjišťovat, sdílet a uchovávat kotevní body ve fyzickém světě. Následující dokumentace obsahuje pokyny k integraci služby Azure Spatial Anchors do projektu Unreal. Pokud hledáte další informace, podívejte se na službu Azure Spatial Anchors.

Poznámka

Unreal Engine 4.26 teď obsahuje moduly plug-in pro podporu ARKitu a ARCore, pokud cílíte na iOS nebo Android.

Důležité

Místní ukotvení se ukládají na zařízení, zatímco Azure Spatial Anchors jsou uložené v cloudu. Pokud chcete ukládat kotvy místně na zařízení, máme pro vás dokument Local Spatial Anchors , který vás tímto procesem provede. Mějte na paměti, že místní kotvy a kotvy Azure můžete mít ve stejném projektu bez konfliktu.

Požadavky

Pokud chcete dokončit tuto příručku, ujistěte se, že máte:

Získání informací o účtu Azure Spatial Anchors

Než ve svém projektu použijete Azure Spatial Anchors, musíte provést následující:

  • Vytvořte prostředek spatial anchors a zkopírujte níže uvedená pole účtu. Tyto hodnoty se používají k ověřování uživatelů pomocí účtu vaší aplikace:
    • Account ID
    • Klíč účtu

Další informace najdete v dokumentaci k ověřování Azure Spatial Anchors .

Poznámka

Azure Spatial Anchors ve verzi Unreal 4.25 nepodporuje ověřovací tokeny Azure AD, ale podpora této funkce bude k dispozici v pozdější verzi.

Povolení možností a oprávnění

HoloLens

Otevřete Nastavení > projektu HoloLens a povolte funkci internetového klienta :

Nastavení projektu HoloLens se zvýrazněnými možnostmi

Android

Aby aplikace pro Android zobrazila dialogové okno oprávnění a povolila možnosti zjišťování polohy, musí být před pokusem o spuštění relace Azure Spatial Anchor volána funkce Vyžádat oprávnění androidu :

Funkce Vyžádání oprávnění Androidu

Vytvořte místní proměnnou pro vstupní oprávnění a naplňte ho:

  • 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

Nastavení oprávnění Androidu

Nakonec otevřete Project Settings > Android a nastavte stejná oprávnění v poli Další oprávnění v části Advanced APK Packaging:

Android APK project settings

iOS

Pokud chcete vytvořit aplikaci pro iOS, budete muset na Macu použít Unreal. Pokud chcete balíček zabalit pomocí vývojářského účtu Apple, otevřete Nastavení > projektu iOS a posuňte se dolů do části Sestavení . Povolte zaškrtávací políčko Automatické podepisování a vyplňte ID týmu pro iOS svým ID týmu.

ID týmu najdete tak, že se přihlásíte k developer.apple.com, přejdete na kartu Členství a vyhledáte ID týmu.

Pokud chcete zobrazit dialogové okno oprávnění a umožnit zařízení s iOSem přístup k informacím o poloze, musí být před spuštěním relace Azure Spatial Anchor volána funkce Init Location Services a Start Location Services :

Spuštění služeb zjišťování polohy v iOSu

Přidání modulů plug-in Azure Spatial Anchors

Tip

Pokud používáte Azure Spatial Anchors pro Unreal, existuje modul plug-in Azure Spatial Anchors a modul plug-in specifický pro platformu (WMR, ARKit, ARCore, OpenXR). Současně byste měli mít povolený jenom jeden modul plug-in pro konkrétní platformu.

HoloLens

Povolte moduly plug-in Azure Spatial Anchors v editoru Unreal:

  1. Klikněte na Upravit > moduly plug-in a vyhledejte Azure Spatial Anchors a Azure Spatial Anchors pro WMR.
  2. Zaškrtnutím políčka Povoleno v obou modulech plug-in povolte přístup ke knihovnám podrobných plánů Azure Spatial Anchors ve vaší aplikaci.

Snímek obrazovky s moduly plug-in Spatial Anchors v editoru Unreal

Až to uděláte, restartujte Unreal Editor, aby se změny modulu plug-in projevily. Projekt je teď připravený k použití Azure Spatial Anchors.

Android

Povolte moduly plug-in Azure Spatial Anchors v editoru Unreal:

  1. Klikněte na Upravit > moduly plug-in a vyhledejte Azure Spatial Anchors a Azure Spatial Anchors pro ARCore.
  2. Zaškrtnutím políčka Povoleno v obou modulech plug-in povolte přístup ke knihovnám podrobných plánů Azure Spatial Anchors ve vaší aplikaci.

Moduly plug-in pro Android v editoru Unreal

Až to uděláte, restartujte Unreal Editor, aby se změny modulu plug-in projevily. Projekt je teď připravený k použití Azure Spatial Anchors.

iOS

Povolte moduly plug-in Azure Spatial Anchors v editoru Unreal:

  1. Klikněte na Upravit > moduly plug-in a vyhledejte Azure Spatial Anchors a Azure Spatial Anchors pro ARKit.
  2. Zaškrtnutím políčka Povoleno v obou modulech plug-in povolte přístup ke knihovnám podrobných plánů Azure Spatial Anchors ve vaší aplikaci.

Moduly plug-in ASA pro iOS v editoru Unreal

  1. Vyhledejte také Mobile Location Services a Mobile Location Services – implementace iOS.
  2. Zaškrtnutím políčka Povoleno v obou modulech plug-in povolíte zařízení s iOSem přístup k aktuální poloze.

Moduly plug-in pro zjišťování polohy pro iOS v editoru Unreal

Až to uděláte, restartujte Unreal Editor, aby se změny modulu plug-in projevily. Projekt je teď připravený k použití Azure Spatial Anchors.

Zahájení relace Spatial Anchors

Relace Azure Spatial Anchors umožňuje klientským aplikacím komunikovat se službou Azure Spatial Anchors. Abyste mohli vytvořit, zachovat a sdílet Azure Spatial Anchors, budete muset vytvořit a spustit relaci Azure Spatial Anchors:

  1. Otevřete podrobný plán pro pawn, který používáte v aplikaci.
  2. Přidejte dvě řetězcové proměnné pro ID účtu a klíč účtu a pak přiřaďte odpovídající hodnoty z účtu Azure Spatial Anchors pro ověření relace.

Snímek obrazovky s panelem podrobností se zvýrazněným ID účtu Azure Spatial Anchors, klíčem a typem proměnné

Spusťte relaci Azure Spatial Anchors:

  1. Kontroluje se, jestli je v aplikaci HoloLens spuštěná relace rozšířené rozšířené verze, protože relace Azure Spatial Anchors se nemůže spustit, dokud není spuštěná relace rozšířené doby. Pokud nemáte jedno nastavení, vytvořte asset relace rozšířené dostupnosti.
  2. Přidejte vlastní událost Start Azure Spatial Anchors Session a nakonfigurujte ji, jak je znázorněno na snímku obrazovky níže.
    • Vytvořením relace se ve výchozím nastavení nespustí, což umožňuje nakonfigurovat relaci pro ověřování pomocí služby Azure Spatial Anchors.

Podrobný plán spuštění vlastní události relace azure spatial anchors

  1. Nakonfigurujte relaci Azure Spatial Anchors tak, aby poskytovala ID účtu, klíč účtu, doménu účtu a nastavení lokalizace kurzu. Všechna zaškrtávací políčka by měla být povolená v nastavení lokalizace kurzu, aby služba azure spatial anchor service dokázala pomocí dat senzorů najít kotvy.

Podrobný plán funkce relace konfigurace s ID účtu a přidaným klíčem

  1. Spusťte relaci Azure Spatial Anchors, která aplikaci umožní vytvořit a vyhledat Azure Spatial Anchors.

Podrobný plán funkce spuštění relace azure spatial anchors

Pokud už službu nepoužíváte, je vhodné vyčistit prostředky Azure Spatial Anchors v podrobném plánu Event Graphu:

  1. Zastavte relaci Azure Spatial Anchors. Relace už nebude spuštěná, ale její přidružené prostředky budou dál existovat v modulu plug-in Azure Spatial Anchors.

Podrobný plán vlastní události relace stop azure spatial anchors a funkce relace Stop

  1. Zlikvidujte relaci Azure Spatial Anchors, abyste vyčistili všechny prostředky relace Azure Spatial Anchors, které jsou stále známé modulu plug-in Azure Spatial Anchors.

Podrobný plán funkce relace zničení

Podrobný plán Event Graphu by měl vypadat jako na následujícím snímku obrazovky:

Podrobný plán kompletního grafu událostí nastavení relace prostorového ukotvení Azure

Vytvoření ukotvení

Azure Spatial Anchor představuje pozici fyzického světa v aplikačním prostoru rozšířené reality, která uzamkne obsah rozšířené reality do fyzických umístění. Azure Spatial Anchors je také možné sdílet mezi různými uživateli. Toto sdílení umožňuje umístit obsah rozšířené reality na různých zařízeních na stejné místo ve fyzickém světě.

Vytvoření nové služby Azure Spatial Anchor:

  1. Zkontrolujte, jestli je spuštěná relace Azure Spatial Anchors. Aplikace nemůže vytvořit nebo zachovat Azure Spatial Anchor, pokud není spuštěná žádná relace Azure Spatial Anchors.

Podrobný plán vytvoření vlastní události azure spatial anchor

  1. Vytvořte nebo získejte komponentu unreal scene, která by měla mít trvalé umístění.
    • Na následujícím obrázku se jako proměnná používá komponenta Scene Needing Anchor . Komponenta Unreal Scene je potřebná k vytvoření transformace světa aplikace pro pin ar a Azure Spatial Anchor.

Podrobný plán vytvoření vlastní události azure spatial anchor s komponentou scene

Vytvoření a uložení azure spatial anchor pro komponentu Unreal Scene:

  1. Zavolejte komponentu Pin pro komponentu Unreal Scene a určete světovou transformaci komponenty scene jako světovou transformaci použitou pro pin ar.
    • Unreal sleduje body ar v aplikačním prostoru pomocí pinů ar, které se používají k vytvoření Azure Spatial Anchor. V Unrealu je ar pin obdobou SpatialAnchor na HoloLensu.

Podrobný plán komponenty scény připojené k funkci připnutí komponenty

  1. Pomocí nově vytvořeného pinu rozšířeného prostředí zavolejte vytvořit cloudovou kotvu .
    • Vytvořit cloudovou ukotvení vytvoří Azure Spatial Anchor místně, ale ne ve službě Azure Spatial Anchor. Parametry pro azure Spatial Anchor, například datum vypršení platnosti, je možné nastavit před vytvořením služby Azure Spatial Anchor.

Podrobný plán funkce pin komponenty připojené k vytvoření funkce ukotvení cloudu vracející ARPin

  1. Nastavte vypršení platnosti azure Spatial Anchor. Parametr Lifetime této funkce umožňuje vývojáři určit v sekundách, jak dlouho má být kotva udržována službou.
    • Například týdenní vypršení platnosti by trvalo hodnotu 60 sekund x 60 minut x 24 hodin x sedm dní = 604 800 sekund.

Podrobný plán cloudové kotvy připojené k nastavení funkce vypršení platnosti s hodnotou životnosti nastavenou na 604 800 sekund

Po nastavení parametrů ukotvení deklarujte ukotvení jako připravené k uložení. V následujícím příkladu se nově vytvořená služba Azure Spatial Anchor přidá do sady Azure Spatial Anchors, která vyžaduje uložení. Tato sada je deklarována jako proměnná pro podrobný plán Pawn.

Podrobný plán ukotvení připravené k uložení v nastavené proměnné

Uložení ukotvení

Po konfiguraci azure Spatial Anchor s vašimi parametry volejte Uložit cloudovou ukotvení. Uložit cloudovou ukotvení deklaruje ukotvení ve službě Azure Spatial Anchors. Když volání funkce Uložit cloudovou ukotvení proběhne úspěšně, bude azure Spatial Anchor k dispozici ostatním uživatelům služby Azure Spatial Anchor.

Podrobný plán s názvem funkce uložení ukotvení cloudu

Poznámka

Save Cloud Anchor je asynchronní funkce a dá se volat jenom u události herního vlákna, jako je EventTick. Funkce Save Cloud Anchor se nemusí zobrazit jako dostupná funkce podrobného plánu ve vlastních funkcích podrobného plánu. Měl by ale být k dispozici v editoru podrobného plánu Pawn Event Graph.

V následujícím příkladu je azure Spatial Anchor během zpětného volání vstupní události uložena v sadě. Ukotvení se pak uloží na eventTick. Uložení služby Azure Spatial Anchor může trvat několik pokusů v závislosti na množství prostorových dat, která vaše relace Azure Spatial Anchors vytvořila. Proto je vhodné zkontrolovat, jestli volání uložení proběhlo úspěšně.

Pokud se ukotvení neuloží, přečtěte si ji do sady ukotvení, které je ještě potřeba uložit. Budoucí eventTicks se bude dál snažit uložit kotvu, dokud se úspěšně neuloží.

Podrobný plán opětovného ukládání neuložených ukotvení v nastavené proměnné

Jakmile se ukotvení uloží, transformace pinů ar funguje jako referenční transformace pro umístění obsahu do aplikace. Ostatní uživatelé můžou toto ukotvení rozpoznat a sladit obsah rozšířené rozšířené verze pro různá zařízení ve fyzickém světě.

Odstranění ukotvení

Můžete odstranit kotvy ze služby Azure Spatial Anchor voláním odstranit cloudovou ukotvení.

Podrobný plán pro vyvolání funkce odstranění ukotvení cloudu

Poznámka

Delete Cloud Anchor je latentní funkce a dá se volat jenom u události herního vlákna, jako je EventTick. Funkce Delete Cloud Anchor se nemusí zobrazit jako dostupná funkce podrobného plánu ve funkcích vlastního podrobného plánu. Měl by však být k dispozici v editoru podrobného plánu Pawn Event Graph.

V následujícím příkladu je ukotvení označeno příznakem pro odstranění vlastní vstupní události. Potom se pokusí o odstranění v eventTick. Pokud se odstranění ukotvení nezdaří, přidejte Azure Spatial Anchor do sady ukotvení označených příznakem k odstranění a zkuste to znovu na později.

Podrobný plán Event Graphu by teď měl vypadat jako na následujícím snímku obrazovky:

Podrobný plán kompletního grafu událostí pro zpracování cloudových ukotvení

Vyhledání již existujících ukotvení

Existující kotvy můžou vytvářet partnerské vztahy se službou Azure Spatial Anchors:

  1. Získejte identifikátor azure spatial anchor pro kotvu, kterou chcete zjistit.
    • Identifikátor ukotvení je možné získat pro ukotvení vytvořené stejným zařízením v předchozí relaci Azure Spatial Anchors. Můžou ho také vytvářet a sdílet partnerské zařízení, která komunikují se službou Azure Spatial Anchors.

Podrobný plán uložení vlastní události identifikátoru prostorového ukotvení azure s funkcí get azure cloud identifier function

  1. Přidejte komponentu AzureSpatialAnchorsEvent do podrobného plánu Pawn.
    • Tato komponenta umožňuje přihlásit se k odběru různých událostí Azure Spatial Anchors, jako jsou například události volané při umístění služby Azure Spatial Anchors.

Snímek obrazovky s BP_Pawn otevřeným v editoru podrobných plánů s otevřenými komponentami a panely podrobností

  1. Přihlaste se k odběru delegáta asaAnchor pro komponentu AzureSpatialAnchorsEvent .
    • Delegát informuje aplikaci o umístění nových ukotvení přidružených k účtu Azure Spatial Anchors.
    • Při zpětném volání události nebudou mít azure Spatial Anchors vytvořené partnerskými partnery pomocí relace Azure Spatial Anchors ve výchozím nastavení vytvořené připínáky ar. Pokud chtějí vývojáři vytvořit pin ar pro zjištěnou azure spatial anchor, můžou volat Create ARPin around Azure Cloud Spatial Anchor.

Podrobný plán události zahájení přehrávání připojeného k delegátovi ASAAnchor

Pokud chcete najít azure Spatial Anchors vytvořené partnerskými partnery pomocí služby Azure Spatial Anchor, bude aplikace muset vytvořit Službu Azure Spatial Anchors Watcher:

  1. Zkontrolujte, jestli je spuštěná relace Azure Spatial Anchors.
  2. Vytvořte AzureSpatialAnchorsLocateCriteria.
    • Můžete zadat různé parametry umístění, jako je vzdálenost od uživatele nebo vzdálenost od jiné kotvy.
  3. Deklarujte identifikátor Azure Spatial Anchor, který hledáte v AzureSpatialAnchorsLocateCritieria.
  4. Zavolejte službu Create Watcher.

Podrobný plán vlastní události spuštění služby Azure Spatial Anchors Watcher

Aplikace teď začne hledat Azure Spatial Anchors, které služba Azure Spatial Anchors zná, což znamená, že uživatelé můžou najít Azure Spatial Anchors vytvořené jejich partnerskými partnery.

Po vyhledání azure spatial anchor zavolejte Stop Watcher , abyste zastavili Službu Azure Spatial Anchors Watcher a vyčistili prostředky sledovacího nástroje.

Podrobný plán volané funkce Stop Watcher

Konečný podrobný plán Event Graphu by teď měl vypadat jako na následujícím snímku obrazovky:

Podrobný plán kompletního grafu událostí pro zpracování událostí delegáta ukotvení

Další kontrolní bod vývoje

Pokud sledujete cestu unreal developmentu, kterou jsme nastavili, jste uprostřed zkoumání základních stavebních bloků MRTK. Odtud můžete pokračovat k dalšímu stavebnímu bloku:

Nebo přejděte na Mixed Reality možností a rozhraní API platformy:

K kontrolním bodům Unreal Development se můžete kdykoli vrátit.

Další kroky