Table of Contents

Unterstützung für head-mounted displays mit EasyAR

Dieses Dokument erklärt, wie man die head-mounted display (HMD)-Erweiterungsvorlage des EasyAR Sense Unity Plugin verwendet, um ein EasyAR-Erweiterungspaket für ein HMD-Gerät zu entwickeln.

Erste schritte

Bevor die Entwicklung beginnt, ist es wichtig, die Verwendung des EasyAR Sense Unity Plugin zu verstehen.

  • Schnellstart
  • Führen Sie die Beispiele AR Session, ImageTracking_Targets und SpatialMap_Dense_BallGame aus. Ihre Darstellung ist auf Smartphones und HMDs ähnlich.

Die Entwicklung von HMD-Erweiterungen erfordert Grundkenntnisse in folgenden Bereichen:

Darüber hinaus sollten Sie mit der Entwicklung von Unity-Paketen vertraut sein.

Gerät für AR/MR vorbereiten

  • Bewegungsverfolgungs-/VIO-System vorbereiten

    Stellen Sie sicher, dass die Geräteverfolgungsabweichung kontrolliert ist. Einige EasyAR-Funktionen wie Mega können akkumulierte Gerätefehler teilweise reduzieren, aber große lokale Fehler können die Algorithmen von EasyAR instabil machen. Generell streben wir eine VIO-Drifts von weniger als 1‰ an.

  • Anzeigesystem vorbereiten

    Stellen Sie sicher, dass ein virtuelles Objekt, das Größe und Kontur eines realen Objekts hat und dessen relative Position zur virtuellen Kamera der Position des realen Objekts zum Gerät entspricht, genau auf dem realen Objekt angezeigt wird. Bewegungen oder Kopfdrehungen sollten diese Darstellung nicht beeinträchtigen. Ein Referenzergebnis ist das der Vision Pro.

  • Geräte-SDK vorbereiten

    Stellen Sie sicher, dass APIs zur Bereitstellung von externen Eingangsbilddaten verfügbar sind. Diese Daten sollten zu zwei genau definierten Zeitpunkten im System erzeugt werden. Vermeiden Sie Datenfehlausrichtungen.

Die HMD-Erweiterungsvorlage verwenden

Importieren Sie das EasyAR Sense Unity Plugin (Paket com.easyar.sense) über das Package Manager-Fenster von Unity mit der Methode Installieren über lokale Tarball-Datei. Entpacken Sie die HMD-Erweiterungsvorlage (Paket com.easyar.sense.ext.hmdtemplate) in das Packages-Verzeichnis Ihres Unity-Projekts und benennen Sie den Ordner Samples~ in Samples um.

Die Verzeichnisstruktur sollte nun folgendermaßen aussehen:

.
├── Assets
└── Packages
    └── com.easyar.sense.ext.hmdtemplate
        ├── CHANGELOG.md
        ├── Documentation~
        ├── Editor
        ├── LICENSE.md
        ├── package.json
        ├── Runtime
        └── Samples
            └── Combination_BasedOn_HMD
Tipp

Bei Bedarf können Sie EasyAR Sense Unity Plugin und die HMD-Erweiterungsvorlage auf jede von Unity unterstützte Weise importieren.

Wenn Sie die Vorlage nicht verwenden möchten, können Sie auch die Anleitung von Unity zum Erstellen benutzerdefinierter Pakete befolgen, um ein neues Paket zu erstellen.

Wenn das Geräte-SDK nicht als Unity-Paket organisiert ist, entpacken Sie die HMD-Erweiterungsvorlage in den Assets-Ordner von Unity und entfernen Sie anschließend die Datei package.json sowie alle Dateien mit der Endung .asmdef aus den entpackten Dateien. Beachten Sie, dass Benutzer in diesem Fall keine ordnungsgemäße Versionsabhängigkeit zwischen Geräte-SDK und EasyAR erhalten.

Runtime-Eingabeerweiterung fertigstellen

Befolgen Sie die Methode Erstellen einer Eingabeerweiterung für Bilder und Gerätebewegungsdaten, bearbeiten Sie Runtime/HMDTemplateFrameSource.cs und schließen Sie die Eingabeerweiterung für das HMD ab. Dies ist die Hauptentwicklungsaufgabe des Erweiterungspakets.

Editor-menü fertigstellen

Ändern Sie die Zeichenkette "HMD Template" in der MenuItems-Klasse in den Namen des Geräts. Fügen Sie bei Bedarf weitere Skripte für benutzerdefinierte Editorfunktionen hinzu.

Wenn Entwickler im Hierarchy-Fenster AR Session (EasyAR) auswählen und rechtsklicken, erscheinen folgende Menüeinträge:

  • EasyAR Sense > Extensions > Frame Source : [Gerätename]: Fügt der aktuellen Session eine Bilddatenquelle für dieses Gerät hinzu.
  • EasyAR Sense > Extensions > Frame Source : [Gerätename (nur dieses beibehalten)]: Fügt der aktuellen Session eine Bilddatenquelle für dieses Gerät hinzu und entfernt alle anderen.

alt text

Anwendungsbeispiel fertigstellen

Das Beispiel befindet sich unter Samples/Combination_BasedOn_HMD. Der Einfachheit halber enthält die Beispielvorlage keinen Code; alle AR-Funktionen werden durch Szeneninhalte und Konfiguration erreicht.

  1. Fügen Sie gerätespezifische Inhalte zur Szene hinzu.

    Tipp

    Bei Bedarf können Sie auch umgekehrt vorgehen: Verwenden Sie eine Szene, die auf dem Gerät funktioniert, und fügen Sie dann EasyAR-Komponenten und andere Objekte aus den Beispielszenen hinzu.

  2. Passen Sie Objekte an, die unter dem Session-Ursprung platziert werden sollen.

    Wenn ein Session-Ursprung in der Szene definiert ist, verschieben Sie EasyARPanda und UI unter den Ursprungsknoten.

    alt text

    EasyARPanda dient als Referenz für das Bewegungsverfolgungsverhalten des Geräts und hilft bei der Fehleranalyse bei Instabilitäten.

    Entfernen Sie die Hinweise in Klammern aus den Objektnamen:

    • (In Ursprung verschieben, falls vorhanden)
    • (In Ursprung verschieben, falls vorhanden, Constraint Source auf Ihre Render-Kamera setzen)
  3. Konfigurieren Sie das HUD-Button-Verhalten.

    Legen Sie die constraint source von UI auf die virtuelle Kamera fest, um sicherzustellen, dass die HUD-Buttons wie erwartet funktionieren.

    alt text

  4. Raycast-Funktionalität des Canvas konfigurieren.

    Passen Sie den Canvas unter dem UI-Knoten an, um sicherzustellen, dass Raycasts funktionieren und alle UI-Buttons und Schalter korrekt arbeiten.

    Die Vorlage enthält bereits einen Tracked Device Graphic Raycaster des XR Interaction Toolkit unter dem Canvas-Knoten. Nach dem Import des entsprechenden Pakets wird dieser sichtbar.

    alt text

    Wenn Sie XR Interaction Toolkit auf dem Gerät nicht verwenden, erscheint eine Fehlermeldung zu fehlenden Skripten. Entfernen Sie diese und fügen Sie die gerätespezifische Raycaster-Komponente hinzu.

    alt text

Nächste schritte

Verwandte themen