Tworzenie aplikacji na Androida XR w Unity

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 Foundationwtyczki 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:

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 Androidapublikowanie 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.

Przykład ekranu zarządzania wtyczką Unity XR

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

Sesja AR

Android XR: sesja AR

  • Ustawienia funkcji obejmują optymalizację odrzucania buforów (Vulkan)

Android XR (rozszerzenia): zarządzanie sesją

  • Ustawienia funkcji obejmują subsampling (Vulkan) i URP SpaceWarp (Vulkan).

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.

Śledzenie urządzeń

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.

Aparat

Android XR: Aparat AR

nie dotyczy

Ta funkcja obsługuje szacowanie oświetlenia i przepuszczanie pełnego ekranu.

Wykrywanie samolotów

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.

Śledzenie obiektów

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.

Śledzenie twarzy

Android XR: AR Face

  • XR_ANDROID_avatar_eyes only
  • Brak śledzenia twarzy

Android XR: śledzenie twarzy

  • XR_ANDROID_face_tracking

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.

Promienie

Android XR: rzutowanie w rzeczywistości

  • Plane Anchor
  • Kotwica głębokoś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.

Kotwice

Android XR: punkty orientacyjne AR

Android XR (rozszerzenia): Anchor

  • Ustawienia funkcji obejmują trwałość.

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.

Zasłonięcie

Android XR: zasłona AR

  • Głębokość środowiska

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.

Warstwy kompozycji

Obsługa warstwy kompozytowej (wymagane są wtyczka OpenXR i warstwa kompozytowa XR)

Android XR: warstwa kompozytowa z przekazywaniem

  • XR_ANDROID_composition_layer_passthrough_mesh

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.

Renderowanie foveated

Foveated Rendering (wymaga wtyczki OpenXR)

  • Obsługuje renderowanie foveate z wykorzystaniem śledzenia wzroku: obszar o wyższej rozdzielczości jest wyśrodkowany w miejscu, na które użytkownik patrzy, co powoduje, że jest on mniej widoczny dla użytkownika.

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.

Nieograniczony obszar odniesienia

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ć.

Tryb mieszania środowiska

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:

  1. Otwórz okno Ustawienia projektu (menu Edytuj > Ustawienia projektu).
  2. Kliknij Zarządzanie wtyczkami XR, aby rozwinąć sekcję wtyczki (w razie potrzeby).
  3. Na liście wtyczek XR wybierz OpenXR.
  4. W sekcji Profile interakcji kliknij przycisk +, aby dodać profil.
  5. 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  układ urządzenia możesz udostępnić w systemie wejściowym Unity, włączając profil interakcji z rękami. Użyj tego profilu interakcji do obsługi wprowadzania za pomocą dłoni w ramach 4 określonych przez OpenXR gestów: „szczypanie”, „stukanie”, „celowanie” i „chwytanie”. Jeśli potrzebujesz dodatkowych funkcji interakcji z rękami lub śledzenia dłoni, zapoznaj się z XR Hands na tej stronie.

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>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_trackingXR_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ąkMeta Hand Tracking Aim OpenXR.

Przykład pokazujący, jak włączyć śledzenie rąk

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.