Tworzenie aplikacji na Androida XR w Unity

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

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 Androidaprzesył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.

Przykład ekranu zarządzania wtyczką Unity XR

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

Sesja AR

Android XR: sesja AR

  • Ustawienia funkcji obejmują Optymalizuj odrzucanie bufora (Vulkan)

Android XR (rozszerzenia): zarządzanie sesjami

  • Ustawienia funkcji obejmują podpróbkowanie (Vulkan) i URP SpaceWarp (Vulkan).

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.

Śledzenie urządzenia

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.

Aparat

Android XR: Aparat AR

Nie dotyczy

Ta funkcja obsługuje szacowanie oświetlenia i przekazywanie obrazu na pełnym ekranie.

Wykrywanie płaszczyzny

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.

Śledzenie obiektów

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.

Śledzenie twarzy

Android XR: AR Face

  • Tylko XR_ANDROID_eye_tracking
  • Brak śledzenia twarzy

Android XR: śledzenie twarzy

  • XR_ANDROID_face_tracking

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.

Rzutowanie promieni

Android XR: AR Raycast

  • Plane Anchor
  • Kotwica głębi

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.

Kotwice

Android XR: kotwica AR

Android XR (Extensions): Anchor

  • Ustawienia funkcji obejmują trwałość.

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.

Occlusion

Android XR: zasłanianie w AR

  • Głębokość środowiska

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.

Warstwy kompozycji

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

Android XR: warstwa kompozycji przekazywania

  • XR_ANDROID_composition_layer_passthrough_mesh

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 foveated

Renderowanie z ogniskowaniem (wymagana wtyczka OpenXR)

  • Obsługa renderowania foveated śledzonego wzrokiem: obszar o wyższej rozdzielczości jest wyśrodkowany w miejscu, na które patrzy użytkownik, dzięki czemu jest mniej widoczny.

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.

Nieograniczona przestrzeń referencyjna

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

Tryb mieszania środowiska

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:

  1. Otwórz okno Ustawienia projektu (menu: Edytuj > Ustawienia projektu).
  2. Kliknij Zarządzanie wtyczkami XR, aby rozwinąć sekcję wtyczek (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 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>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_trackingXR_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 SubsystemMeta Hand Tracking Aim OpenXR.

Przykład pokazujący, jak włączyć śledzenie dłoni

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, SystemGestureDominantHand 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.