Dieser Leitfaden bietet einen Überblick über die Entwicklung mit Unity für Android XR. Android XR funktioniert mit den vertrauten Tools und Funktionen, die Sie von Unity gewohnt sind. Da die Android XR-Unterstützung von Unity auf OpenXR basiert, werden viele der in der OpenXR-Übersicht beschriebenen Funktionen auch in Unity unterstützt.
In diesem Leitfaden erfahren Sie mehr zu folgenden Themen:
- Unity-Unterstützung für Android XR
- Unity XR – Grundlagen
- Apps für Android XR entwickeln und veröffentlichen
- Unity-Pakete für Android XR
- Unity OpenXR: Android XR-Paket
- Android XR-Erweiterungen für Unity
- Funktionen und Kompatibilitätsüberlegungen
- Eingabe und Interaktion
Unity-Unterstützung für Android XR
Wenn Sie Unity-Apps für Android XR entwickeln, können Sie die Tools und Funktionen für Mixed Reality in den neuesten Versionen von Unity 6 nutzen. Dazu gehören Mixed Reality-Vorlagen, die das XR Interaction Toolkit, AR Foundation und das OpenXR-Plug-in verwenden, damit Sie schnell loslegen können. Wenn Sie Apps mit Unity für Android XR entwickeln, empfehlen wir die Universal Render Pipeline (URP) als Render-Pipeline und Vulkan als Grafik-API. Mit diesen Funktionen können Sie einige der Grafikfunktionen von Unity nutzen, die nur mit Vulkan unterstützt werden. Weitere Informationen zum Konfigurieren dieser Einstellungen finden Sie im Einrichtungsleitfaden für Projekte.
Unity XR Basics
Wenn Sie neu in der Unity- oder XR-Entwicklung sind, können Sie sich im XR-Handbuch von Unity über grundlegende XR-Konzepte und ‑Arbeitsabläufe informieren. Das XR-Handbuch enthält Informationen zu:
- XR-Anbieter-Plug-ins, einschließlich Unity OpenXR: Android XR und der Android XR-Erweiterungen für Unity
- XR-Supportpakete, um zusätzliche Funktionen auf Anwendungsebene hinzuzufügen
- Eine Anleitung zur XR-Architektur, in der der Unity XR-Tech-Stack und die XR-Subsysteme beschrieben werden
- XR-Projekt einrichten
- XR-Apps erstellen und ausführen
- XR-Grafikrichtlinien, einschließlich Universal Render Pipeline, Stereorendering, Foveated Rendering, Multiview-Renderbereiche und VR-Frame-Timing
- XR-Audioanleitung, einschließlich Unterstützung für Audio-Spatializer
Apps für Android entwickeln und veröffentlichen
Unity bietet ausführliche Dokumentation zur Entwicklung, Erstellung und Veröffentlichung für Android. Themen sind unter anderem Android-Berechtigungen in Unity, Android-Build-Einstellungen, Erstellen Ihrer App für Android und Bereitstellung bei Google Play.
Unity-Pakete für Android XR
Es gibt zwei Pakete, die die Entwicklung von Unity-Apps für Android XR unterstützen. Beide Pakete sind XR-Anbieter-Plug-ins, die über das XR Plug-in Management-Paket von Unity aktiviert werden können. Der XR-Plug-in-Manager fügt Projekteinstellungen zum Verwalten und Anbieten von Hilfe beim Laden, Initialisieren, Einrichten und Erstellen von XR-Plug-ins hinzu. Damit Ihre App OpenXR-Funktionen zur Laufzeit ausführen kann, müssen diese Funktionen über den Plug-in-Manager für das Projekt aktiviert sein.
Auf diesem Bild sehen Sie ein Beispiel dafür, wo Sie diese Funktionsgruppen über den Unity-Editor aktivieren können.
Unity OpenXR Android XR
Das Unity OpenXR Android XR-Paket ist ein XR-Plug-in, mit dem Sie Android XR-Unterstützung in Unity hinzufügen können. Dieses XR-Plug-in bietet den Großteil der Android XR-Unterstützung für Unity und ermöglicht die Unterstützung von Android XR-Geräten für AR Foundation-Projekte. AR Foundation wurde für Entwickler entwickelt, die AR- oder Mixed Reality-Anwendungen erstellen möchten. Sie bietet die Schnittstelle für AR-Funktionen, implementiert aber selbst keine Funktionen. Das Unity OpenXR Android XR-Paket enthält die Implementierung. Eine Anleitung für die ersten Schritte mit diesem Paket finden Sie im Paket-Handbuch.
Android XR-Erweiterungen für Unity
Die Android XR-Erweiterungen für Unity ergänzen das Unity OpenXR Android XR-Paket und enthalten zusätzliche Funktionen, mit denen Sie immersive Erlebnisse entwickeln können. Es kann allein oder zusammen mit dem Unity OpenXR Android XR-Paket verwendet werden.
Folgen Sie unserer Anleitung zur Projekteinrichtung oder der Kurzanleitung zum Importieren von Android XR Extensions für Unity, um mit diesem Paket zu beginnen.
Funktionen und Kompatibilitätsüberlegungen
In der folgenden Tabelle werden die Funktionen beschrieben, die vom Unity OpenXR-Paket für Android XR und vom Unity-Paket für Android XR-Erweiterungen unterstützt werden. Sie können damit ermitteln, welches Paket die benötigten Funktionen enthält und welche Kompatibilitätsaspekte zu berücksichtigen sind.
Funktion |
Unity OpenXR: Android XR-Funktionsstring |
Funktionsstring für Android XR-Erweiterungen für Unity |
Anwendungsfälle und erwartetes Verhalten |
---|---|---|---|
Android XR: AR-Sitzung
|
Android XR (Erweiterungen): Sitzungsverwaltung
|
Wenn Sie Funktionen aus einem der beiden Pakete verwenden möchten, müssen Sie die AR-Sitzungsfunktion für dieses Paket aktivieren. Sie können beide Funktionsgruppen gleichzeitig aktivieren. Konflikte werden von den einzelnen Funktionen entsprechend behandelt. |
|
– |
– |
Mit der Geräteverfolgung wird die Position und Drehung des Geräts im physischen Raum erfasst. Das GameObject „XR Origin“ verarbeitet automatisch die Geräteverfolgung und die Umwandlung von Trackables in das Koordinatensystem von Unity. Dazu werden die Komponente XROrigin und die GameObject-Hierarchie mit einer Kamera und einem TrackedPoseDriver verwendet. |
|
Android XR: AR-Kamera |
– |
Diese Funktion bietet Unterstützung für die Schätzung der Lichtverhältnisse und die Vollbild-Passthrough-Funktion. |
|
Android XR: AR-Ebene |
Android XR (Erweiterungen): Ebene |
Diese beiden Funktionen sind identisch. Verwenden Sie entweder die eine oder die andere. Android XR (Extensions): „Plane“ ist enthalten, damit Entwickler die Funktionen „Android XR (Extensions): Object Tracking“ und „Persistent Anchors“ verwenden können, ohne eine Abhängigkeit vom Unity OpenXR Android XR-Paket zu haben. In Zukunft wird „Android XR (Extensions): Plane“ zugunsten von „Android XR: AR Anchor“ entfernt. |
|
– |
Android XR (Erweiterungen): Objekt-Tracking |
Diese Funktion unterstützt die Erkennung und das Tracking von Objekten in der physischen Umgebung in Kombination mit einer Referenzobjektbibliothek. |
|
Android XR: AR-Gesicht
|
Android XR: Gesichtsverfolgung
|
Die Unterstützung von Avatar-Augen erfolgt über die Android XR-Funktion „AR Face“. Über die Funktion „Android XR: Gesichtserkennung“ auf die Mimik eines Nutzers zugreifen. Diese beiden Funktionen können zusammen verwendet werden. |
|
Android XR: AR-Raycast
|
– |
Mit dieser Funktion können Sie einen Strahl senden und den Schnittpunkt zwischen diesem Strahl und Ebenen- oder Tiefen-Trackables berechnen, die in der physischen Umgebung erkannt werden. |
|
Android XR: AR-Anker |
Android XR (Erweiterungen): Anchor
|
Beide Funktionen unterstützen räumliche Anker und Ebenenanker. Verwenden Sie entweder die eine oder die andere Funktion. Verwenden Sie für persistente Anker Android XR (Extensions): Anchor. In Zukunft wird „Android XR (Extensions): Anchor“ entfernt und alle Anchor-Funktionen werden in „Android XR: AR Anchor“ verfügbar sein. |
|
Android XR: AR-Verdeckung
|
– |
Durch die Verdeckung können Mixed Reality-Inhalte in Ihrer App verborgen oder teilweise hinter Objekten in der physischen Umgebung verdeckt dargestellt werden. |
|
Leistungsmesswerte |
Leistungsmesswerte für Android XR |
– |
Mit dieser Funktion können Sie auf Leistungsmesswerte für Android XR-Geräte zugreifen. |
Unterstützung von Composition Layer (OpenXR-Plug-in und XR Composition Layer sind erforderlich) |
Android XR: Passthrough-Kompositionsebene
|
Verwenden Sie die Unterstützung für Kompositionsebenen von Unity, um einfache Kompositionsebenen zu erstellen (z.B. Quad, Zylinder, Projektion). Android XR: Mit der Passthrough-Kompositionsebene kann eine Passthrough-Ebene mit einem benutzerdefinierten Mesh erstellt werden, das aus dem GameObject von Unity gelesen wird. |
|
Foveated Rendering (OpenXR-Plug-in ist erforderlich)
|
Foveation (Legacy) |
Durch Foveated Rendering kann das Rendern beschleunigt werden, indem die Auflösung von Bereichen im peripheren Sichtfeld des Nutzers verringert wird. Die Foveated Rendering-Funktion von Unity wird nur für Apps unterstützt, die URP und Vulkan verwenden. Die Funktion „Foveation (Legacy)“ in den Android XR-Erweiterungen für Unity unterstützt auch die integrierte Render-Pipeline und OpenGL ES. Wir empfehlen, nach Möglichkeit die Funktion für Foveated Rendering von Unity zu verwenden. Außerdem empfehlen wir, sowohl URP als auch Vulkan zu verwenden, wenn Sie für Android XR entwickeln. |
|
– |
Android XR: Unbounded Reference Space |
Mit dieser Funktion wird der Tracking-Ursprungsmodus des XRInputSubsystem auf Unbounded festgelegt. „Unbounded“ gibt an, dass das XRInputSubsystem alle InputDevices in Bezug auf einen Weltanker verfolgt, der sich ändern kann. |
|
– |
Umgebungsmischmodus |
Mit dieser Funktion können Sie den XR Environment Blend Mode (XR-Umgebungsüberblendungsmodus) festlegen. Damit wird gesteuert, wie virtuelle Bilder mit der realen Umgebung überblendet werden, wenn Passthrough aktiviert ist. |
Eingabe und Interaktion
Android XR unterstützt multimodale natürliche Eingaben.
Neben Hand- und Eye-Tracking werden auch Peripheriegeräte wie 6DoF-Controller, Maus und physische Tastatur unterstützt. Das bedeutet, dass Apps für Android XR die Interaktion mit Händen unterstützen müssen und nicht davon ausgegangen werden kann, dass alle Geräte mit Controllern geliefert werden.
Interaktionsprofile
Unity verwendet Interaktionsprofile, um zu verwalten, wie Ihre XR-Anwendung mit verschiedenen XR-Geräten und ‑Plattformen kommuniziert. Diese Profile legen die erwarteten Ein- und Ausgaben für verschiedene Hardwarekonfigurationen fest und fördern so die Kompatibilität und konsistente Funktionalität auf einer Reihe von Plattformen. Wenn Sie Interaktionsprofile aktivieren, können Sie dafür sorgen, dass Ihre XR-Anwendung auf verschiedenen Geräten korrekt funktioniert, eine konsistente Eingabezuordnung beibehält und Zugriff auf bestimmte XR-Funktionen hat. So legen Sie ein Interaktionsprofil fest:
- Öffnen Sie das Fenster Projekteinstellungen (Menü: Bearbeiten > Projekteinstellungen).
- Klicken Sie auf XR-Plug-in-Verwaltung, um den Plug-in-Bereich zu maximieren (falls erforderlich).
- Wählen Sie in der Liste der XR-Plug-ins OpenXR aus.
- Wählen Sie im Bereich Interaktionsprofile die Schaltfläche + aus, um ein Profil hinzuzufügen.
- Wählen Sie das Profil aus der Liste aus, das Sie hinzufügen möchten.
Handinteraktion
Die Handinteraktion (XR_EXT_hand_interaction
) wird vom OpenXR-Plug-in bereitgestellt. Sie können das <HandInteraction>
-Gerätelayout im Unity-Eingabesystem verfügbar machen, indem Sie das Hand Interaction Profile aktivieren. Verwenden Sie dieses Interaktionsprofil für die Eingabe per Hand, die von den vier von OpenXR definierten Aktionsposen unterstützt wird: „Pinch“, „Poke“, „Aim“ und „Grip“. Wenn Sie zusätzliche Funktionen für die Handinteraktion oder das Hand-Tracking benötigen, lesen Sie den Abschnitt XR Hands auf dieser Seite.
Blicksteuerung
Die Blickrichtungserkennung (XR_EXT_eye_gaze_interaction
) wird vom OpenXR-Plug-in bereitgestellt. Mit diesem Layout können Sie die Daten zur Blickrichtung (Position und Drehung) abrufen, die von der Erweiterung zurückgegeben werden. Weitere Informationen zur Blickrichtung als Eingabe finden Sie im OpenXR-Eingabeleitfaden.
Controller-Interaktion
Android XR unterstützt das Oculus Touch Controller Profile für 6DoF-Controller. Beide Profile werden vom OpenXR-Plug-in bereitgestellt.
Mausinteraktion
Das Android XR Mouse Interaction Profile (XR_ANDROID_mouse_interaction
) wird von den Android XR-Erweiterungen für Unity bereitgestellt. Es stellt ein <AndroidXRMouse>
-Gerätelayout im Unity Input System bereit.
Interaktion mit Handhaltung
Das OpenXR-Plug-in bietet Unterstützung für die Palm Pose Interaction (XR_EXT_palm_pose
), die das <PalmPose>
-Layout im Unity Input System verfügbar macht.
Die Handhaltung ist nicht als Alternative zu Erweiterungen oder Paketen gedacht, die Hand-Tracking für komplexere Anwendungsfälle ausführen. Stattdessen kann sie verwendet werden, um app-spezifische visuelle Inhalte wie Avatarbilder zu platzieren. Die Handflächen-Pose besteht aus der Position und Ausrichtung der Handfläche.
XR‑Hände
Mit dem XR Hands-Paket können Sie über XR_EXT_hand_tracking
und XR_FB_hand_tracking_aim
auf Daten zur Erfassung von Handbewegungen zugreifen. Außerdem bietet es einen Wrapper zum Konvertieren von Daten zu Handgelenken aus der Erfassung von Handbewegungen in Eingabeposen. Wenn Sie die Funktionen des XR Hands-Pakets verwenden möchten, aktivieren Sie die Funktionen Hand Tracking Subsystem und Meta Hand Tracking Aim OpenXR.
Das XR Hands-Paket kann nützlich sein, wenn Sie detailliertere Daten zur Handhaltung oder zu Handgelenken benötigen oder wenn Sie mit benutzerdefinierten Gesten arbeiten müssen.
Weitere Informationen finden Sie in der Dokumentation von Unity zum Einrichten von XR Hands in Ihrem Projekt.
Methode zum Rendern von Händen auswählen
Android XR unterstützt zwei Möglichkeiten zum Rendern von Händen: ein Hand-Mesh und einen Prefab-Visualizer.
Hand-Mesh
Das Android XR Unity-Paket enthält eine Funktion für Hand-Meshes, die Zugriff auf XR_ANDROID_hand_mesh extension
bietet. Die Funktion „Hand Mesh“ stellt Meshes für die Hände des Nutzers bereit. Das Hand-Mesh enthält Eckpunkte von Dreiecken, die die Geometrie einer Hand darstellen. Diese Funktion soll verwendet werden, um ein personalisiertes Mesh zu erstellen, das die tatsächliche Geometrie der Hände des Nutzers für die Visualisierung darstellt.
XR Hands-Prefab
Das XR Hands-Paket enthält ein Beispiel namens Hands visualizer (Hand-Visualisierung), das vollständig geriggte linke und rechte Hände für die Darstellung der Hände des Nutzers im jeweiligen Kontext enthält.
System-Gesten
Android XR bietet eine Systemgeste, mit der Nutzer ein Menü öffnen können, um zurückzugehen, den Launcher zu öffnen oder eine Übersicht der laufenden Apps zu erhalten. Der Nutzer kann dieses Systemmenü durch einen Pinch mit der dominanten Hand aktivieren.
Wenn der Nutzer mit dem Systemnavigationsmenü interagiert, reagiert die Anwendung nur auf Head-Tracking-Ereignisse. Das XR Hands-Paket kann erkennen, wenn ein Nutzer bestimmte Aktionen ausführt, z. B. mit diesem Systemnavigationsmenü interagiert. Wenn Sie nach AimFlags
, SystemGesture
und DominantHand
suchen, können Sie herausfinden, wann diese Systemaktion ausgeführt wird. Weitere Informationen zu AimFlags
finden Sie in der Dokumentation zu Enum MetaAimFlags von Unity.
XR Interaction Toolkit
Das XR Interaction Toolkit-Paket ist ein komponentenbasiertes Interaktionssystem auf hoher Ebene zum Erstellen von VR- und AR-Erlebnissen. Es bietet ein Framework, das 3D- und UI-Interaktionen über Unity-Eingabeereignisse ermöglicht. Es unterstützt Interaktionsaufgaben wie haptisches Feedback, visuelles Feedback und Fortbewegung.
OpenXR™ und das OpenXR-Logo sind Marken von The Khronos Group Inc. und sind in China, der Europäischen Union, Japan und dem Vereinigten Königreich als Marke eingetragen.