Table of Contents

Class ARSession

Namespace
easyar
Assembly
EasyAR.Sense.dll

Die MonoBehaviour, die die AR-Sitzung in der Szene steuert. Eine Sitzung umfasst eine Gruppe von Komponenten, die zu einerARAssembly zusammengebaut sind und den gesamten Datenfluss während des Lebenszyklus steuern. Diese Komponente ist der Einstiegspunkt für AR. Mehrere aktive Instanzen gleichzeitig sind nicht erlaubt.

Alle Funktionen der EasyAR-Komponenten können erst verwendet werden, nachdemStartSession() aufgerufen wurde.

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. Detailliertere Informationen 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 auf einen verfügbaren Modus geändert.

[SerializeField]
[HideInInspector]
public ARSession.ARCenterMode CenterMode

HorizontalFlip

Horizontales Spiegel-Rendering. 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 für die Sitzung, müssen vorAssemble() (wird implizit vonStartSession() aufgerufen, wenn nicht vorher aufgerufen) festgelegt werden.

public AssembleOptions AssembleOptions { get; }

Assembly

Die Zusammenstellung der AR-Komponenten.

public ARAssembly Assembly { get; }

AvailableCenterMode

Die für die aktuelle Sitzung verfügbaren 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. Ein `Target` kann ein GameObject mit einerTargetController- oderBlockRootController-Komponente sein. Bei Verwendung von sparse Raumkarten und EasyAR Mega ist das tatsächliche ZentrumsGameObject das lokalisierten Map- oder Block-Objekt unter dem Root-Knoten,CenterObject ist der Elternknoten dieses Objekts. Detailliertere Informationen finden Sie in der Beschreibung vonARSession.ARCenterMode.

public GameObject CenterObject { get; }

Diagnostics

Sitzungsdiagnosekomponente.

public DiagnosticsController Diagnostics { get; }

Origin

Der Ursprung der Sitzung während des Betriebs einer Bewegungstracking-Funktion.

Er 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, falls vorhanden, der XROrigin des Unity-XR-Frameworks 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 Assemble verfügbar und wird bei Sitzungsstatusänderungen aktualisiert. Dient zur Anzeige detaillierter Informationen über Sitzungsfehler oder Komponentenverfügbarkeit.

public SessionReport Report { get; }

SpecificTargetCenter

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

Das Objekt muss eineTargetController- oderBlockRootController-Komponente enthalten.

public GameObject SpecificTargetCenter { get; set; }

State

Der aktuelle Status der Sitzung.

public ARSession.SessionState State { get; }

TrackingStatus

Der Bewegungstracking-Status während des Betriebs einer Bewegungstracking-Funktion.

public Optional<MotionTrackingStatus> TrackingStatus { get; }

Methoden

Assemble()

Baut die Sitzung mitAssembleOptions zusammen. Wenn aufgerufen, wird dies 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 sein. Auf Headsets nicht verfügbar.

public Optional<Vector2> ImageCoordinatesFromScreenCoordinates(Vector2 pointInView)

Parameter

pointInView

StartSession()

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

public void StartSession()

StopSession(bool)

Stoppt die laufende Sitzung. Alle Transform-Aktualisierungen und Bild-Rendering-Aktualisierungen werden gestoppt. Sie können das letzte Frame-Bild beim Stopp beibehalten, aber 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 SitzungsAssemble(). Dieses Ereignis wird während einesAssemble() (wird implizit vonStartSession() aufgerufen, wenn nicht vorher aufgerufen) 1-2 Mal ausgelöst. Das erste Mal, wenn Assemble abgeschlossen ist. Wenn die Gerätelistenaktualisierung bei Assemble-Abschluss bereits fertig ist, erfolgt kein zweiter Aufruf, andernfalls erfolgt der zweite Aufruf, wenn die Gerätelistenaktualisierung abgeschlossen ist.

public event Action<SessionReport.AvailabilityReport> AssembleUpdate

InputFrameUpdate

Eingabeframe-Aktualisierungsereignis, das nur ausgelöst wird, 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

Sitzungs-Aktualisierungsabschlussereignis, dessen Häufigkeit der vonMonoBehaviour.Update entspricht (auf Headsets erfordert dies eine korrekte Implementierung durch den Erweiterungsautor). Wenn dieses Ereignis ausgelöst wird, sind alle von EasyAR gesteuerten Transform-Änderungen innerhalb dieses Frames abgeschlossen.

public event Action PostSessionUpdate

StateChanged

Ereignis bei Änderung des SitzungsState.

public event Action<ARSession.SessionState> StateChanged