Mit Unity für Android XR entwickeln

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:

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.

Beispiel für den Bildschirm zum Verwalten von Unity XR-Plug-ins

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

AR-Sitzung

Android XR: AR-Sitzung

  • Zu den Funktionseinstellungen gehört „Optimieren von Pufferentsorgungen“ (Vulkan).

Android XR (Erweiterungen): Sitzungsverwaltung

  • Zu den Funktionseinstellungen gehören Subsampling (Vulkan) und URP SpaceWarp (Vulkan).

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.

Geräte-Tracking

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.

deine Kamera zugegriffen haben

Android XR: AR-Kamera

Diese Funktion unterstützt die Lichtschätzung und die Vollbildweiterleitung.

Ebenenerfassung

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.

Objekt-Tracking

Android XR (Erweiterungen): Objekt-Tracking

Diese Funktion unterstützt die Erkennung und Verfolgung von Objekten in der physischen Umgebung in Kombination mit einer Referenzobjektbibliothek.

Gesichtserkennung

Android XR: AR-Gesicht

  • Nur XR_ANDROID_avatar_eyes
  • Kein Gesichts-Tracking

Android XR: Gesichtserkennung

  • XR_ANDROID_face_tracking

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.

Strahlensätze

Android XR: AR-Raycast

  • Wandhalterung
  • Tiefenanker

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.

Anker

Android XR: AR-Anker

Android XR (Erweiterungen): Anker

  • Zu den Funktionseinstellungen gehört die Persistenz.

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.

Okklusion

Android XR: AR-Okklusion

  • Umgebungstiefe

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.

Kompositionebenen

Unterstützung der Kompositionslagen (OpenXR-Plug-in und XR-Kompositionslagen sind erforderlich)

Android XR: Passthrough-Kompositionsebene

  • XR_ANDROID_composition_layer_passthrough_mesh

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

Foveated Rendering (OpenXR-Plug-in erforderlich)

  • Unterstützt foveales Rendering mit Augen-Tracking: Der Bereich mit höherer Auflösung ist dort zentriert, wo sich der Nutzer gerade befindet, wodurch er für den Nutzer weniger auffällt.

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.

Unbegrenzter Referenzbereich

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.

Mischmodus für die Umgebung

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:

  1. Öffnen Sie das Fenster Projekteinstellungen (Menü: Bearbeiten > Projekteinstellungen).
  2. Klicken Sie auf XR-Plug-in-Verwaltung, um den Bereich für Plug-ins bei Bedarf zu maximieren.
  3. Wählen Sie in der Liste der XR-Plug-ins OpenXR aus.
  4. Klicken Sie im Bereich Interaktionsprofile auf die Schaltfläche +, um ein Profil hinzuzufügen.
  5. 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 Gerätelayout im Unity-Eingabesystem freigeben, indem Sie das Profil für die Interaktion per Handzeichen aktivieren. Verwenden Sie dieses Interaktionsprofil für die Eingabe per Handzeichen, die von den vier von OpenXR definierten Aktionsposen unterstützt wird: „Zum-Sich-Hinziehen“, „Zum-Sich-Spreizen“, „Zum-Sich-Zeigen“ und „Greifen“. Wenn Sie zusätzliche Funktionen für die Interaktion oder das Tracking von Händen benötigen, lesen Sie den Hilfeartikel XR Hands auf dieser Seite.

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.

Beispiel für die Aktivierung der Handerkennung

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.