Mit Unity für Android XR entwickeln

XR‑Geräte, für die der Leitfaden gilt
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für die folgenden Arten von XR-Geräten zu entwickeln.
XR-Headsets
Kabelgebundene XR-Datenbrille

In diesem Leitfaden finden Sie eine Übersicht ü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 über:

  • 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ät
  • Eingabe und Interaktion

Unity-Unterstützung für Android XR

Wenn Sie Unity-Apps für Android XR entwickeln, können Sie die Mixed-Reality-Tools und ‑Funktionen 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, um Ihnen den Einstieg zu erleichtern. 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 Leitfaden zur Projekteinrichtung.

Unity XR – Grundlagen

Wenn Sie noch keine Erfahrung mit Unity oder der XR-Entwicklung haben, können Sie sich im XR-Handbuch von Unity mit den grundlegenden XR-Konzepten und ‑Workflows vertraut machen. Das XR-Handbuch enthält Informationen zu:

Apps für Android entwickeln und veröffentlichen

Unity bietet eine ausführliche Dokumentation zur Entwicklung, Erstellung und Veröffentlichung für Android, einschließlich Themen wie Android-Berechtigungen in Unity, Android-Build-Einstellungen, App für Android erstellen und Bereitstellung bei Google Play.

Unity-Pakete für Android XR

Es gibt zwei Pakete, die Unterstützung für das Erstellen von Unity-Apps für Android XR bieten. Beide Pakete sind XR-Anbieter-Plug-ins, die über das Paket „XR Plug-in Management“ von Unity aktiviert werden können. Der XR-Plug-in-Manager fügt Projekteinstellungen hinzu, mit denen Sie das Laden, die Initialisierung, die Einstellungen und die Build-Unterstützung für XR-Plug-ins verwalten und Hilfe dazu erhalten können. Damit Ihre App OpenXR-Funktionen zur Laufzeit ausführen kann, müssen diese Funktionen im Projekt über den Plug-in-Manager aktiviert sein.

Dieses Bild zeigt ein Beispiel dafür, wo Sie diese Featuregruppen im Unity-Editor aktivieren können.

Abbildung 1. Beispiel für den Bildschirm „Unity XR Plug-in Management“

Unity OpenXR Android XR

Das Unity OpenXR Android XR-Paket ist ein XR-Plug-in, mit dem Unity um Android XR-Unterstützung erweitert wird. 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 ist für Entwickler gedacht, die AR- oder Mixed-Reality-Erlebnisse erstellen möchten. Sie stellt die Schnittstelle für AR-Funktionen bereit, implementiert aber selbst keine Funktionen. Das Unity OpenXR Android XR-Paket stellt die Implementierung bereit. Sehen Sie sich das Handbuch zum Paket an, um mit diesem Paket zu beginnen. Es enthält einen Startleitfaden.

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 erstellen können. Es kann allein oder zusammen mit dem Unity OpenXR Android XR-Paket verwendet werden.

Folgen Sie unserem Leitfaden 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 Funktionen beschrieben, die vom Unity OpenXR: Android XR-Paket und dem Android XR Extensions for Unity-Paket unterstützt werden. Sie können damit feststellen, welches Paket die von Ihnen benötigten Funktionen enthält, und Kompatibilitätsaspekte berücksichtigen.

Funktion

Unity OpenXR: Android XR-Feature-String

Feature-String für Android XR-Erweiterungen für Unity

Anwendungsfälle und erwartetes Verhalten

AR-Sitzung

Android XR: AR-Sitzung

  • Zu den Einstellungen gehören „Pufferverwerfungen optimieren (Vulkan)“

Android XR (Erweiterungen): Sitzungsverwaltung

  • Zu den Einstellungen gehören „Subsampling (Vulkan)“ und „URP SpaceWarp (Vulkan)“.

Wenn Sie Funktionen aus einem der beiden Pakete verwenden möchten, müssen Sie die Funktion „AR-Sitzung“ für dieses Paket aktivieren. Sie können beide Feature-Sets gleichzeitig aktivieren. Konflikte zwischen einzelnen Features werden entsprechend behandelt.

Geräte-Tracking

–

–

Mit dem Gerätetracking werden die Position und die Drehung des Geräts im physischen Raum verfolgt. Das XR Origin-GameObject übernimmt automatisch das Gerätetracking und die Umwandlung von Trackables in das Koordinatensystem von Unity. Dazu verwendet es die XROrigin-Komponente und die GameObject-Hierarchie mit einer Kamera und einem TrackedPoseDriver.

Kamera

Android XR: AR-Kamera

–

Diese Funktion bietet Unterstützung für die Lichtschätzung und den Vollbild-Passthrough.

Ebenenerkennung

Android XR: AR-Ebene

–

Diese Funktion unterstützt die Erkennung und Verfolgung flacher Oberflächen in der physischen Umgebung.

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.

Mimik-Erkennung

Android XR: AR Face

  • Nur XR_ANDROID_eye_tracking
  • Keine Mimik-Erkennung

Android XR: Mimik-Erkennung

  • XR_ANDROID_face_tracking

Die Unterstützung für Avatar-Augen wird über die Android XR-Funktion „AR Face“ bereitgestellt. Über die Android XR-Funktion „Mimik-Erkennung“ auf die Mimik eines Nutzers zugreifen. Diese beiden Funktionen können zusammen verwendet werden.

Ray casts

Android XR: AR-Raycast

  • Ebenenanker
  • Tiefenanker

–

Mit dieser Funktion können Sie einen Strahl aussenden und den Schnittpunkt zwischen diesem Strahl und den in der physischen Umgebung erkannten Ebenen- oder Tiefen-Trackables berechnen.

Anker

Android XR: AR-Anker

–

AR Anchor unterstützt räumliche, ebene und dauerhafte Anker über AR Foundation.

Verdeckung

Android XR: AR-Verdeckung

  • Umgebungstiefe

–

Durch Verdeckung können Mixed-Reality-Inhalte in Ihrer App hinter Objekten in der physischen Umgebung verborgen oder teilweise verdeckt werden.

Leistungsmesswerte

Leistungsmesswerte für Android XR

–

Mit dieser Funktion können Sie auf Leistungsmesswerte für Android XR-Geräte zugreifen.

Kompositionsebenen

Unterstützung für Kompositionsebenen (OpenXR-Plug-in und XR-Kompositionsebene erforderlich)

Android XR: Passthrough-Kompositionsebene

  • XR_ANDROID_composition_layer_passthrough_mesh

Verwenden Sie die Unterstützung für Kompositionsebenen von Unity, um einfache Kompositionsebenen (z.B. Quad, Zylinder, Projektion) zu erstellen. 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

Foveated Rendering (OpenXR-Plug-in erforderlich)

  • Unterstützt Eye-Tracking-basiertes Foveated Rendering: Der Bereich mit höherer Auflösung wird dort zentriert, wo der Nutzer hinsieht, sodass er für den Nutzer weniger auffällig ist.

Foveation (alt)

Foveated Rendering ermöglicht ein schnelleres Rendering, 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 Foveated Rendering-Funktion von Unity zu verwenden. Beachten Sie, dass sowohl URP als auch Vulkan für die Entwicklung für Android XR empfohlen werden.

Unbegrenzter Referenzraum

–

Android XR: Unbounded Reference Space

Mit dieser Funktion wird der Tracking-Ursprungsmodus von XRInputSubsystem auf Unbounded festgelegt. „Unbounded“ gibt an, dass das XRInputSubsystem alle InputDevices in Bezug auf einen Weltanker verfolgt, der sich ändern kann.

Mischmodus für die Umgebung

–

Umgebungs-Mischmodus

Mit dieser Funktion können Sie den XR-Umgebungs-Mischmodus festlegen. Dieser steuert, wie virtuelle Bilder mit der realen Umgebung verschmelzen, wenn Passthrough aktiviert ist.

Geospatial (VPS)

–

Android XR: Geospatial

Ermöglicht XRGeospatialManager den Zugriff auf VPS-Funktionen (Visual Positioning System), die Überprüfung der Standortverfügbarkeit, die Berechnung von Geopositionen und die Konfiguration des Plane Trackings für Oberflächen- und Geoverankerungen.

Google Cloud Auth

–

Android XR: Google Cloud

Bietet Strategien zur Konfiguration der Sitzungsauthentifizierung (API-Schlüssel, schlüssellos und Authentifizierungstoken) für cloudbasierte Dienste.

Multimodales Gesicht

–

Android XR (Erweiterungen): Multimodales Gesicht

Erweitert Unity ARFace um konfigurierbare, multimodale Mimik-Erkennungsmodi (XRFaceTrackerMode).

Akkustatusanzeige

–

Akkustatusanzeige

Ermöglicht das Abfragen des Akkustatus und des Ladezustands verbundener Controller und Eingabepfade zur Laufzeit mit XRBatteryStateDisplayFeature.

Globales Durchschleifen mit Dimmen

Android XR: AR-Kamera

–

Ermöglicht das Abfragen und Festlegen von realen Passthrough-Dimmstufen mit ARCameraFeature von Unity.

System Properties Enumeration

–

Android XR: Systemeigenschaften

Listet Laufzeiterweiterungseigenschaften und Gerätefunktionen mit XR_ANDROID_enumerate_system_extension_properties auf.

Empfohlene Einstellungen

–

Android XR: Empfohlene Einstellungen

Ermöglicht das Abfragen von Prelaunch-Zuständen der Laufzeitumgebung (einschließlich des Mischmodus der Umgebung, der Passthrough-Deckkraft und der aktiven Eingabemodalitäten) mit XRRecommendedSettingsFeature.TryGetRecommendedSettings.

Begrenzungsrahmenerkennung

Android XR: AR-Begrenzungsrahmen

Räumliche Entitäten (Erweiterungen): Begrenzungsrahmen

Bietet Unterstützung für die Begrenzungsrahmenerkennung für 3D-Objekte in der physischen Umgebung mithilfe des OpenXR Spatial Entities-Frameworks (SpatialBoundingBoxSubsystem).

Teilbare Anker

–

Räumliche Entitäten (Erweiterungen): Teilbare Anker

Erweitert die Ankerfunktionen mit ARShareableAnchorManager und XRShareableAnchorSubsystem, einschließlich des Anfügens von raumbezogenen Ankern (TryAttachGeospatialAnchor) und Oberflächenankern (TryAttachSurfaceAnchorAsync) bei Verwendung mit Android XR: Geospatial.

Spatial Container

–

Spatial Container

Ermöglicht das Rendern von Anwendungsinhalten in einem vom System verwalteten volumetrischen 3D-Container im Modus „Full Space“ mit APIs und Callback-Ereignissen auf XRSpatialContainerFeature, um den Status, die Grenzen und die Sichtbarkeit des Containers abzufragen und anzufordern.

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 den Händen unterstützen müssen und nicht davon ausgegangen werden kann, dass alle Geräte mit Controllern geliefert werden.

Interaktionsprofile

Unity verwendet ein Interaktionsprofil, 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 einheitliche Funktionalität auf einer Reihe von Plattformen. Durch das Aktivieren von Interaktionsprofilen können Sie dafür sorgen, dass Ihre XR-Anwendung auf verschiedenen Geräten korrekt funktioniert, die Eingabezuordnung konsistent bleibt und auf bestimmte XR-Funktionen zugegriffen werden kann. So legen Sie ein Interaktionsprofil fest:

  1. Öffnen Sie das Fenster Projekteinstellungen (Menü: Bearbeiten > Projekteinstellungen).
  2. Klicken Sie auf XR Plug-in Management, um den Plug-in-Bereich zu maximieren (falls erforderlich).
  3. Wählen Sie in der Liste der XR-Plug-ins OpenXR aus.
  4. Wählen Sie im Abschnitt Interaction Profiles (Interaktionsprofile) den Button + aus, um ein Profil hinzuzufügen.
  5. Wählen Sie das Profil aus, das Sie hinzufügen möchten.

Interaktion mit den Händen

Die Handinteraktion (XR_EXT_hand_interaction) wird vom OpenXR-Plug-in bereitgestellt. Du kannst das <HandInteraction>-Gerätelayout im Unity-Eingabesystem verfügbar machen, indem du das Handinteraktionsprofil aktivierst. Verwenden Sie dieses Interaktionsprofil für die Handeingabe, die von den vier von OpenXR definierten Aktionsposen unterstützt wird: „Zusammenführen“, „Anstoßen“, „Zielen“ und „Greifen“. Wenn Sie zusätzliche Funktionen für die Handinteraktion oder das Handtracking benötigen, lesen Sie den Abschnitt XR Hands auf dieser Seite.

Blickinteraktion

Die Blickinteraktion (XR_EXT_eye_gaze_interaction) wird vom OpenXR-Plug-in bereitgestellt. Mit diesem Layout können Sie die von der Erweiterung zurückgegebenen Daten zur Augenposition (Position und Drehung) abrufen. Weitere Informationen zur Blickinteraktion finden Sie im OpenXR-Leitfaden zur Eingabe.

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-Mausinteraktionsprofil (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 der Handflächengeste

Das OpenXR-Plug-in unterstützt die Palm Pose Interaction (XR_EXT_palm_pose), die das <PalmPose>-Layout im Unity Input System verfügbar macht. Die Handflächenpose ist nicht als Alternative zu Erweiterungen oder Paketen gedacht, die Handtracking für komplexere Anwendungsfälle ausführen. Stattdessen kann sie verwendet werden, um App-spezifische visuelle Inhalte wie Avatar-Visuals zu platzieren. Die Handflächenhaltung besteht sowohl aus der Position als auch der 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 Handtracking-Daten zugreifen. Außerdem bietet es einen Wrapper, mit dem Handgelenkdaten aus dem Handtracking in Eingabeposen umgewandelt werden können. Wenn Sie die Funktionen des XR Hands-Pakets verwenden möchten, aktivieren Sie die Funktionen Handtracking Subsystem und Meta Handtracking Aim OpenXR.

Beispiel für die Aktivierung von Handtracking Das XR-Hands-Paket kann nützlich sein, wenn Sie detailliertere Daten zu Handpositionen oder Handgelenken benötigen oder mit benutzerdefinierten Gesten arbeiten müssen.

Weitere Informationen finden Sie in der Unity-Dokumentation zum Einrichten von XR Hands in Ihrem Projekt.

Konfidenzbereiche für die Mimikerkennung

Die Erweiterung XR_ANDROID_face_tracking liefert Konfidenzwerte für drei Gesichtsbereiche: oben links, oben rechts und unten. Diese Werte reichen von 0 (keine Konfidenz) bis 1 (höchste Konfidenz) und geben die Genauigkeit der Mimik-Erkennung für die einzelnen Bereiche an.

Sie können diese Konfidenzwerte verwenden, um Blendshapes schrittweise zu deaktivieren oder visuelle Filter (z. B. Weichzeichnen) auf den entsprechenden Gesichtsbereich anzuwenden. Deaktivieren Sie für eine einfache Deaktivierung die Blendshapes im entsprechenden Gesichtsbereich.

Der Bereich „unteres Gesicht“ umfasst alles unter den Augen, einschließlich Mund, Kinn, Wange und Nase. Die beiden oberen Bereiche umfassen die Augen und die Augenbrauen auf der linken und rechten Seite des Gesichts.

Im folgenden C#-Code-Snippet wird gezeigt, wie Sie in einem Unity-Script auf die Konfidenzdaten zugreifen und diese verwenden:

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;
        }
    }
}

Weitere Informationen finden Sie in der Dokumentation zu Android XR-Erweiterungen für Unity.

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“ 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 ist dazu gedacht, ein personalisiertes Mesh bereitzustellen, das die tatsächliche Geometrie der Hände des Nutzers zur Visualisierung darstellt.

XR Hands-Prefab

Das XR Hands-Paket enthält ein Beispiel namens Hands Visualizer, das vollständig geriggte linke und rechte Hände enthält, um eine kontextgerechte Darstellung der Hände des Nutzers zu rendern.

System-Gesten

Android XR bietet eine System-Geste, mit der Nutzer ein Menü öffnen können, um zurückzugehen, den Launcher zu öffnen oder eine Übersicht der laufenden Apps aufzurufen. Nutzer können dieses Systemmenü mit einem Pinch-Geste der dominanten Hand aktivieren.

Wenn der Nutzer mit dem Systemnavigationsmenü interagiert, reagiert die Anwendung nur auf Ereignisse zur Erfassung von Kopfbewegungen. 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, erfahren Sie, 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 übergeordnetes, komponenten-basiertes 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.


OpenXR™ und das OpenXR-Logo sind Marken von The Khronos Group Inc. und in China, der Europäischen Union, Japan und dem Vereinigten Königreich als Marken eingetragen.