Ten przewodnik zawiera omówienie tworzenia aplikacji na platformę XR na Androida za pomocą Unity. Android XR współpracuje z dobrze znanymi narzędziami i funkcjami Unity. Ponieważ obsługa Androida XR w Unity opiera się na OpenXR, wiele funkcji opisanych w przeglądzie OpenXR jest też obsługiwanych w Unity.
Z tego przewodnika dowiesz się więcej o:
- Obsługa Unity na Androida XR
- Podstawy XR w Unity
- Tworzenie i publikowanie aplikacji na Androida XR
- Pakiety Unity na Androida XR
- Unity OpenXR: pakiet Androida XR
- Rozszerzenia Androida XR dla Unity
- Funkcje i kwestie zgodności
- Dane wejściowe i interakcje
Obsługa Unity na Androida XR
Podczas tworzenia aplikacji na Androida XR możesz korzystać z narzędzi i funkcji rzeczywistości mieszanej w Unity 6. Obejmuje to szablony rzeczywistości mieszanej, które korzystają z XR Interaction Toolkit, AR Foundation i wtyczki OpenXR, aby ułatwić Ci szybkie rozpoczęcie pracy. Podczas tworzenia aplikacji w Unity na Androida XR zalecamy użycie Universal Render Pipeline (URP) jako potoku renderowania i Vulkan jako interfejsu API grafiki. Te funkcje umożliwiają korzystanie z niektórych nowych funkcji graficznych Unity, które są obsługiwane tylko w Vulkan. Więcej informacji o konfigurowaniu tych ustawień znajdziesz w przewodniku po konfigurowaniu projektu.
Podstawy XR w Unity
Jeśli dopiero zaczynasz korzystać z Unity lub tworzyć treści XR, możesz zapoznać się z podręcznikiem Unity na temat XR, aby poznać podstawowe pojęcia i procesy związane z tą technologią. Podręcznik XR zawiera informacje o tych kwestiach:
- wtyczki dostawców XR, w tym Unity OpenXR: AndroidXR i rozszerzenia Androida XR dla Unity;
- pakiety wsparcia dla XR, które umożliwiają dodawanie dodatkowych funkcji na poziomie aplikacji;
- przewodnik po architekturze XR, który opisuje zestaw narzędzi Unity XR i podsystemy XR;
- Konfigurowanie projektu XR
- Tworzenie i uruchamianie aplikacji XR
- wskazówki dotyczące grafiki XR, w tym Universal Render Pipeline, renderowanie stereoskopowe, renderowanie foveate, regiony renderowania wielowidokowego i synchronizacja klatek VR;
- Wskazówki dotyczące dźwięku w XR, w tym obsługa dźwięku przestrzennego
Tworzenie i publikowanie aplikacji na Androida
Unity udostępnia szczegółową dokumentację dotyczącą tworzenia, kompilowania i publikowania aplikacji na Androida. Obejmuje ona m.in. takie tematy jak uprawnienia Androida w Unity, ustawienia kompilacji Androida, kompilowanie aplikacji na Androida i publikowanie w Google Play.
Pakiety Unity na Androida XR
Istnieją 2 pakiety, które obsługują kompilowanie aplikacji na Unity na Androida w XR. Oba te pakiety to wtyczki dostawców XR, które można włączyć za pomocą pakietu do zarządzania wtyczkami XR w Unity. Menedżer wtyczek XR dodaje ustawienia projektu, które umożliwiają zarządzanie i pomoc przy wczytywaniu, inicjowaniu, ustawieniach oraz kompilowaniu wtyczek XR. Aby umożliwić aplikacji wykonywanie funkcji OpenXR w czasie działania, należy włączyć te funkcje w projekcie za pomocą menedżera wtyczek.
Ilustracja pokazująca, gdzie w edytorze Unity można włączyć te grupy funkcji.
Unity OpenXR na Androida XR
Pakiet OpenXR na Androida to wtyczka XR, która umożliwia dodanie obsługi XR na Androida do Unity. Ten wtyczek XR zapewnia większość obsługi XR na Androidzie w Unity oraz umożliwia obsługę urządzeń z Androidem XR w projektach AR Foundation. AR Foundation jest przeznaczony dla deweloperów, którzy chcą tworzyć projekty rzeczywistości rozszerzonej lub mieszanej. Zapewnia interfejs dla funkcji AR, ale nie wdraża żadnych funkcji. Pakiet OpenXR na Androida XR w Unity zapewnia implementację. Aby rozpocząć korzystanie z tego pakietu, zapoznaj się z jego instrukcją, która zawiera przewodnik.
Rozszerzenia Androida XR dla Unity
Rozszerzenia Android XR dla Unity uzupełniają pakiet Unity OpenXR Android XR i zawierają dodatkowe funkcje, które ułatwiają tworzenie wciągających doświadczeń. Można go używać samodzielnie lub razem z pakietem Unity OpenXR Android XR.
Aby rozpocząć korzystanie z tego pakietu, postępuj zgodnie z instrukcjami w przewodniku konfigurowania projektu lub krótkim przewodniku importowania rozszerzeń XR na Androida do Unity.
Funkcje i kwestie zgodności
W tabeli poniżej opisano funkcje obsługiwane przez pakiet Unity OpenXR: Android XR oraz pakiet Android XR Extensions for Unity. Możesz z niej skorzystać, aby określić, który pakiet zawiera funkcje, których potrzebujesz, oraz sprawdzić kwestie zgodności.
Funkcja |
Unity OpenXR: ciąg znaków funkcji Android XR |
Ciąg znaków funkcji Android XR Extensions for Unity |
Przypadki użycia i oczekiwane działanie |
---|---|---|---|
Android XR: sesja AR
|
Android XR (rozszerzenia): zarządzanie sesją
|
Aby korzystać z funkcji z każdego pakietu, musisz włączyć funkcję sesji AR dla tego pakietu. Możesz włączyć obie grupy funkcji jednocześnie. Poszczególne funkcje będą odpowiednio rozwiązywać konflikty. |
|
nie dotyczy |
nie dotyczy |
Śledzenie urządzenia służy do śledzenia jego położenia i obrotu w przestrzeni fizycznej. Obiekt GameObject XR Origin automatycznie obsługuje śledzenie urządzenia i przekształcanie obiektów śledzonych w systemie współrzędnych Unity za pomocą komponentu XROrigin i hierarchii GameObject z użyciem kamery i sterownika TrackedPoseDriver. |
|
Android XR: Aparat AR |
nie dotyczy |
Ta funkcja obsługuje szacowanie oświetlenia i przepuszczanie pełnego ekranu. |
|
Android XR: AR Plane |
Android XR (rozszerzenia): płaszczyzna |
Te 2 funkcje są identyczne; użyj jednej z nich. Android XR (Extensions): Plane jest dołączony, aby deweloperzy mogli korzystać z funkcji śledzenia obiektów i trwałych kotwic w Androidzie XR (Extensions) bez konieczności korzystania z pakietu Unity OpenXR na Androida XR. W przyszłości usługa Android XR (Extensions): Plane zostanie usunięta na rzecz usługi Android XR: AR Anchor. |
|
nie dotyczy |
Android XR (rozszerzenia): śledzenie obiektów |
Ta funkcja umożliwia wykrywanie i śledzenie obiektów w środowisku fizycznym w połączeniu z biblioteką obiektów referencyjnych. |
|
Android XR: AR Face
|
Android XR: śledzenie twarzy
|
Obsługa oczu awatara jest dostępna w ramach funkcji Android XR: AR Face. Dostęp do wyrazów twarzy użytkownika za pomocą funkcji śledzenia twarzy w Androidzie XR. W razie potrzeby możesz używać obu tych funkcji jednocześnie. |
|
Android XR: rzutowanie w rzeczywistości
|
nie dotyczy |
Ta funkcja umożliwia wysyłanie promienia i obliczanie przecięcia tego promienia z obiektami śledzonymi w płaszczyźnie lub głębi, które są wykrywane w środowisku fizycznym. |
|
Android XR: punkty orientacyjne AR |
Android XR (rozszerzenia): Anchor
|
Obie funkcje obsługują stałe punkty odniesienia w przestrzeni i stałe punkty odniesienia w samolocie. Możesz użyć jednej z nich. Aby utworzyć stałe punkty kotwiczenia, użyj Androida XR (rozszerzeń): Anchor. W przyszłości funkcja Anchor zostanie usunięta z Androida XR (Extensions), a wszystkie funkcje Anchor zostaną przeniesione do Androida XR: AR Anchor. |
|
Android XR: zasłona AR
|
nie dotyczy |
Zasłonięcie umożliwia ukrycie lub częściowe zasłonięcie obiektów w fizycznym otoczeniu w aplikacji z użyciem treści z mieszanej rzeczywistości. |
|
Dane dotyczące skuteczności |
Dane o wydajności Androida XR |
nie dotyczy |
Ta funkcja umożliwia dostęp do danych o skuteczności urządzeń z Androidem XR. |
Obsługa warstwy kompozytowej (wymagane są wtyczka OpenXR i warstwa kompozytowa XR) |
Android XR: warstwa kompozytowa z przekazywaniem
|
Użyj obsługi warstw kompozytowych Unity, aby utworzyć podstawowe warstwy kompozycji (np. kwadrat, cylinder, projekcja). Android XR: za pomocą warstwy przepuszczania kompozycji można utworzyć warstwę przepuszczania z niestandardową siatką, odczytywaną z GameObject w Unity. |
|
Foveated Rendering (wymaga wtyczki OpenXR)
|
Foveation (starsza wersja) |
Rendering foveatowy pozwala przyspieszyć renderowanie przez obniżenie rozdzielczości obszarów w peryferyjnym polu widzenia użytkownika. Funkcja foveated rendering w Unity jest obsługiwana tylko w przypadku aplikacji korzystających z URP i Vulkana. Funkcja Foveation (Legacy) w Android XR Extensions for Unity obsługuje też BiRP i GLES. Zalecamy korzystanie z funkcji wygładzania obrazu w Unity, o ile to możliwe. Pamiętaj, że podczas kompilowania aplikacji na Androida XR zalecamy używanie zarówno URP, jak i Vulkan. |
|
nie dotyczy |
Android XR: nieograniczony obszar odniesienia |
Ta funkcja ustawia tryb pochodzenia śledzenia XRInputSubsystem na Bez ograniczeń. Unbounded wskazuje, że XRInputSubsystem śledzi wszystkie urządzenia wejściowe w odniesieniu do punktu zaczepienia świata, który może się zmieniać. |
|
nie dotyczy |
Tryb mieszania środowiska |
Ta funkcja umożliwia ustawienie trybu mieszania środowiska XR, który kontroluje sposób mieszania obrazu wirtualnego ze środowiskiem rzeczywistym po włączeniu funkcji przepuszczania. |
Dane wejściowe i interakcje
Android XR obsługuje multimodalne wprowadzanie naturalne.
Oprócz śledzenia oka i ręki urządzenie obsługuje też urządzenia peryferyjne, takie jak kontrolery 6DoF, mysz i klawiatura fizyczna. Oznacza to, że aplikacje na Androida XR powinny obsługiwać interakcję z rękami, a nie można zakładać, że wszystkie urządzenia będą wyposażone w kontrolery.
Profile interakcji
Unity używa profilu interakcji do zarządzania sposobem komunikacji aplikacji XR z różnymi urządzeniami i platformami XR. Te profile określają oczekiwane dane wejściowe i wyjściowe dla różnych konfiguracji sprzętowych, zapewniając zgodność i spójność działania na różnych platformach. Dzięki włączeniu profili interakcji możesz mieć pewność, że aplikacja XR będzie prawidłowo działać na różnych urządzeniach, będzie zachowywać spójne mapowanie danych wejściowych i mieć dostęp do określonych funkcji XR. Aby ustawić profil interakcji:
- Otwórz okno Ustawienia projektu (menu Edytuj > Ustawienia projektu).
- Kliknij Zarządzanie wtyczkami XR, aby rozwinąć sekcję wtyczki (w razie potrzeby).
- Na liście wtyczek XR wybierz OpenXR.
- W sekcji Profile interakcji kliknij przycisk +, aby dodać profil.
- Wybierz z listy profil, który chcesz dodać.
Interakcja z ręką
Interakcja z rękami (XR_EXT_hand_interaction
) jest obsługiwana przez wtyczkę OpenXR, a
Interakcja z okiem
Interakcja z okiem (XR_EXT_eye_gaze_interaction
) jest obsługiwana przez wtyczkę OpenXR. Możesz użyć tego układu, aby pobrać dane dotyczące pozycji oka (pozycja i obrót), które zwraca rozszerzenie. Więcej informacji o interakcjach za pomocą śledzenia ruchów gałek ocznych znajdziesz w przewodniku OpenXR Input
Interakcja z kontrolerem
Android XR obsługuje profil kontrolera Oculus Touch w przypadku kontrolerów 6DoF. Oba te profile są udostępniane przez wtyczkę OpenXR.
Interakcja z myszą
Profil interakcji z myszą w Androidzie XR (XR_ANDROID_mouse_interaction
) jest udostępniany przez rozszerzenia Androida XR dla Unity. Udostępnia ona układ <AndroidXRMouse>
urządzenia w systemie wejściowym Unity.
Interakcja z palmą
Wtyczka OpenXR obsługuje interakcję Palm Pose (XR_EXT_palm_pose
), która udostępnia układ <PalmPose>
w systemie wejściowym Unity. Gest dłoni nie jest alternatywą dla rozszerzeń ani pakietów, które wykonują śledzenie dłoni w bardziej złożonych przypadkach użycia. Zamiast tego można go używać do umieszczania treści wizualnych związanych z konkretną aplikacją, takich jak obrazy awatara. Pozycja dłoni obejmuje zarówno jej położenie, jak i orientację.
XR Hands
Pakiet XR Hands umożliwia dostęp do danych śledzenia dłoni (XR_EXT_hand_tracking
i XR_FB_hand_tracking_aim
) oraz zapewnia owijacz do konwertowania danych stawów dłoni z śledzenia dłoni na pozycje wejściowe.
Aby korzystać z funkcji udostępnianych przez pakiet XR Hands, włącz funkcje Subsystem śledzenia rąk i Meta Hand Tracking Aim OpenXR.
Pakiet dłoni XR może być przydatny, jeśli potrzebujesz bardziej szczegółowych danych dotyczących pozycji dłoni lub stawów dłoni albo jeśli chcesz pracować z niestandardowymi gestami.
Więcej informacji znajdziesz w dokumentacji Unity na temat konfigurowania XR Hands w projekcie.
Wybierz sposób renderowania rąk
Android XR obsługuje 2 sposoby renderowania dłoni: siatkę dłoni i gotową wizualizację.
Siatka ręczna
Pakiet Unity na Androida XR zawiera funkcję Hand Mesh, która zapewnia dostęp do XR_ANDROID_hand_mesh extension
. Funkcja siatki dłoni udostępnia siatki dłoni użytkownika. Siatka dłoni zawiera wierzchołki trójkątów, które reprezentują geometrię dłoni. Ta funkcja służy do tworzenia spersonalizowanej siatki, która przedstawia rzeczywistą geometrię dłoni użytkownika na potrzeby wizualizacji.
Wstępny model rąk XR
Pakiet XR Hands zawiera przykład o nazwie Hands visualizer, który zawiera w pełni zdefiniowane lewą i prawą rękę do renderowania obrazu dłoni użytkownika w odpowiednim kontekście.
Gesty systemowe
Android XR zawiera gest systemowy, który umożliwia użytkownikom otwarcie menu, powrót do poprzedniego ekranu, otwarcie Launchera lub przeglądanie obecnie uruchomionych aplikacji. Użytkownik może aktywować to menu systemowe, używając kciuka i wskaźnika.
Gdy użytkownik korzysta z menu nawigacyjnego systemu, aplikacja będzie reagować tylko na zdarzenia śledzenia ruchów głowy. Pakiet XR Hands może wykrywać, kiedy użytkownik wykonuje określone czynności, takie jak nawigacja po menu systemu. Sprawdzenie wartości AimFlags SystemGesture i DominantHand pozwoli Ci dowiedzieć się, kiedy to działanie systemowe zostało wykonane. Więcej informacji o AimFlags znajdziesz w dokumentacji Unity dotyczącej typu MetaAimFlags.
Zestaw narzędzi do interakcji w XR
Pakiet XR Interaction Toolkit to ogólny system interakcji oparty na komponentach, przeznaczony do tworzenia doświadczeń VR i AR. Zapewnia ono środowisko, które umożliwia interakcje 3D i interfejs użytkownika na podstawie zdarzeń wejściowych Unity. Obsługuje zadania związane z interakcją, w tym reakcję na dotyk, wizualną reakcję i ruchy.