W tym przewodniku znajdziesz omówienie tworzenia aplikacji na Androida XR za pomocą Unity. Android XR współpracuje ze znanymi narzędziami i funkcjami, których oczekujesz od Unity. Ponieważ obsługa Androida XR w Unity jest oparta na OpenXR, wiele funkcji opisanych w omówieniu OpenXR jest też obsługiwanych w Unity.
Z tego przewodnika dowiesz się:
- Obsługa Unity na Androidzie XR
- Podstawowe informacje o 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 dotyczące zgodności
- Dane wejściowe i interakcja
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 Universal Render Pipeline (URP) jako potoku renderowania i Vulkan jako interfejsu Graphics API. Te funkcje umożliwiają korzystanie z niektórych funkcji graficznych Unity, które są obsługiwane tylko przez Vulkan. Więcej informacji o konfigurowaniu tych ustawień znajdziesz w przewodniku po konfiguracji projektu.
Podstawy Unity XR
Jeśli dopiero zaczynasz korzystać z Unity lub XR, zapoznaj się z instrukcją XR w Unity, aby poznać podstawowe pojęcia i procesy XR. Instrukcja XR zawiera informacje o:
- Wtyczki dostawcy XR, w tym Unity OpenXR: Android XR i rozszerzenia Android XR dla Unity.
- Pakiety obsługi XR, które dodają dodatkowe funkcje na poziomie aplikacji.
- Przewodnik po architekturze XR, który opisuje stos technologiczny 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 foveated, regiony renderowania w wielu widokach i czas renderowania klatek VR
- wskazówki głosowe 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, tworzenie aplikacji na Androida i publikowanie w Google Play.
Pakiety Unity na Androida XR
Dostępne są 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 zarządzania wtyczkami XR w Unity. Menedżer wtyczek XR dodaje ustawienia projektu, które umożliwiają zarządzanie wtyczkami XR i pomagają w ich wczytywaniu, inicjowaniu, konfigurowaniu i obsłudze kompilacji. Aby aplikacja mogła wykonywać funkcje OpenXR w czasie działania, projekt musi mieć te funkcje włączone w menedżerze wtyczek.
Ten obraz przedstawia przykład, gdzie 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 do Unity. Ta wtyczka XR zapewnia większość obsługi 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 dla funkcji AR, ale nie implementuje żadnych funkcji. Pakiet Unity OpenXR Android XR zapewnia implementację. Aby rozpocząć korzystanie z tego pakietu, zapoznaj się z 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ć immersyjne doświadczenia. 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 wprowadzeniem do importowania rozszerzeń Androida XR do Unity.
Funkcje i kwestie dotyczące zgodności
W tabeli poniżej 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 funkcje, i sprawdzić kwestie związane ze zgodnością.
Funkcja |
Unity OpenXR: ciąg znaków 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. Konflikty między poszczególnymi funkcjami będą odpowiednio rozwiązywane. |
|
Nie dotyczy |
Nie dotyczy |
Śledzenie urządzenia służy do śledzenia jego pozycji i obrotu w przestrzeni fizycznej. GameObject XR Origin automatycznie obsługuje śledzenie urządzeń i przekształcanie elementów śledzonych na układ współrzędnych Unity za pomocą komponentu XROrigin i hierarchii GameObject z kamerą i TrackedPoseDriver. |
|
Android XR: aparat AR |
Nie dotyczy |
Ta funkcja obsługuje szacowanie oświetlenia i tryb passthrough na pełnym ekranie. |
|
Android XR: AR Plane |
Nie dotyczy |
Ta funkcja umożliwia wykrywanie i śledzenie płaskich powierzchni w środowisku fizycznym. |
|
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 zapewniana przez funkcję Android XR: AR Face. Dostęp do mimiki użytkownika za pomocą funkcji Android XR: śledzenie twarzy. Możesz używać obu tych funkcji jednocześnie. |
|
Android XR: AR Raycast
|
Nie dotyczy |
Ta funkcja umożliwia rzutowanie promienia i obliczanie przecięcia między tym promieniem a wykrytymi w środowisku fizycznym elementami śledzenia płaszczyzny lub głębi. |
|
Android XR: kotwica AR |
Nie dotyczy |
Kotwica AR obsługuje kotwice przestrzenne, płaskie i trwałe za pomocą AR Foundation. |
|
Android XR: okluzja AR
|
Nie dotyczy |
Okluzja umożliwia ukrywanie lub częściowe zasłanianie treści rzeczywistości mieszanej w aplikacji przez obiekty w środowisku fizycznym. |
|
Wskaźniki skuteczności |
Wskaźniki skuteczności Androida XR |
Nie dotyczy |
Ta funkcja umożliwia dostęp do danych o wydajności urządzeń z Androidem XR. |
Obsługa warstwy kompozycji (wymagana jest wtyczka OpenXR i warstwa kompozycji XR) |
Android XR: warstwa kompozycji trybu Passthrough
|
Użyj obsługi warstw kompozycji w Unity, aby utworzyć podstawowe warstwy kompozycji (np. czworokąt, cylinder, projekcja). Android XR: warstwy kompozycji trybu passthrough można użyć do utworzenia warstwy trybu passthrough z niestandardową siatką, odczytując dane z GameObject w Unity. |
|
Renderowanie foveated (wymagana jest wtyczka OpenXR)
|
Fowiacja (starsza wersja) |
Renderowanie fowacyjne pozwala przyspieszyć renderowanie przez obniżenie rozdzielczości obszarów w polu widzenia peryferyjnego użytkownika. Funkcja renderowania foveated w Unity jest obsługiwana tylko w aplikacjach korzystających z URP i Vulkan. Funkcja fowiacji (starsza wersja) w rozszerzeniach Androida XR dla Unity obsługuje też wbudowany potok renderowania i OpenGL ES. Zalecamy korzystanie z funkcji renderowania foveated w Unity, gdy jest to możliwe. Pamiętaj, że podczas tworzenia aplikacji na Androida XR zalecamy korzystanie zarówno z URP, jak i Vulkan. |
|
Nie dotyczy |
Ta funkcja ustawia tryb punktu początkowego śledzenia XRInputSubsystem na Unbounded. Wartość Unbounded wskazuje, ż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 obrazy wirtualne łączą się ze środowiskiem rzeczywistym, gdy włączony jest tryb widoku otoczenia. |
|
Nie dotyczy |
Umożliwia |
||
Nie dotyczy |
Zapewnia strategie konfiguracji uwierzytelniania sesji (klucz interfejsu API, bez klucza i token uwierzytelniania) dla usług obsługujących chmurę. |
||
Nie dotyczy |
Rozszerza Unity ARFace o konfigurowalne, multimodalne tryby śledzenia twarzy ( |
||
Nie dotyczy |
Umożliwia sprawdzanie stanu baterii i poziomu naładowania połączonych kontrolerów i ścieżek wejściowych za pomocą interfejsu |
||
Android XR: aparat AR |
Nie dotyczy |
Umożliwia sprawdzanie i ustawianie poziomów przyciemniania obrazu z kamery za pomocą funkcji ARCameraFeature w Unity. |
|
Nie dotyczy |
Wylicza właściwości rozszerzenia środowiska wykonawczego i możliwości urządzenia za pomocą |
||
Nie dotyczy |
Umożliwia sprawdzanie stanów środowiska wykonawczego przed uruchomieniem (w tym trybu mieszania środowiska, przezroczystości i aktywnych trybów wprowadzania danych) za pomocą |
||
Android XR: ramka ograniczająca AR |
Zapewnia obsługę wykrywania ramek ograniczających w przypadku obiektów 3D w środowisku fizycznym przy użyciu platformy OpenXR Spatial Entities ( |
||
Nie dotyczy |
Elementy przestrzenne (rozszerzenia): kotwice do udostępniania |
Rozszerza możliwości kotwic za pomocą |
|
Nie dotyczy |
Umożliwia renderowanie treści aplikacji w zarządzanym przez system kontenerze wolumetrycznym 3D w trybie pełnej przestrzeni, z interfejsami API i zdarzeniami wywołania zwrotnego w |
Dane wejściowe i interakcja
Android XR obsługuje multimodalne, naturalne wprowadzanie danych.
Oprócz śledzenia dłoni i wzroku 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ć interakcje 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 z XR 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łączenie profili interakcji pomaga zapewnić prawidłowe działanie aplikacji XR na różnych urządzeniach, zachowanie spójnego mapowania danych wejściowych i dostęp do określonych funkcji XR. Aby ustawić profil interakcji:
- Otwórz okno Ustawienia projektu (menu: Edytuj > Ustawienia projektu).
- Kliknij XR Plug-in Management (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 za pomocą dłoni
Interakcja za pomocą dłoni (XR_EXT_hand_interaction) jest obsługiwana przez wtyczkę OpenXR. Układ urządzenia <HandInteraction> możesz udostępnić w systemie wprowadzania Unity, włączając profil interakcji za pomocą dłoni. Używaj tego profilu interakcji do wprowadzania danych dłonią obsługiwanego przez 4 pozy działania zdefiniowane przez OpenXR: „uszczypnięcie”, „pchnięcie”, „celowanie” i „chwyt”. Jeśli potrzebujesz dodatkowych funkcji interakcji lub śledzenia rąk, zapoznaj się z informacjami o XR Hands na tej stronie.
Interakcja za pomocą wzroku
Interakcja za pomocą wzroku (XR_EXT_eye_gaze_interaction) jest obsługiwana przez wtyczkę OpenXR. Możesz użyć tego układu, aby pobrać dane o położeniu oczu (pozycja i obrót), które zwraca rozszerzenie. Więcej informacji o interakcji za pomocą wzroku znajdziesz w przewodniku po danych wejściowych OpenXR.
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ą na Androidzie XR (XR_ANDROID_mouse_interaction) jest udostępniany przez rozszerzenia Androida XR dla Unity. Udostępnia on układ urządzenia <AndroidXRMouse> w systemie Unity Input System.
Interakcja z gestem dłoni
Wtyczka OpenXR obsługuje interakcję Palm Pose (XR_EXT_palm_pose), która udostępnia układ <PalmPose> w systemie wprowadzania danych Unity.
Pozycja dłoni nie ma być alternatywą dla rozszerzeń lub pakietów, które śledzą dłonie w bardziej złożonych przypadkach użycia. Zamiast tego można jej używać do umieszczania treści wizualnych związanych z aplikacją, takich jak grafiki awatarów. 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 kod do konwertowania danych o stawach dłoni ze śledzenia rąk na pozycje wejściowe. Aby korzystać z funkcji dostępnych w pakiecie XR Hands, włącz funkcje śledzenie rąk Subsystem i Meta śledzenie rąk Aim OpenXR.
Pakiet XR Hands może być przydatny, jeśli potrzebujesz bardziej szczegółowych danych o pozycji dłoni lub stawach dłoni albo gdy chcesz pracować z niestandardowymi gestami.
Więcej informacji znajdziesz w dokumentacji Unity dotyczącej konfigurowania XR Hands w projekcie.
Regiony ufności śledzenia twarzy
Rozszerzenie XR_ANDROID_face_tracking podaje poziomy ufności dla 3 obszarów twarzy: lewego górnego, prawego górnego i dolnego. Te wartości, od 0 (brak pewności) do 1 (najwyższa pewność), wskazują dokładność śledzenia twarzy w każdym regionie.
Możesz użyć tych poziomów ufności, aby stopniowo wyłączać kształty mieszane lub stosować filtry wizualne (np. rozmycie) do odpowiedniego obszaru twarzy. W przypadku podstawowego wyłącz kształty mieszane w odpowiednim obszarze 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 o pewności i używać ich 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 Unity 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 ma służyć do tworzenia spersonalizowanej siatki, która odzwierciedla 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 przygotowane lewą i prawą dłoń do renderowania odpowiedniej do kontekstu reprezentacji dłoni użytkownika.
Gesty systemowe
Android XR zawiera gest systemowy, który otwiera menu umożliwiające użytkownikom cofanie się, otwieranie menu z aplikacjami lub wyświetlanie przeglądu 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 ruchów głowy. Pakiet XR Hands może wykrywać, kiedy użytkownik wykonuje określone działania, takie jak interakcja z tym menu nawigacyjnym systemu. Zaznaczenie opcji AimFlags, SystemGesture i DominantHand pozwala dowiedzieć się, kiedy to działanie systemowe jest wykonywane. Więcej informacji o AimFlags znajdziesz w dokumentacji Unity dotyczącej Enum MetaAimFlags.
XR Interaction Toolkit
Pakiet XR Interaction Toolkit to wysokopoziomowy, oparty na komponentach system interakcji do tworzenia treści VR i AR. Zapewnia platformę, która udostępnia interakcje 3D i interfejsu ze zdarzeń wejściowych Unity. Obsługuje zadania interakcji, w tym reakcje haptyczne, reakcje wizualne i przemieszczanie się.
OpenXR™ i logo OpenXR są znakami towarowymi należącymi do firmy The Khronos Group Inc. i są zarejestrowane jako znaki towarowe w Chinach, Japonii, Unii Europejskiej i Wielkiej Brytanii.