Dieser Leitfaden bietet einen Überblick über die Entwicklung mit Unity für Android XR. Android XR funktioniert mit den Tools und Funktionen, die Sie von Unity gewohnt sind. Da die Android XR-Unterstützung von Unity auf OpenXR basiert, werden viele der Funktionen, die in der OpenXR-Übersicht beschrieben sind, auch in Unity unterstützt.
In diesem Leitfaden erfahren Sie Folgendes:
- Unity-Support für Android XR
- Grundlagen von Unity XR
- 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ät
- Eingabe und Interaktion
Unity-Support für Android XR
Wenn Sie Unity-Apps für Android XR entwickeln, können Sie die Tools und Funktionen für die gemischte Realität in Unity 6 nutzen. Dazu gehören Vorlagen für die gemischte Realität, die das XR Interaction Toolkit, die AR Foundation und das OpenXR-Plug-in verwenden, damit Sie schnell loslegen können. Wenn Sie Apps mit Unity für Android XR erstellen, empfehlen wir die Universal Render Pipeline (URP) als Renderpipeline und Vulkan als Grafik-API. Mit diesen Funktionen können Sie einige der neueren Grafikfunktionen von Unity nutzen, die nur mit Vulkan unterstützt werden. Weitere Informationen zur Konfiguration dieser Einstellungen finden Sie im Leitfaden zur Projekteinrichtung.
Unity XR Basics
Wenn Sie mit Unity oder XR-Entwicklung noch nicht vertraut sind, können Sie das XR-Handbuch von Unity lesen, um grundlegende XR-Konzepte und -Workflows zu verstehen. Das XR-Handbuch enthält Informationen zu:
- XR-Anbieter-Plug-ins, einschließlich Unity OpenXR: Android XR und die Android XR-Erweiterungen für Unity
- XR-Supportpakete, um zusätzliche Funktionen auf Anwendungsebene hinzuzufügen
- Einen Leitfaden zur XR-Architektur, in dem der Unity XR-Technologiestack und die XR-Subsysteme beschrieben werden
- XR-Projekt einrichten
- XR-Apps erstellen und ausführen
- Anleitung zu XR-Grafiken, einschließlich Universal Render Pipeline, Stereo-Rendering, foveales Rendering, Multiview-Rendering-Regionen und VR-Frame-Timing
- XR-Audionavigation, einschließlich Unterstützung für Audio-Spatializer
Apps für Android entwickeln und veröffentlichen
Unity bietet eine ausführliche Dokumentation zum Entwickeln, Erstellen und Veröffentlichen von Apps für Android. Dazu gehören Themen wie Android-Berechtigungen in Unity, Android-Build-Einstellungen, App für Android erstellen und App bei Google Play veröffentlichen.
Unity-Pakete für Android XR
Es gibt zwei Pakete, die das Erstellen von Unity-Apps für Android XR unterstützen. Beide Pakete sind XR-Anbieter-Plug-ins, die über das Paket zum Verwalten von XR-Plug-ins von Unity aktiviert werden können. Der XR-Plug-in-Manager fügt Projekteinstellungen hinzu, mit denen sich XR-Plug-ins verwalten und Unterstützung beim Laden, Initialisieren, Konfigurieren und Erstellen von XR-Plug-ins erhalten lässt. Damit Ihre App OpenXR-Funktionen zur Laufzeit ausführen kann, müssen diese Funktionen im Projekt über den Plug-in-Manager aktiviert sein.
Auf diesem Bild ist zu sehen, wo Sie diese Funktionsgruppen im Unity-Editor aktivieren können.
Unity OpenXR Android XR
Das Unity OpenXR Android XR-Paket ist ein XR-Plug-in, mit dem Unity Android XR-Unterstützung hinzugefügt werden kann. 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 richtet sich an Entwickler, die AR- oder Mixed-Reality-Anwendungen erstellen möchten. Sie bietet die Schnittstelle für AR-Funktionen, implementiert aber keine Funktionen selbst. Die Implementierung erfolgt über das Unity OpenXR Android XR-Paket. Eine Anleitung für den Einstieg in dieses Paket finden Sie im Pakethandbuch.
Android XR-Erweiterungen für Unity
Die Android XR-Erweiterungen für Unity ergänzen das Unity OpenXR-Android XR-Paket und bieten zusätzliche Funktionen, mit denen Sie immersive Erlebnisse schaffen können. Es kann allein oder zusammen mit dem Unity OpenXR Android XR-Paket verwendet werden.
Folgen Sie der Anleitung zur Projekteinrichtung oder der Kurzanleitung zum Importieren von Android XR-Erweiterungen für Unity, um mit diesem Paket zu beginnen.
Funktionen und Kompatibilität
In der folgenden Tabelle werden die vom Unity OpenXR: Android XR-Paket und vom Android XR Extensions for Unity-Paket unterstützten Funktionen beschrieben. Anhand dieser Tabelle können Sie ermitteln, welches Paket die benötigten Funktionen und etwaige Kompatibilitätsanforderungen enthält.
Funktion |
Unity OpenXR: Android XR-Funktionsstring |
String für Android XR-Erweiterungen für Unity-Funktionen |
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 das entsprechende Paket aktivieren. Sie können beide Funktionssätze gleichzeitig aktivieren. Konflikte werden dann für die einzelnen Funktionen entsprechend behandelt. |
|
– |
– |
Beim Geräte-Tracking wird die Position und Drehung des Geräts im physischen Raum erfasst. Das GameObject „XR Origin“ übernimmt automatisch das Geräte-Tracking und wandelt Trackables über die Komponente XROrigin und die GameObject-Hierarchie mit einer Kamera und einem TrackedPoseDriver in das Koordinatensystem von Unity um. |
|
Android XR: AR-Kamera |
– |
Diese Funktion unterstützt die Lichtschätzung und die Vollbildweiterleitung. |
|
Android XR: AR-Ebene |
Android XR (Erweiterungen): Ebene |
Diese beiden Funktionen sind identisch. Sie können eine oder die andere verwenden. Android XR (Erweiterungen): „Plane“ ist enthalten, damit Entwickler die Funktionen „Object Tracking“ und „Persistent Anchors“ von Android XR (Erweiterungen) verwenden können, ohne eine Abhängigkeit vom Unity OpenXR Android XR-Paket zu haben. In Zukunft wird „Android XR (Erweiterungen): Ebene“ zugunsten von „Android XR: AR-Anker“ entfernt. |
|
– |
Android XR (Erweiterungen): Objekt-Tracking |
Diese Funktion unterstützt die Erkennung und Verfolgung von Objekten in der physischen Umgebung in Kombination mit einer Referenzobjektbibliothek. |
|
Android XR: AR-Gesicht
|
Android XR: Gesichtserkennung
|
Die Unterstützung für Avataraugen wird über die Android XR: AR Face-Funktion bereitgestellt. Sie können über die Android XR-Funktion „Gesichtserkennung“ auf die Mimik eines Nutzers zugreifen. Diese beiden Funktionen können bei Bedarf gemeinsam verwendet werden. |
|
Android XR: AR-Raycast
|
– |
Mit dieser Funktion können Sie einen Strahl werfen und die Schnittmenge zwischen diesem Strahl und Ebenen- oder Tiefen-Trackables berechnen, die in der physischen Umgebung erkannt werden. |
|
Android XR: AR-Anker |
Android XR (Erweiterungen): Anker
|
Beide Funktionen unterstützen räumliche und Ebenen-Markierungen. Sie können eine oder beide Funktionen verwenden. Verwenden Sie für persistente Anker Android XR (Erweiterungen): Anchor. In Zukunft wird Android XR (Erweiterungen): Anchor entfernt und alle Anchor-Funktionen werden in Android XR: AR-Anchor zusammengefasst. |
|
Android XR: AR-Okklusion
|
– |
Mithilfe von Okklusion können Mixed-Reality-Inhalte in Ihrer App hinter Objekten in der physischen Umgebung verborgen oder teilweise verdeckt erscheinen. |
|
Leistungsmesswerte |
Leistungsmesswerte für Android XR |
– |
Mit dieser Funktion können Sie auf Leistungsmesswerte für Android XR-Geräte zugreifen. |
Unterstützung der Kompositionslagen (OpenXR-Plug-in und XR-Kompositionslagen sind erforderlich) |
Android XR: Passthrough-Kompositionsebene
|
Mit der Unterstützung von Kompositionslagen in Unity können Sie einfache Kompositionslagen erstellen (z.B. Quad, Zylinder, Projektion). Android XR: Mit der Ebene für die Durchlässigkeitskomposition können Sie eine Ebene für die Durchlässigkeit mit einem benutzerdefinierten Mesh erstellen, das aus dem GameObject von Unity gelesen wird. |
|
Foveated Rendering (OpenXR-Plug-in erforderlich)
|
Foveation (alte Version) |
Beim fovealen Rendering wird das Rendering beschleunigt, indem die Auflösung von Bereichen im peripheren Sichtfeld des Nutzers gesenkt wird. Die Funktion für foveales Rendering 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 BiRP und GLES. Wir empfehlen, nach Möglichkeit die Funktion für das foveale Rendering von Unity zu verwenden. Für die Entwicklung für Android XR werden sowohl URP als auch Vulkan empfohlen. |
|
– |
Android XR: Unbegrenzter Referenzbereich |
Mit dieser Funktion wird der Tracking-Ursprungsmodus von XRInputSubsystem auf Unbounded gesetzt. „Unbounded“ gibt an, dass das XRInputSubsystem alle Eingabegeräte in Bezug auf einen Weltanker erfasst, der sich ändern kann. |
|
– |
Umgebungs-Mischmodus |
Mit dieser Funktion können Sie den XR-Umgebungs-Blendmodus festlegen, mit dem gesteuert wird, wie sich virtuelle Bilder mit der realen Umgebung vermischen, wenn der Passthrough-Modus aktiviert ist. |
Eingabe und Interaktion
Android XR unterstützt multimodale natürliche Eingaben.
Neben Hand- und Augen-Tracking werden auch Peripheriegeräte wie 6DoF-Controller, Maus und physische Tastatur unterstützt. Das bedeutet, dass Apps für Android XR voraussichtlich die Interaktion per Handzeichen unterstützen. Es kann nicht davon ausgegangen werden, dass alle Geräte mit Controllern geliefert werden.
Interaktionsprofile
In Unity wird das Interaktionsprofil verwendet, um die Kommunikation Ihrer XR-Anwendung mit verschiedenen XR-Geräten und ‑Plattformen zu verwalten. Diese Profile legen die erwarteten Eingaben und Ausgaben für verschiedene Hardwarekonfigurationen fest und sorgen so für Kompatibilität und einheitliche Funktionen auf einer Reihe von Plattformen. Wenn Sie Interaktionsprofile aktivieren, können Sie dafür sorgen, dass Ihre XR-Anwendung auf verschiedenen Geräten ordnungsgemäß 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 Bereich für Plug-ins bei Bedarf zu maximieren.
- Wählen Sie in der Liste der XR-Plug-ins OpenXR aus.
- Klicken Sie im Bereich Interaktionsprofile auf die Schaltfläche +, um ein Profil hinzuzufügen.
- Wählen Sie in der Liste das Profil aus, das Sie hinzufügen möchten.
Interaktion per Handzeichen
Die Interaktion per Handzeichen (XR_EXT_hand_interaction
) wird vom OpenXR-Plug-in bereitgestellt. Sie können das
Blickinteraktion
Die Interaktion per Blick (XR_EXT_eye_gaze_interaction
) wird vom OpenXR-Plug-in bereitgestellt. Mit diesem Layout können Sie die Daten zur Augenposition (Position und Drehung) abrufen, die die Erweiterung zurückgibt. Weitere Informationen zur Interaktion per Blickkontakt finden Sie im OpenXR-Eingabeleitfaden.
Controller-Interaktion
Android XR unterstützt das Oculus Touch-Controller-Profil für 6DoF-Controller. Beide Profile werden vom OpenXR-Plug-in bereitgestellt.
Mausinteraktion
Das Android XR-Maus-Interaktionsprofil (XR_ANDROID_mouse_interaction
) wird von den Android XR-Erweiterungen für Unity bereitgestellt. Es stellt ein <AndroidXRMouse>
-Gerätelayout im Unity-Eingabesystem bereit.
Interaktion mit Palm Pose
Das OpenXR-Plug-in unterstützt die Palm Pose-Interaktion (XR_EXT_palm_pose
), die das <PalmPose>
-Layout im Unity-Eingabesystem freigibt. Die Handpose ist keine Alternative zu Erweiterungen oder Paketen, die die Handerkennung für komplexere Anwendungsfälle nutzen. Stattdessen kann sie verwendet werden, um appspezifische visuelle Inhalte wie Avatare zu platzieren. Die Handfläche besteht sowohl aus der Position als auch aus der Ausrichtung der Handfläche.
XR Hands
Mit dem XR Hands-Paket können Sie auf Daten zur Handerkennung (XR_EXT_hand_tracking
und XR_FB_hand_tracking_aim
) zugreifen. Außerdem bietet es einen Wrapper, mit dem sich Gelenkdaten der Hand von der Handerkennung in Eingabeposen umwandeln lassen.
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-Handpaket kann nützlich sein, wenn Sie detailliertere Daten zur Handhaltung oder zu Handgelenken benötigen oder mit benutzerdefinierten Gesten arbeiten müssen.
Weitere Informationen finden Sie in der Unity-Dokumentation zum Einrichten von XR-Händen 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 Hand-Mesh-Funktion, die Zugriff auf die XR_ANDROID_hand_mesh extension
bietet. Die Funktion „Hand Mesh“ bietet Meshes für die Hände der Nutzer. Das Hand-Mesh enthält Dreiecksvektoren, die die Geometrie einer Hand darstellen. Mit dieser Funktion soll ein personalisiertes Mesh erstellt werden, das die reale Geometrie der Hände des Nutzers zur Visualisierung darstellt.
XR-Hände – Prefab
Das XR Hands-Paket enthält ein Beispiel namens Hands Visualizer, das vollständig gerüstete linke und rechte Hände enthält, um eine kontextbezogene Darstellung der Hände des Nutzers zu rendern.
System-Gesten
Android XR bietet eine Systemgeste, mit der Nutzer ein Menü öffnen können, um zurückzugehen, den Launcher zu öffnen oder sich einen Überblick über die derzeit laufenden Apps zu verschaffen. Der Nutzer kann dieses Systemmenü durch Zusammenziehen der Finger der dominanten Hand aktivieren.
Wenn der Nutzer mit dem Navigationsmenü des Systems interagiert, reagiert die Anwendung nur auf Ereignisse der Kopfverfolgung. Das XR Hands-Paket kann erkennen, wenn ein Nutzer bestimmte Aktionen ausführt, z. B. wenn er mit diesem Navigationsmenü interagiert. Wenn Sie nach „AimFlags SystemGesture“ und „DominantHand“ suchen, erfahren Sie, wann diese Systemaktion ausgeführt wird. Weitere Informationen zu AimFlags findest du in der Dokumentation zu MetaAimFlags von Unity.
XR Interaction Toolkit
Das XR Interaction Toolkit ist ein hochrangiges, komponentenbasiertes Interaktionssystem zum Erstellen von VR- und AR-Inhalten. Es bietet ein Framework, mit dem 3D- und UI-Interaktionen über Unity-Eingabeereignisse verfügbar gemacht werden. Es unterstützt Interaktionsaufgaben wie haptisches Feedback, visuelles Feedback und Fortbewegung.