Table of Contents

Erstellen und konfigurieren einer AR-Session

Um AR in Unity zu verwenden, müssen Sie zuerst eine AR-Session in der Szene erstellen und konfigurieren. Dieser Artikel beschreibt mehrere Hauptmethoden zum Erstellen und Konfigurieren einer AR-Session. Nach erfolgreicher Erstellung der Session sehen Sie in der Hierarchy-Ansicht typischerweise folgende Struktur:

alt text

Voraussetzungen

Erstellen einer Session mit Standardkonfiguration

Klicken Sie mit der rechten Maustaste auf einen leeren Bereich in der Hierarchy-Ansicht und wählen Sie EasyAR Sense > [ AR-Funktion ] > AR Session ([ Funktion ] Preset), um eine vorkonfigurierte Session zu erstellen. Die Session enthält voreingestellte frame source- und frame filter-Komponenten für diese Funktion.

In Skripten können Sie ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset, ARSessionFactory.Resources) verwenden.

Zum Beispiel: EasyAR Sense > Image Tracking > AR Session (Image Tracking Preset) erstellt eine Session für Bildverfolgung.

alt text

Skriptcode:

ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.ImageTracking);

Hinweis: Bei ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder und ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder müssen Ressourcenparameter übergeben werden:

ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial });

Für Editor-Nutzung:

ARSessionFactory.CreateSession(ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder, ARSessionFactory.Resources.EditorDefault());

Alle vordefinierten Sessions finden Sie unter EasyAR Sense > AR Session (Preset) > **.

alt text

Anmerkung

Mehrere aktive Sessions im selben Szenario führen zu Konflikten. Maximal eine Session sollte aktiviert sein (GameObject.activeInHierarchy == true).

Komponenten hinzufügen

frame source- und frame filter-Komponenten können nach der Erstellung hinzugefügt oder entfernt werden.

Wählen Sie AR Session (EasyAR) in der Hierarchy-Ansicht, rechtsklicken Sie und wählen Sie EasyAR Sense > [ AR-Funktion ] > **.

In Skripten: ARSessionFactory.AddFrameSource<Source>(GameObject, bool) für frame sources oder ARSessionFactory.AddFrameFilter<Filter>(GameObject, ARSessionFactory.Resources) für frame filters.

Beispiel: EasyAR Sense > Image Tracking > Frame Filter : Image Tracker fügt einen Bildverfolger hinzu.

alt text

Skriptcode:

ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
Vorsicht

Komponenten müssen vor assemble hinzugefügt werden. Nach Beginn von assemble führt jede Änderung zum Broken-Status.

Für SparseSpatialMapBuilderFrameFilter und DenseSpatialMapBuilderFrameFilter Ressourcen angeben:

ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, new ARSessionFactory.Resources { SparseSpatialMapPointCloudMaterial = PointCloudMaterial })

Editor-Standard:

ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, ARSessionFactory.Resources.EditorDefault());

Verwenden Sie ARSessionFactory.SetupFrameFilters(List<GameObject>, ARSessionFactory.ARSessionPreset) zur Parameteranpassung:

var filter = ARSessionFactory.AddFrameFilter<ImageTrackerFrameFilter>(session);
ARSessionFactory.SetupFrameFilters(new() { filter }, ARSessionFactory.ARSessionPreset.ImageTrackingMotionFusion);

Komponenten entfernen

Löschen Sie Komponenten in der Hierarchy-Ansicht mit Delete oder per Destroy in Skripten.

Anmerkung

Deaktivieren (SetActive(false)) hat denselben Effekt wie Löschen.

Beispiel: Löschen Sie Image Tracker mit Delete.

alt text

Vorsicht

Entfernen muss vor assemble erfolgen. Spätere Änderungen führen zu Broken.

Einfluss der Komponentenreihenfolge

Die Reihenfolge der frame filter-Knoten hat keine Auswirkung.

Die Reihenfolge der frame source-Knoten bestimmt die Auswahl während assemble. Nur die erste verfügbare frame source in der Transform-Reihenfolge wird verwendet.

Anmerkung

Die Reihenfolge muss vor assemble festgelegt werden. Spätere Änderungen sind unwirksam.

[Optional] Freie Session-Erstellung

Erstellen Sie eine leere Session mit EasyAR Sense > AR Session (Preset) > AR Session (Empty).

Skriptcode:

ARSessionFactory.CreateSession();

Fügen Sie dann benötigte Komponenten hinzu. Beispiel für Sparse-/Dense-Spatial-Mapping:

var session = ARSessionFactory.CreateSession();

var group = new GameObject("Frame Source Group");
group.transform.SetParent(session.transform, false);

ARSessionFactory.AddFrameSource<XREALFrameSource>(session);
ARSessionFactory.AddFrameSource<AREngineFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreFrameSource>(session);
ARSessionFactory.AddFrameSource<ARCoreARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<ARKitARFoundationFrameSource>(session);
ARSessionFactory.AddFrameSource<VisionOSARKitFrameSource>(session);
ARSessionFactory.AddFrameSource<MotionTrackerFrameSource>(session);

List<GameObject> filters = new();
filters.Add(ARSessionFactory.AddFrameFilter<SparseSpatialMapBuilderFrameFilter>(session, resources));
filters.Add(ARSessionFactory.AddFrameFilter<DenseSpatialMapBuilderFrameFilter>(session, resources));

ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.SparseSpatialMapBuilder);
ARSessionFactory.SetupFrameFilters(filters, ARSessionFactory.ARSessionPreset.DenseSpatialMapBuilder);

Ergebnisstruktur: alt text

Nächste Schritte