Ten przewodnik zawiera omówienie programowania na platformie Android XR za pomocą Unity. Android XR działa z 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ę:
- Obsługa Unity na Androidzie XR
- 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 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 pojęcia i procesy związane z XR. Instrukcja XR zawiera informacje o:
- Wtyczki dostawcy 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 do zarządzania wtyczkami XR i oferowania 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.
Ten obraz pokazuje przykład miejsca, w którym można włączyć te grupy funkcji w edytorze Unity.
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 rozwiązania. Można go używać samodzielnie lub razem 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 pakiety Unity OpenXR: Android XR i 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 (Extensions): Session Management
|
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 gry XR Origin automatycznie obsługuje śledzenie urządzenia i przekształcanie śledzonych obiektów w układ współrzędnych Unity za pomocą komponentu XROrigin i hierarchii obiektów gry z kamerą i TrackedPoseDriver. |
|
Android XR: Aparat AR |
Nie dotyczy |
Ta funkcja obsługuje szacowanie oświetlenia i przekazywanie obrazu na pełnym ekranie. |
|
Android XR: płaszczyzna AR |
Android XR (Extensions): Plane |
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 kotwic w Androidzie XR (Extensions) bez konieczności polegania na pakiecie Unity OpenXR Android XR. W przyszłości interfejs Android XR (Extensions): Plane zostanie usunięty na rzecz interfejsu 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żywaj Androida XR (rozszerzenia): Anchor. W przyszłości funkcja Android XR (Extensions): Anchor zostanie usunięta, a wszystkie jej funkcje będą dostępne w Androidzie XR: AR Anchor. |
|
Android XR: zasłanianie w AR
|
Nie dotyczy |
Określanie widoczności 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 passthrough
|
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 GameObject w Unity. |
|
Renderowanie z ogniskowaniem (wymagana wtyczka OpenXR)
|
Foveation (starsza wersja) |
Renderowanie foveated umożliwia przyspieszenie renderowania 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 dłoni 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ą dostarczane z kontrolerami.
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 użyciem dłoni
Interakcja z użyciem dłoni (XR_EXT_hand_interaction) jest zapewniana przez wtyczkę OpenXR. Możesz udostępnić układ urządzenia w systemie wprowadzania danych Unity, włączając profil interakcji z użyciem dłoni.<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 użyciem rąk lub śledzenia rąk, 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 <AndroidXRMouse> układ urządzenia w systemie wejściowym Unity.
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 treści wizualnych specyficznych dla aplikacji, takich jak awatary. Pozycja dłoni obejmuje zarówno jej położenie, jak i orientację.
Ręce XR
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 na temat konfigurowania rąk XR w projekcie.
Regiony ufności śledzenia twarzy
Rozszerzenie XR_ANDROID_face_tracking podaje wartości ufności dla 3 obszarów twarzy: lewego górnego, prawego górnego i dolnej części twarzy. Te wartości, które mieszczą się w zakresie od 0 (brak pewności) do 1 (najwyższa pewność), wskazują dokładność śledzenia twarzy w poszczególnych regionach.
Możesz używać tych wartości ufności do stopniowego wyłączania kształtów mieszanych lub stosowania filtrów wizualnych (np. rozmycia) do odpowiedniego obszaru twarzy. Aby wyłączyć podstawowe kształty mieszane, dezaktywuj je w odpowiednim regionie twarzy.
Obszar „dolnej części twarzy” obejmuje wszystko poniżej oczu, w tym usta, podbródek, policzki i nos. Dwa górne obszary obejmują oczy i brwi po lewej i prawej stronie twarzy.
Poniższy fragment kodu w języku C# pokazuje, jak uzyskać dostęp do danych ufności i ich używać w skrypcie Unity:
using UnityEngine;
using Google.XR.Extensions;
public class FaceTrackingConfidence : MonoBehaviour
{
void Update()
{
if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.HasValue)
{
DebugTextTopCenter.text = "XrInstance hasn't been initialized.";
return;
}
else if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.Value)
{
DebugTextTopCenter.text = "XR_ANDROID_face_tracking is not enabled.";
return;
}
for (int x = 0; x < _faceManager.Face.ConfidenceRegions.Length; x++)
{
switch (x)
{
case (int)XRFaceConfidenceRegion.Lower:
regionText = "Bottom";
break;
case (int)XRFaceConfidenceRegion.LeftUpper:
regionText = DebugTextConfidenceLeft;
break;
case (int)XRFaceConfidenceRegion.RightUpper:
regionText = DebugTextConfidenceRight;
break;
}
}
}
Więcej informacji znajdziesz w dokumentacji rozszerzeń Androida XR dla Unity.
Wybierz sposób renderowania dłoni
Android XR obsługuje 2 sposoby renderowania dłoni: siatkę dłoni i prefabrykowany wizualizator.
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.
Prefabrykat XR Hands
Pakiet XR Hands zawiera przykład o nazwie Hands visualizer, który zawiera w pełni animowane 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 cofnąć się, otworzyć menu z aplikacjami lub wyświetlić 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 opcji 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. Umożliwia ona interakcje 3D i interfejsu użytkownika na podstawie zdarzeń wejściowych Unity. Obsługuje zadania związane z interakcją, w tym reakcje haptyczne, wizualne 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.