Ten przewodnik zawiera omówienie programowania na platformie Unity na potrzeby Androida XR. Android XR współpracuje ze znanymi narzędziami i funkcjami, których oczekujesz od Unity. Obsługa Androida XR w Unity jest oparta na OpenXR, więc wiele funkcji opisanych w omówieniu OpenXR jest też obsługiwanych w Unity.
Z tego przewodnika dowiesz się więcej o:
- Obsługa Androida XR w Unity
- Podstawy Unity XR
- Tworzenie i publikowanie aplikacji na Androida XR
- Pakiety Unity na Androida XR
- Unity OpenXR: pakiet Android XR
- Rozszerzenia Androida XR dla Unity
- Funkcje i kwestie związane ze zgodnością
- Dane wejściowe i interakcje
Obsługa Unity na Androidzie XR
Podczas tworzenia aplikacji Unity na Androida XR możesz korzystać z narzędzi i funkcji rzeczywistości mieszanej dostępnych w najnowszych wersjach Unity 6. Obejmuje to szablony rzeczywistości mieszanej, które korzystają z XR Interaction Toolkit, AR Foundation i OpenXR Plugin, aby pomóc Ci szybko rozpocząć pracę. Podczas tworzenia aplikacji za pomocą Unity na Androida XR zalecamy używanie uniwersalnego potoku renderowania (URP) jako potoku renderowania i Vulkana jako interfejsu Graphics API. Te funkcje umożliwiają korzystanie z niektórych funkcji graficznych Unity, które są obsługiwane tylko w przypadku Vulkan. Więcej informacji o konfigurowaniu tych ustawień znajdziesz w przewodniku po konfigurowaniu projektu.
Unity XR Basics
Jeśli dopiero zaczynasz przygodę z Unity lub tworzeniem aplikacji XR, zapoznaj się z podręcznikiem Unity XR, aby poznać podstawowe koncepcje i procesy związane z XR. Instrukcja XR zawiera informacje o:
- Wtyczki dostawców XR, w tym Unity OpenXR: Android XR i rozszerzenia Androida XR dla Unity.
- pakiety obsługi XR, aby dodać dodatkowe funkcje na poziomie aplikacji;
- Przewodnik po architekturze XR, który opisuje stos technologii Unity XR i podsystemy XR
- Konfigurowanie projektu XR
- Tworzenie i uruchamianie aplikacji XR
- Wskazówki dotyczące grafiki XR, w tym uniwersalny potok renderowania, renderowanie stereo, renderowanie z ogniskowaniem, regiony renderowania wielowidokowego i czas klatek VR
- Wskazówki dotyczące dźwięku w XR, w tym obsługa przestrzennego dźwięku
Tworzenie i publikowanie aplikacji na Androida
Unity udostępnia szczegółową dokumentację dotyczącą tworzenia, kompilowania i publikowania aplikacji na Androida, która obejmuje takie tematy jak uprawnienia Androida w Unity, ustawienia kompilacji na Androida, kompilowanie aplikacji na Androida i przesyłanie aplikacji do Google Play.
Pakiety Unity na Androida XR
Istnieją 2 pakiety, które umożliwiają tworzenie aplikacji Unity na Androida XR. Oba te pakiety to wtyczki dostawcy XR, które można włączyć za pomocą pakietu XR Plug-in Management w Unity. Menedżer wtyczek XR dodaje ustawienia projektu, które umożliwiają zarządzanie wtyczkami XR i oferowanie pomocy w zakresie ich wczytywania, inicjowania, ustawień i obsługi kompilacji. Aby umożliwić aplikacji wykonywanie funkcji OpenXR w czasie działania, musisz 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 Android XR
Pakiet Unity OpenXR Android XR to wtyczka XR, która dodaje obsługę Androida XR w Unity. Ta wtyczka XR zapewnia większość funkcji Androida XR w Unity i 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 AR lub rzeczywistości mieszanej. Zapewnia interfejs funkcji AR, ale nie implementuje żadnych funkcji. Implementację zapewnia pakiet Unity OpenXR Android XR. Aby rozpocząć korzystanie z tego pakietu, zapoznaj się z jego instrukcją, która zawiera przewodnik dla początkujących.
Rozszerzenia Androida XR dla Unity
Rozszerzenia Androida XR dla Unity uzupełniają pakiet Unity OpenXR Android XR i zawierają dodatkowe funkcje, które pomagają tworzyć wciągające środowiska. Można go używać samodzielnie lub w połączeniu z pakietem Unity OpenXR Android XR.
Aby rozpocząć korzystanie z tego pakietu, postępuj zgodnie z naszym przewodnikiem po konfiguracji projektu lub krótkim przewodnikiem po importowaniu rozszerzeń Androida XR dla Unity.
Funkcje i kwestie związane ze zgodnością
W tej tabeli opisano funkcje obsługiwane przez pakiet Unity OpenXR: Android XR i pakiet Android XR Extensions for Unity. Możesz jej użyć, aby określić, który pakiet zawiera potrzebne Ci funkcje, oraz sprawdzić, czy są jakieś kwestie związane z kompatybilnością.
Funkcja |
Unity OpenXR: ciąg funkcji Androida XR |
Ciąg znaków funkcji rozszerzeń Androida XR dla Unity |
Przypadki użycia i oczekiwane działanie |
---|---|---|---|
Android XR: sesja AR
|
Android XR (rozszerzenia): zarządzanie sesjami
|
Aby korzystać z funkcji z dowolnego pakietu, musisz włączyć funkcję sesji AR dla tego pakietu. Możesz włączyć oba zestawy funkcji jednocześnie. Poszczególne funkcje będą odpowiednio obsługiwać konflikty. |
|
Nie dotyczy |
Nie dotyczy |
Śledzenie urządzenia służy do śledzenia jego pozycji i obrotu w przestrzeni fizycznej. Obiekt GameObject XR Origin automatycznie obsługuje śledzenie urządzenia i przekształcanie śledzonych obiektów w układzie współrzędnych Unity za pomocą komponentu XROrigin i hierarchii obiektów GameObject z kamerą i komponentem TrackedPoseDriver. |
|
Android XR: Aparat AR |
Nie dotyczy |
Ta funkcja obsługuje szacowanie oświetlenia i przekazywanie obrazu na pełnym ekranie. |
|
Android XR: AR Plane |
Android XR (rozszerzenia): samolot |
Te 2 funkcje są identyczne. Użyj jednej z nich. Android XR (Extensions): płaszczyzna jest uwzględniona, aby deweloperzy mogli korzystać z funkcji śledzenia obiektów i trwałych punktów zakotwiczenia w Androidzie XR (Extensions) bez konieczności polegania na pakiecie Unity OpenXR Android XR. W przyszłości funkcja Android XR (Extensions): Plane zostanie usunięta na rzecz Android XR: AR Anchor. |
|
Nie dotyczy |
Android XR (Extensions): Object Tracking |
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 zapewniana przez funkcję Android XR: AR Face. Dostęp do wyrazów twarzy użytkownika za pomocą funkcji Android XR: śledzenie twarzy. Obie te funkcje mogą być używane razem. |
|
Android XR: AR Raycast
|
Nie dotyczy |
Ta funkcja umożliwia rzutowanie promienia i obliczanie punktu przecięcia tego promienia z obiektami śledzonymi w płaszczyźnie lub obiektami śledzonymi na podstawie głębi, które są wykrywane w środowisku fizycznym. |
|
Android XR: kotwica AR |
Android XR (Extensions): Anchor
|
Obie funkcje obsługują kotwice przestrzenne i kotwice płaszczyzny. Możesz używać jednej z nich. W przypadku trwałych kotwic użyj Androida XR (rozszerzenia): Anchor. W przyszłości usuniemy Android XR (Extensions): Anchor, a wszystkie funkcje Anchor będą dostępne w Android XR: AR Anchor. |
|
Android XR: zasłanianie w AR
|
Nie dotyczy |
Określanie zasłaniania umożliwia ukrywanie lub częściowe zasłanianie treści w rzeczywistości mieszanej w aplikacji przez obiekty w środowisku fizycznym. |
|
Dane dotyczące skuteczności |
Dane o wydajności Androida XR |
Nie dotyczy |
Użyj tej funkcji, aby uzyskać dostęp do danych o wydajności urządzeń z Androidem XR. |
Obsługa warstwy kompozycji (wymagane są wtyczka OpenXR i warstwa kompozycji XR) |
Android XR: warstwa kompozycji przekazywania
|
Korzystaj z funkcji Unity Composition Layer Support, aby tworzyć podstawowe warstwy kompozycji (np. czworokąt, cylinder, projekcja). Android XR: warstwa kompozycji passthrough może być używana do tworzenia warstwy passthrough z niestandardową siatką, odczytującą dane z obiektu GameObject w Unity. |
|
Renderowanie z ogniskowaniem (wymagana wtyczka OpenXR)
|
Foveation (starsza wersja) |
Renderowanie z ogniskowaniem pozwala przyspieszyć renderowanie poprzez obniżenie rozdzielczości obszarów w peryferyjnym polu widzenia użytkownika. Renderowanie z ogniskowaniem w Unity jest obsługiwane tylko w przypadku aplikacji korzystających z URP i Vulkana. Funkcja Foveation (starsza wersja) w rozszerzeniach Android XR dla Unity obsługuje też wbudowany potok renderowania i OpenGL ES. W miarę możliwości zalecamy korzystanie z funkcji renderowania z ogniskowaniem wzroku w Unity. Pamiętaj, że w przypadku tworzenia aplikacji na Androida XR zalecane są zarówno URP, jak i Vulkan. |
|
Nie dotyczy |
Android XR: nieograniczona przestrzeń odniesienia |
Ta funkcja ustawia tryb śledzenia XRInputSubsystem na Unbounded. Nieograniczone oznacza, że XRInputSubsystem śledzi wszystkie urządzenia wejściowe w odniesieniu do kotwicy świata, która może się zmieniać. |
|
Nie dotyczy |
Tryb mieszania środowiska |
Ta funkcja umożliwia ustawienie trybu mieszania środowiska XR, który określa, jak wirtualne obrazy mieszają się z otoczeniem w świecie rzeczywistym, gdy włączony jest tryb widoku otoczenia. |
Dane wejściowe i interakcje
Android XR obsługuje wielomodowe naturalne wprowadzanie danych.
Oprócz śledzenia rąk i oczu obsługiwane są też urządzenia peryferyjne, takie jak kontrolery 6DoF, mysz i klawiatura fizyczna. Oznacza to, że aplikacje na Androida XR powinny obsługiwać interakcję za pomocą dłoni i 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, w jaki aplikacja XR komunikuje się 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, co zapewnia zgodność i spójne działanie na różnych platformach. Włączając profile interakcji, możesz mieć pewność, że aplikacja XR będzie działać prawidłowo na różnych urządzeniach, zachowa spójne mapowanie danych wejściowych i będzie 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ę wtyczek (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 dłonią
Interakcja z użyciem rąk (XR_EXT_hand_interaction
) jest zapewniana przez wtyczkę OpenXR. Możesz udostępnić układ urządzenia w systemie wejściowym Unity, włączając profil interakcji z użyciem rąk.<HandInteraction>
Użyj tego profilu interakcji w przypadku wprowadzania danych za pomocą dłoni obsługiwanego przez 4 pozycje działania zdefiniowane przez OpenXR: „szczypanie”, „dotykanie”, „celowanie” i „chwytanie”. Jeśli potrzebujesz dodatkowych funkcji interakcji z dłońmi lub śledzenia dłoni, zapoznaj się z sekcją XR Hands na tej stronie.
Interakcja za pomocą wzroku
Interakcja za pomocą wzroku (XR_EXT_eye_gaze_interaction
) jest zapewniana przez wtyczkę OpenXR. Możesz użyć tego układu, aby pobrać dane o pozycji oczu (położenie i rotacja) zwracane przez rozszerzenie. Więcej informacji o interakcji za pomocą wzroku 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 myszy na Androidzie XR (XR_ANDROID_mouse_interaction
) jest udostępniany przez rozszerzenia Androida XR dla Unity. Udostępnia on układ urządzenia w systemie wejściowym Unity.<AndroidXRMouse>
Interakcja z gestem dłoni
Wtyczka OpenXR obsługuje interakcję z pozycją dłoni (XR_EXT_palm_pose
), która udostępnia układ <PalmPose>
w systemie wejściowym Unity.
Pozycja dłoni nie ma być alternatywą dla rozszerzeń ani pakietów, które śledzą ruch dłoni w bardziej złożonych przypadkach użycia. Można jej natomiast używać do umieszczania wizualnych treści specyficznych dla aplikacji, takich jak awatary. 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 rąk – za pomocą XR_EXT_hand_tracking
i XR_FB_hand_tracking_aim
– oraz udostępnia otoczkę do konwertowania danych o stawach rąk ze śledzenia rąk na pozy wejściowe. Aby korzystać z funkcji pakietu XR Hands, włącz funkcje Hand Tracking Subsystem i Meta Hand Tracking Aim OpenXR.
Pakiet XR hands może być przydatny, jeśli potrzebujesz bardziej szczegółowych danych o pozycji dłoni lub stawów dłoni albo gdy chcesz pracować z gestami niestandardowymi.
Więcej informacji znajdziesz w dokumentacji Unity dotyczącej konfigurowania rąk XR w projekcie.
Wybierz sposób renderowania dłoni
Android XR obsługuje 2 sposoby renderowania dłoni: siatkę dłoni i wizualizator prefabrykowany.
Siatka dłoni
Pakiet Android XR Unity zawiera funkcję Hand Mesh, która zapewnia dostęp do XR_ANDROID_hand_mesh extension
. Funkcja Hand Mesh
zapewnia siatki dla rąk użytkownika. Siatka dłoni zawiera wierzchołki trójkątów, które reprezentują geometrię dłoni. Ta funkcja jest przeznaczona do tworzenia spersonalizowanej siatki reprezentującej rzeczywistą geometrię dłoni użytkownika na potrzeby wizualizacji.
Prefab XR Hands
Pakiet XR Hands zawiera przykład o nazwie Hands visualizer, który zawiera w pełni przygotowane lewą i prawą dłoń do renderowania odpowiedniej reprezentacji dłoni użytkownika.
Gesty systemowe
Android XR zawiera gest systemowy, który umożliwia użytkownikom otwieranie menu, aby cofać, otwierać program uruchamiający lub wyświetlać przegląd uruchomionych aplikacji. Użytkownik może aktywować to menu systemowe, wykonując gest uszczypnięcia dominującą ręką.
Gdy użytkownik korzysta z menu nawigacji systemowej, aplikacja reaguje tylko na zdarzenia śledzenia głowy. Pakiet XR Hands może wykrywać, kiedy użytkownik wykonuje określone działania, takie jak interakcja z tym menu nawigacji systemowej. Sprawdzanie AimFlags
, SystemGesture
i DominantHand
pozwala dowiedzieć się, kiedy to działanie systemu jest wykonywane. Więcej informacji o AimFlags
znajdziesz w dokumentacji Unity dotyczącej wyliczenia MetaAimFlags.
XR Interaction Toolkit
Pakiet XR Interaction Toolkit to zaawansowany system interakcji oparty na komponentach, który umożliwia tworzenie środowisk VR i AR. Zapewnia on strukturę, która udostępnia interakcje 3D i interfejsu użytkownika ze zdarzeń wejściowych Unity. Obsługuje zadania związane z interakcją, w tym reakcję na dotyk, reakcję wizualną i lokomocję.
OpenXR™ i logo OpenXR są znakami towarowymi należącymi do The Khronos Group Inc. i są zarejestrowane jako znaki towarowe w Chinach, Unii Europejskiej, Japonii i Wielkiej Brytanii.