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