Table of Contents

Class ARSession

Namespace
easyar
Assembly
EasyAR.Sense.dll

Steuert die AR-Sitzung in der Szene. Eine Sitzung umfasst eine Reihe von Komponenten, die zu einemARAssembly zusammengebaut sind und den gesamten Datenfluss des Lebenszyklus kontrollieren. Diese Komponente ist der Einstiegspunkt für AR. Es darf nicht mehrere aktive Instanzen gleichzeitig vorhanden sein.

Alle Funktionen der EasyAR-Komponenten können erst nachStartSession() verwendet werden.

Die relative Transformation zwischenCamera und einigen AR-Komponenten wird von der Sitzung gesteuert. Ein Objekt wird alsCenterObject bezeichnet und bewegt sich nicht in der Szene, während sich andere Objekte relativ zu diesemCenterObject bewegen. Dieses Objekt wird basierend auf dem Wert vonCenterMode ausgewählt. Weitere Details finden Sie in der Beschreibung vonARSession.ARCenterMode.

[DefaultExecutionOrder(-2147483648)]
[DisallowMultipleComponent]
[RequireComponent(typeof(EasyARController), typeof(DiagnosticsController))]
[RequireComponent(typeof(FrameRecorder), typeof(FramePlayer), typeof(CameraImageRenderer))]
public class ARSession : MonoBehaviour
Vererbung
ARSession

Felder

AutoStart

Startet die Sitzung automatisch beiMonoBehaviour.Start. Wenn auf false gesetzt, müssen SieStartSession() manuell aufrufen, um die Sitzung zu starten.

[SerializeField]
[HideInInspector]
public bool AutoStart

CenterMode

AR-Zentrumsmodus. Kann jederzeit geändert werden und wirkt sofort. Wenn der angegebene Modus nicht verfügbar ist, wird er automatisch in einen verfügbaren Modus geändert.

[SerializeField]
[HideInInspector]
public ARSession.ARCenterMode CenterMode

HorizontalFlip

Horizontales Spiegel-Rendering-Modus. Kann jederzeit geändert werden und wirkt sofort. Nur bei Verwendung von Bild- oder Objekt-Tracking verfügbar.

[SerializeField]
[HideInInspector]
public ARSession.FlipOptions HorizontalFlip

Eigenschaften

AssembleOptions

Zusammenbau-Optionen der Sitzung, müssen vorAssemble() (wenn nicht vorher aufgerufen, wirdStartSession() es implizit aufrufen) festgelegt werden.

public AssembleOptions AssembleOptions { get; }

Assembly

Die Zusammenstellung der AR-Komponenten.

public ARAssembly Assembly { get; }

AvailableCenterMode

Für die aktuelle Sitzung verfügbare Zentrumsmodi.

public IReadOnlyList<ARSession.ARCenterMode> AvailableCenterMode { get; }

CenterObject

Das von dieser Sitzung im aktuellen Frame verwendete Zentrumsobjekt.

Dieses Objekt repräsentiert ein Objekt oder dessen Elternknoten, das sich im Unity-Raum nicht bewegt. Es könnteOrigin,Camera oder ein bestimmtes `target` sein. `Target` kann ein Objekt sein, das eineTargetController- oderBlockRootController-Komponente enthält. Bei Verwendung von Sparse Spatial Map und EasyAR Mega ist das tatsächliche Zentrum-GameObject das lokalisierten Map- oder Block-Objekt unter dem Root-Knoten,CenterObject ist der Elternknoten dieses Objekts. Weitere Details finden Sie in der Beschreibung vonARSession.ARCenterMode.

public GameObject CenterObject { get; }

Diagnostics

Sitzungsdiagnosekomponente.

public DiagnosticsController Diagnostics { get; }

Origin

Der Ursprung der Sitzung während der Ausführung einer Bewegungsverfolgungsfunktion.

Es wird automatisch aus der Szene ausgewählt oder von EasyAR oder einer Drittanbieter-Frame-Source-Erweiterung erstellt, falls nicht vorhanden. Bei Verwendung der integrierten Frame-Source wird, wenn XROrigin des Unity-XR-Frameworks existiert, dieses ausgewählt. Wenn das AR Foundation-Paket nicht vorhanden ist, wird nur ein XR Origin mit der Standardstruktur ausgewählt.

public GameObject Origin { get; }

Report

Sitzungsbericht. Er ist nach Abschluss des Zusammenbaus verfügbar und wird bei Änderungen des Sitzungsstatus aktualisiert. Dient zur Anzeige detaillierter Informationen über Sitzungsfehler oder Komponentenverfügbarkeit.

public SessionReport Report { get; }

SpecificTargetCenter

Manuell festgelegtes Zentrumsobjekt. WennCenterMode == SpecificTarget, wirdCenterObject auf dieses Objekt gesetzt. Kann jederzeit geändert werden und wirkt sofort.

Dieses Objekt muss eineTargetController- oderBlockRootController-Komponente enthalten.

public GameObject SpecificTargetCenter { get; set; }

State

Status der aktuellen Sitzung.

public ARSession.SessionState State { get; }

TrackingStatus

Der Bewegungsverfolgungsstatus während der Ausführung einer Bewegungsverfolgungsfunktion.

public Optional<MotionTrackingStatus> TrackingStatus { get; }

enabled

Aktiviert/Deaktiviert die Ausgabe während der Sitzungslaufzeit. Im deaktivierten Zustand gibt die Sitzung keine Ausgaben aus, Kamerabilder (falls von EasyAR gesteuert) und die Transformation aller Sitzungsobjekte werden nicht aktualisiert.

public bool enabled { get; set; }

Methoden

Assemble()

Baut die Sitzung mitAssembleOptions zusammen. Wenn aufgerufen, wird es automatisch inStartSession() aufgerufen.

public IEnumerator Assemble()

ImageCoordinatesFromScreenCoordinates(Vector2)

Transformiert vom Bildschirmkoordinatensystem ([0, 1]^2) in das Bildkoordinatensystem ([0, 1]^2).pointInView muss auf [0, 1]^2 normalisiert werden. Auf Headsets nicht verfügbar.

public Optional<Vector2> ImageCoordinatesFromScreenCoordinates(Vector2 pointInView)

Parameter

pointInView

StartSession()

Startet die Sitzung. WennAutoStart true ist, wird es automatisch inMonoBehaviour.Start aufgerufen.

public void StartSession()

StopSession(bool)

Stoppt die laufende Sitzung. Alle Transform- und Bild-Rendering-Aktualisierungen werden gestoppt. Sie können die Anzeige des letzten Frames beim Stoppen beibehalten, dies funktioniert jedoch nur, wenn EasyAR das Bild-Rendering steuert (nicht bei AR Foundation oder Headsets).

public void StopSession(bool keepLastFrame)

Parameter

keepLastFrame

Ereignisse

AssembleUpdate

Ereignis bei Aktualisierung der Sitzungs-Assemble(). Dieses Ereignis wird während einesAssemble() (wenn nicht vorher aufgerufen, wirdStartSession() es implizit aufrufen) ein- bis zweimal ausgelöst. Das erste Mal erfolgt es, wenn Assemble abgeschlossen ist. Wenn die Gerätelistenaktualisierung zum Zeitpunkt des Assemble-Abschlusses bereits abgeschlossen ist, erfolgt kein zweiter Aufruf, andernfalls erfolgt der zweite Aufruf, wenn die Gerätelistenaktualisierung abgeschlossen ist.

public event Action<SessionReport.AvailabilityReport> AssembleUpdate

InputFrameUpdate

Ereignis bei Aktualisierung des Eingabeframes, wird nur ausgelöst, wenn sich der von der Sitzung angezeigteInputFrame ändert. Auf Headsets wird dieses Ereignis nicht empfangen, und wenn ein Durchsichtsbild vorhanden ist, erfolgt dessen Rendering durch das Gerät.

public event Action<InputFrame> InputFrameUpdate

PostSessionUpdate

Ereignis bei Abschluss der Sitzungsaktualisierung, dessen Frequenz mit der vonMonoBehaviour.Update übereinstimmt (auf Headsets muss der Erweiterungsautor dies korrekt implementieren). Wenn dieses Ereignis ausgelöst wird, sind alle von EasyAR kontrollierten Transform-Änderungen innerhalb dieses Frames abgeschlossen.

public event Action PostSessionUpdate

StateChanged

Ereignis bei Änderung des Sitzungs-State.

public event Action<ARSession.SessionState> StateChanged