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:
- Nainstalovaný modul plug-in Microsoft OpenXR, který je k dispozici na Webu Unreal Marketplace nebo GitHubu.
- Nainstalovaný Unreal verze 4.25 nebo novější
- Nastavení HoloLens 2 projektu v Unrealu
- Přečtěte si přehled služby Azure Spatial Anchors.
- Základní znalosti jazyka C++ a Unreal
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 :
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 :
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
Nakonec otevřete Project Settings > Android a nastavte stejná oprávnění v poli Další oprávnění v části Advanced APK Packaging:
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 :
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:
- Klikněte na Upravit > moduly plug-in a vyhledejte Azure Spatial Anchors a Azure Spatial Anchors pro WMR.
- 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.
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:
- Klikněte na Upravit > moduly plug-in a vyhledejte Azure Spatial Anchors a Azure Spatial Anchors pro ARCore.
- 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.
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:
- Klikněte na Upravit > moduly plug-in a vyhledejte Azure Spatial Anchors a Azure Spatial Anchors pro ARKit.
- 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.
- Vyhledejte také Mobile Location Services a Mobile Location Services – implementace iOS.
- Zaškrtnutím políčka Povoleno v obou modulech plug-in povolíte zařízení s iOSem přístup k aktuální poloze.
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:
- Otevřete podrobný plán pro pawn, který používáte v aplikaci.
- 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.
Spusťte relaci Azure Spatial Anchors:
- 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.
- 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.
- 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.
- Spusťte relaci Azure Spatial Anchors, která aplikaci umožní vytvořit a vyhledat 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:
- 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.
- 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 Event Graphu by měl vypadat jako na následujícím snímku obrazovky:
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:
- 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.
- 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.
Vytvoření a uložení azure spatial anchor pro komponentu Unreal Scene:
- 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.
- 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.
- 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.
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.
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.
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ží.
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í.
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:
Vyhledání již existujících ukotvení
Existující kotvy můžou vytvářet partnerské vztahy se službou Azure Spatial Anchors:
- 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.
- 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.
- 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.
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:
- Zkontrolujte, jestli je spuštěná relace Azure Spatial Anchors.
- 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.
- Deklarujte identifikátor Azure Spatial Anchor, který hledáte v AzureSpatialAnchorsLocateCritieria.
- Zavolejte službu Create 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.
Konečný podrobný plán Event Graphu by teď měl vypadat jako na následujícím snímku obrazovky:
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.