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:
- Zainstalowano wtyczkę Microsoft OpenXR dostępną w witrynie Unreal Marketplace lub GitHub.
- Zainstalowano program Unreal w wersji 4.25 lub nowszej
- Konfiguracja projektu HoloLens 2 w programie Unreal
- Zapoznaj się z omówieniem usługi Azure Spatial Anchors
- Podstawowa wiedza na temat języków C++ i Unreal
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:
- Utwórz zasób zakotwiczenia przestrzennego i skopiuj pola konta wymienione poniżej. Te wartości są używane do uwierzytelniania użytkowników przy użyciu konta aplikacji:
- Identyfikator konta
- Klucz konta
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 :
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 :
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
Na koniec otwórz pozycję Ustawienia > projektu Dla systemu Android i ustaw te same uprawnienia w polu Dodatkowe uprawnienia w obszarze Zaawansowane pakowanie APK:
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:
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:
- Kliknij pozycję Edytuj > wtyczki i wyszukaj pozycję Azure Spatial Anchors i AzureSpatial Anchors for WMR.
- Zaznacz pole wyboru Włączone w obu wtyczkach, aby zezwolić na dostęp do bibliotek strategii usługi Azure Spatial Anchors w aplikacji.
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:
- Kliknij pozycję Edytuj > wtyczki i wyszukaj pozycję Azure Spatial Anchors i AzureSpatial Anchors for ARCore.
- Zaznacz pole wyboru Włączone w obu wtyczkach, aby zezwolić na dostęp do bibliotek strategii usługi Azure Spatial Anchors w aplikacji.
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:
- Kliknij pozycję Edytuj > wtyczki i wyszukaj pozycjeAzure Spatial Anchors i Azure Spatial Anchors for ARKit.
- Zaznacz pole wyboru Włączone w obu wtyczkach, aby zezwolić na dostęp do bibliotek strategii usługi Azure Spatial Anchors w aplikacji.
- Wyszukaj również usługi Mobile Location Services i Mobile Location Services — implementacja systemu IOS
- Zaznacz pole wyboru Włączone w obu wtyczkach, aby zezwolić urządzeniu z systemem iOS na dostęp do bieżącej lokalizacji.
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:
- Otwórz strategię dla pawn, którego używasz w aplikacji.
- 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.
Rozpocznij sesję usługi Azure Spatial Anchors, wykonując:
- 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.
- 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.
- 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.
- Uruchom sesję usługi Azure Spatial Anchors, umożliwiając aplikacji tworzenie i lokalizowanie 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:
- 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.
- 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 programu Event Graph powinna wyglądać podobnie jak na poniższym zrzucie ekranu:
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:
- 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.
- 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.
Aby skonstruować i zapisać usługę Azure Spatial Anchor dla składnika Unreal Scene:
- 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.
- 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 .
- 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.
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.
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.
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.
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.
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:
Lokalizowanie istniejących kotwic
Istniejące kotwice można tworzyć za pomocą komunikacji równorzędnej z usługą Azure Spatial Anchors:
- 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.
- 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.
- 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).
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:
- Sprawdź, czy sesja usługi Azure Spatial Anchors jest uruchomiona.
- 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.
- Zadeklaruj identyfikator usługi Azure Spatial Anchor, którego szukasz w usłudze AzureSpatialAnchorsLocateCritieria.
- Wywołaj wywołanie create watcher.
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.
Ostateczna strategia programu Event Graph powinna teraz wyglądać podobnie jak na poniższym zrzucie ekranu:
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.