Usługa Azure Spatial Anchors w środowisku nierealnym

Azure Spatial Anchors to usługa firmy Microsoft Mixed Reality, która umożliwia urządzeniom rzeczywistości rozszerzonej odnajdywanie, udostępnianie i utrwalanie punktów zakotwiczenia w świecie fizycznym. Poniższa dokumentacja zawiera instrukcje dotyczące integrowania usługi Azure Spatial Anchors z projektem Unreal. Jeśli szukasz więcej informacji, zapoznaj się z usługą Azure Spatial Anchors.

Uwaga

Aparat Unreal Engine 4.26 ma teraz wtyczki do obsługi zestawów ARKit i ARCore, jeśli dotyczysz systemów iOS lub Android.

Ważne

Lokalne kotwice są przechowywane na urządzeniu, podczas gdy usługi Azure Spatial Anchors są przechowywane w chmurze. Jeśli chcesz przechowywać kotwice lokalnie na urządzeniu, mamy dokument Local Spatial Anchors , który może przejść przez proces. Należy pamiętać, że w tym samym projekcie można zakotwiczyć lokalne i platformy Azure bez konfliktu.

Wymagania wstępne

Aby ukończyć ten przewodnik, upewnij się, że masz następujące elementy:

Uzyskiwanie informacji o koncie usługi Azure Spatial Anchors

Przed użyciem usługi Azure Spatial Anchors w projekcie należy wykonać następujące elementy:

Aby uzyskać więcej informacji, zapoznaj się z dokumentami uwierzytelniania usługi Azure Spatial Anchors .

Uwaga

Usługa Azure Spatial Anchors w wersji Unreal 4.25 nie obsługuje tokenów uwierzytelniania Azure AD, ale obsługa tej funkcji będzie dostępna w nowszej wersji.

Włączanie możliwości i uprawnień

HoloLens

Otwórz pozycję Ustawienia > projektu HoloLens i włącz funkcję klienta internetowego :

Ustawienia projektu HoloLens z wyróżnionymi możliwościami

Android

Aby aplikacja systemu Android wyświetlała okno dialogowe uprawnień i zezwalała na możliwości lokalizacji, przed podjęciem próby uruchomienia sesji usługi Azure Spatial Anchor należy wywołać funkcję Zażądaj uprawnień systemu Android :

Żądanie funkcji uprawnień systemu Android

Utwórz zmienną lokalną dla uprawnień wejściowych i wypełnij za pomocą następujących opcji:

  • 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

Ustawianie uprawnień systemu Android

Na koniec otwórz pozycję Ustawienia > projektu Dla systemu Android i ustaw te same uprawnienia w polu Dodatkowe uprawnienia w obszarze Zaawansowane pakowanie APK:

Ustawienia projektu APK dla systemu Android

iOS

Aby utworzyć aplikację dla systemu iOS, musisz użyć polecenia Unreal na komputerze Mac. Aby spakować pakiet przy użyciu konta dewelopera firmy Apple, otwórz pozycję Ustawienia projektu dla > systemu iOS i przewiń w dół do sekcji Kompilacja . Włącz pole wyboru Automatyczne podpisywanie i wypełnij identyfikator zespołu systemu iOS identyfikatorem zespołu.

Identyfikator zespołu można znaleźć, logując się do developer.apple.com, przechodząc do karty Członkostwo i wyszukując identyfikator zespołu.

Aby wyświetlić okno dialogowe uprawnień i zezwolić urządzeniu z systemem iOS na dostęp do informacji o lokalizacji, należy wywołać funkcje Init Location Services i Start Location Services przed podjęciem próby uruchomienia sesji usługi Azure Spatial Anchor:

Uruchamianie usług lokalizacji systemu iOS

Dodawanie wtyczek usługi Azure Spatial Anchors

Porada

W przypadku korzystania z usługi Azure Spatial Anchors dla rozwiązania Unreal istnieje wtyczka usługi Azure Spatial Anchors i wtyczka specyficzna dla platformy (WMR, ARKit, ARCore, OpenXR). W danym momencie powinna być włączona tylko jedna wtyczka specyficzna dla platformy.

HoloLens

Włącz wtyczki usługi Azure Spatial Anchors w edytorze Unreal przez:

  1. Kliknij pozycję Edytuj > wtyczki i wyszukaj pozycję Azure Spatial Anchors i AzureSpatial Anchors for WMR.
  2. Zaznacz pole wyboru Włączone w obu wtyczkach, aby zezwolić na dostęp do bibliotek strategii usługi Azure Spatial Anchors w aplikacji.

Zrzut ekranu przedstawiający wtyczki usługi Spatial Anchors w edytorze Unreal

Po zakończeniu uruchom ponownie Edytor Unreal, aby zmiany wtyczki zaczęły obowiązywać. Projekt jest teraz gotowy do korzystania z usługi Azure Spatial Anchors.

Android

Włącz wtyczki usługi Azure Spatial Anchors w edytorze Unreal przez:

  1. Kliknij pozycję Edytuj > wtyczki i wyszukaj pozycję Azure Spatial Anchors i AzureSpatial Anchors for ARCore.
  2. Zaznacz pole wyboru Włączone w obu wtyczkach, aby zezwolić na dostęp do bibliotek strategii usługi Azure Spatial Anchors w aplikacji.

Wtyczki systemu Android w edytorze Unreal

Po zakończeniu uruchom ponownie Edytor Unreal, aby zmiany wtyczki zaczęły obowiązywać. Projekt jest teraz gotowy do korzystania z usługi Azure Spatial Anchors.

iOS

Włącz wtyczki usługi Azure Spatial Anchors w edytorze Unreal przez:

  1. Kliknij pozycję Edytuj > wtyczki i wyszukaj pozycjeAzure Spatial Anchors i Azure Spatial Anchors for ARKit.
  2. Zaznacz pole wyboru Włączone w obu wtyczkach, aby zezwolić na dostęp do bibliotek strategii usługi Azure Spatial Anchors w aplikacji.

Wtyczki ASA systemu iOS w edytorze Unreal

  1. Wyszukaj również usługi Mobile Location Services i Mobile Location Services — implementacja systemu IOS
  2. Zaznacz pole wyboru Włączone w obu wtyczkach, aby zezwolić urządzeniu z systemem iOS na dostęp do bieżącej lokalizacji.

Wtyczki lokalizacji systemu iOS w edytorze Unreal

Po zakończeniu uruchom ponownie Edytor Unreal, aby zmiany wtyczki zaczęły obowiązywać. Projekt jest teraz gotowy do korzystania z usługi Azure Spatial Anchors.

Rozpoczynanie sesji usługi Spatial Anchors

Sesja usługi Azure Spatial Anchors umożliwia aplikacjom klienckim komunikowanie się z usługą Azure Spatial Anchors. Musisz utworzyć i uruchomić sesję usługi Azure Spatial Anchors w celu utworzenia, utrwalania i udostępniania usługi Azure Spatial Anchors:

  1. Otwórz strategię dla pawn, którego używasz w aplikacji.
  2. Dodaj dwie zmienne ciągu dla identyfikatora konta i klucza konta, a następnie przypisz odpowiednie wartości z konta usługi Azure Spatial Anchors w celu uwierzytelnienia sesji.

Zrzut ekranu przedstawiający panel szczegółów z wyróżnionym identyfikatorem konta, kluczem i typem zmiennej usługi Azure Spatial Anchors

Rozpocznij sesję usługi Azure Spatial Anchors, wykonując:

  1. Sprawdzanie, czy sesja ar jest uruchomiona w aplikacji HoloLens, ponieważ sesja usługi Azure Spatial Anchors nie może rozpocząć się, dopóki sesja ar nie zostanie uruchomiona. Jeśli nie masz jednej konfiguracji, utwórz zasób sesji AR.
  2. Dodanie niestandardowego zdarzenia Uruchom sesję usługi Azure Spatial Anchors i skonfigurowanie go, jak pokazano na poniższym zrzucie ekranu.
    • Tworzenie sesji domyślnie nie uruchamia sesji, co umożliwia skonfigurowanie sesji na potrzeby uwierzytelniania za pomocą usługi Azure Spatial Anchors.

Strategia uruchamiania zdarzenia niestandardowego sesji usługi Azure Spatial Anchors

  1. Skonfiguruj sesję usługi Azure Spatial Anchors, aby podać identyfikator konta, klucz konta, domenę konta i ustawienia lokalizacji kursu. Wszystkie pola wyboru powinny być włączone w ustawieniach lokalizacji kursu, aby usługa azure spatial anchor mogła używać danych czujnika do lokalizowania kotwic.

Strategia funkcji sesji konfiguracji z dodanym identyfikatorem konta i kluczem

  1. Uruchom sesję usługi Azure Spatial Anchors, umożliwiając aplikacji tworzenie i lokalizowanie usługi Azure Spatial Anchors.

Strategia funkcji uruchamiania sesji usługi Azure Spatial Anchors

Dobrym rozwiązaniem jest wyczyszczenie zasobów usługi Azure Spatial Anchors w strategii programu Event Graph, gdy nie używasz już usługi:

  1. Zatrzymaj sesję usługi Azure Spatial Anchors. Sesja nie będzie już uruchomiona, ale skojarzone z nią zasoby nadal będą istnieć w wtyczki usługi Azure Spatial Anchors.

Strategia zatrzymywania usługi Azure Spatial Anchors sesji niestandardowych zdarzeń i zatrzymywania funkcji sesji

  1. Zniszcz sesję usługi Azure Spatial Anchors, aby wyczyścić wszystkie zasoby sesji usługi Azure Spatial Anchors, które są nadal znane wtyczki usługi Azure Spatial Anchors.

Strategia funkcji niszczenie sesji

Strategia programu Event Graph powinna wyglądać podobnie jak na poniższym zrzucie ekranu:

Strategia kompletnego wykresu zdarzeń konfiguracji sesji usługi Azure Spatial Anchor

Tworzenie kotwicy

Usługa Azure Spatial Anchor reprezentuje świat fizyczny w przestrzeni aplikacji rzeczywistości rozszerzonej, która blokuje zawartość rzeczywistości rozszerzonej na lokalizacje fizyczne. Usługi Azure Spatial Anchors mogą być również współużytkowane przez różnych użytkowników. To udostępnianie umożliwia umieszczanie zawartości rzeczywistości rozszerzonej na różnych urządzeniach w tej samej lokalizacji w świecie fizycznym.

Aby utworzyć nową usługę Azure Spatial Anchor:

  1. Sprawdź, czy sesja usługi Azure Spatial Anchors jest uruchomiona. Aplikacja nie może tworzyć ani utrwalać usługi Azure Spatial Anchor, gdy nie jest uruchomiona żadna sesja usługi Azure Spatial Anchors.

Strategia tworzenia zdarzenia niestandardowego zakotwiczenia przestrzennego platformy Azure

  1. Utwórz lub uzyskaj składnik nierealnej sceny , który powinien mieć jego lokalizację utrwalone.
    • Na poniższej ilustracji składnik sceny, który potrzebuje kotwicy , jest używany jako zmienna. Do ustanowienia transformacji świata aplikacji dla numeru PIN ar i usługi Azure Spatial Anchor jest potrzebny składnik Unreal Scene.

Strategia tworzenia niestandardowego zdarzenia zakotwiczenia przestrzennego platformy Azure ze składnikiem sceny

Aby skonstruować i zapisać usługę Azure Spatial Anchor dla składnika Unreal Scene:

  1. Wywołaj składnik pinezki dla składnika Unreal Scene i określ transformację świata składnika sceny jako transformację świata używaną do przypinania AR.
    • Unreal śledzi punkty AR w przestrzeni aplikacji przy użyciu przypinań AR, które są używane do tworzenia usługi Azure Spatial Anchor. W systemie Unreal pin AR jest analogiczny do funkcji SpatialAnchor na urządzeniu HoloLens.

Strategia składnika sceny połączonego z funkcją składnika pin

  1. Wywołaj metodę Create Cloud Anchor przy użyciu nowo utworzonego numeru PIN AR.
    • Tworzenie usługi Cloud Anchor tworzy lokalnie usługę Azure Spatial Anchor, ale nie w usłudze Azure Spatial Anchor. Parametry usługi Azure Spatial Anchor, takie jak data wygaśnięcia, można ustawić przed utworzeniem usługi Azure Spatial Anchor za pomocą usługi .

Strategia funkcji składnika pin połączonej z tworzeniem funkcji kotwicy chmury zwracającej arPin

  1. Ustaw wygaśnięcie usługi Azure Spatial Anchor. Parametr okresu istnienia tej funkcji umożliwia deweloperowi określenie w sekundach, jak długo kotwica powinna być utrzymywana przez usługę.
    • Na przykład wygaśnięcie długiego tygodnia zajmie 60 sekund x 60 minut x 24 godziny x siedem dni = 604 800 sekund.

Strategia zakotwiczenia chmury połączona z ustawieniem funkcji wygasania z wartością okresu istnienia ustawioną na 604 800 sekund

Po ustawieniu parametrów kotwicy zadeklaruj kotwicę jako gotową do zapisania. W poniższym przykładzie nowo utworzona usługa Azure Spatial Anchor jest dodawana do zestawu usługi Azure Spatial Anchors wymagających zapisywania. Ten zestaw jest zadeklarowany jako zmienna strategii Pawn.

Strategia kotwicy gotowa do zapisania w zmiennej ustawionej

Zapisywanie kotwicy

Po skonfigurowaniu usługi Azure Spatial Anchor przy użyciu parametrów wywołaj funkcję Zapisz zakotwiczenie chmury. Zapisywanie usługi Cloud Anchor deklaruje kotwicę w usłudze Azure Spatial Anchors. Po pomyślnym wywołaniu usługi Save Cloud Anchor usługa Azure Spatial Anchor jest dostępna dla innych użytkowników usługi Azure Spatial Anchor.

Strategia zapisywania funkcji zakotwiczenia chmury wywoływana

Uwaga

Save Cloud Anchor to funkcja asynchroniczna i może być wywoływana tylko w przypadku zdarzenia wątku gry, takiego jak EventTick. Zapisywanie zakotwiczenia chmury może nie być wyświetlana jako dostępna funkcja strategii w niestandardowych funkcjach strategii. Jednak powinna być dostępna w edytorze strategii programu Event Graph pawn.

W poniższym przykładzie usługa Azure Spatial Anchor jest przechowywana w zestawie podczas wywołania zwrotnego zdarzeń wejściowych. Kotwica jest następnie zapisywana w usłudze EventTick. Zapisanie usługi Azure Spatial Anchor może podjąć wiele prób w zależności od ilości danych przestrzennych utworzonych przez sesję usługi Azure Spatial Anchors. Dlatego warto sprawdzić, czy połączenie zapisywania zakończyło się pomyślnie.

Jeśli kotwica nie zostanie zapisana, odczytała ją do zestawu kotwic, które nadal muszą zostać zapisane. Future EventTicks będzie nadal próbować zapisać kotwicę, dopóki nie zostanie pomyślnie zapisana.

Strategia niezapisanych kotwic zapisywanych ponownie w zmiennej ustawionej

Po zapisaniu zakotwiczenia transformacja ar Pins działa jako transformacja referencyjna do umieszczania zawartości w aplikacji. Inni użytkownicy mogą wykrywać tę kotwicę i dopasowywać zawartość AR dla różnych urządzeń w świecie fizycznym.

Usuwanie kotwicy

Zakotwiczenia można usunąć z usługi Azure Spatial Anchor, wywołując funkcję Delete Cloud Anchor.

Strategia usuwania funkcji kotwicy chmury wywoływana

Uwaga

Delete Cloud Anchor to funkcja opóźniona i może być wywoływana tylko w przypadku zdarzenia wątku gry, takiego jak EventTick. Usuwanie zakotwiczenia chmury może nie być wyświetlana jako dostępna funkcja strategii w niestandardowych funkcjach strategii. Powinien on być jednak dostępny w edytorze strategii programu Event Graph pawn.

W poniższym przykładzie kotwica jest oflagowana do usunięcia w niestandardowym zdarzeniu wejściowym. Usunięcie jest następnie podejmowane w usłudze EventTick. Jeśli usunięcie zakotwiczenia zakończy się niepowodzeniem, dodaj usługę Azure Spatial Anchor do zestawu kotwic oflagowanych do usunięcia i spróbuje ponownie później eventTicks.

Strategia programu Event Graph powinna teraz wyglądać podobnie jak na poniższym zrzucie ekranu:

Strategia kompletnego grafu zdarzeń do obsługi kotwic w chmurze

Lokalizowanie istniejących kotwic

Istniejące kotwice można tworzyć za pomocą komunikacji równorzędnej z usługą Azure Spatial Anchors:

  1. Uzyskaj identyfikator usługi Azure Spatial Anchor dla kotwicy, którą chcesz wykryć.
    • Identyfikator kotwicy można uzyskać dla kotwicy utworzonej przez to samo urządzenie w poprzedniej sesji usługi Azure Spatial Anchors. Można ją również utworzyć i udostępnić za pomocą urządzeń równorzędnych korzystających z usługi Azure Spatial Anchors.

Strategia przechowywania zdarzenia niestandardowego identyfikatora zakotwiczenia przestrzennego platformy Azure z funkcją uzyskiwania identyfikatora chmury platformy Azure

  1. Dodaj składnik AzureSpatialAnchorsEvent do strategii Pawn.
    • Ten składnik umożliwia subskrybowanie różnych zdarzeń usługi Azure Spatial Anchors, takich jak zdarzenia wywoływane, gdy znajdują się usługi Azure Spatial Anchors.

Zrzut ekranu przedstawiający otwieranie BP_Pawn w edytorze strategii z otwartymi składnikami i panelami szczegółów

  1. Zasubskrybuj delegata usługi ASAAnchor dla składnika AzureSpatialAnchorsEvent .
    • Delegat informuje aplikację o tym, kiedy znajdują się nowe kotwice skojarzone z kontem usługi Azure Spatial Anchors.
    • W przypadku wywołania zwrotnego zdarzeń usługa Azure Spatial Anchors utworzona przez elementy równorzędne przy użyciu sesji usługi Azure Spatial Anchors nie będzie domyślnie tworzyć numerów PIN AR. Aby utworzyć numer PIN ar dla wykrytej usługi Azure Spatial Anchor, deweloperzy mogą wywołać metodę Create ARPin Around Azure Cloud Spatial Anchor (Tworzenie kodu ARPin wokół usługi Azure Cloud Spatial Anchor).

Strategia zdarzenia rozpoczęcia odtwarzania połączonego z pełnomocnikiem usługi ASAAnchor

Aby zlokalizować usługę Azure Spatial Anchors utworzoną przez elementy równorzędne przy użyciu usługi Azure Spatial Anchor, aplikacja będzie musiała utworzyć usługę Azure Spatial Anchors Watcher:

  1. Sprawdź, czy sesja usługi Azure Spatial Anchors jest uruchomiona.
  2. Utwórz obiekt AzureSpatialAnchorsLocateCriteria.
    • Można określić różne parametry lokalizacji, takie jak odległość od użytkownika lub odległość od innej kotwicy.
  3. Zadeklaruj identyfikator usługi Azure Spatial Anchor, którego szukasz w usłudze AzureSpatialAnchorsLocateCritieria.
  4. Wywołaj wywołanie create watcher.

Strategia rozpoczęcia zdarzenia niestandardowego obserwatora usługi Azure Spatial Anchors

Aplikacja zaczyna teraz szukać usługi Azure Spatial Anchors znanej usłudze Azure Spatial Anchors, co oznacza, że użytkownicy mogą zlokalizować usługę Azure Spatial Anchors utworzoną przez swoich elementów równorzędnych.

Po zlokalizowaniu usługi Azure Spatial Anchor wywołaj funkcję Stop Watcher , aby zatrzymać usługę Azure Spatial Anchors Watcher i wyczyścić zasoby obserwatora.

Strategia wywoływanej funkcji stop watcher

Ostateczna strategia programu Event Graph powinna teraz wyglądać podobnie jak na poniższym zrzucie ekranu:

Strategia kompletnego grafu zdarzeń do obsługi zdarzeń delegata zakotwiczenia

Następny punkt kontrolny programowania

Jeśli obserwujesz określoną przez nas podróż rozwoju Unreal, jesteś w środku eksplorowania podstawowych bloków konstrukcyjnych ZESTAWU NARZĘDZI MRTK. W tym miejscu możesz przejść do następnego bloku konstrukcyjnego:

Możesz też przejść do Mixed Reality możliwości platformy i interfejsów API:

Zawsze możesz wrócić do nierealnych punktów kontrolnych programowania w dowolnym momencie.

Następne kroki