Table of Contents

Kameras und Frame-Quellen in Unity

Die Frame-Quelle ist der Anbieter von Kamerabildern und Eingabe-Frames in Unity. Dieser Artikel führt in die Grundkonzepte von Frame-Quellen, ihre Typen und die Auswahl zur Laufzeit ein.

Bevor Sie beginnen

Was ist eine Frame-Quelle?

Die Frame-Quelle (FrameSource) ist der Anbieter von Eingabe-Frames (InputFrame). Sie abstrahiert Kameras und andere Geräte oder Funktionen, die Eingabe-Frame-Daten liefern.

Das folgende Diagramm zeigt die Position der Frame-Quelle in der Sitzung:

flowchart LR
  F[Frame Source]
  A((Input Frame))
  B[Session]
  C([Camera])
  O([Origin])
  T([Target])
  F --> A
  A --> B
  B -. transform .-> C
  B -. transform .-> O
  B -. transform .-> T

  style F fill:#6e6ce6,stroke:#333,color:#fff

Eine Frame-Quelle kann Daten für nachgelagerte AR-Funktionen bereitstellen oder selbst AR-Funktionen implementieren, wie Bewegungsverfolgung. Einige Frame-Quellen bieten Steuerschnittstellen für Kameraparameter wie Auflösung oder Fokusmodus.

Typen von Frame-Quellen

Anhand des bereitstellenden Unity-Pakets lassen sich Frame-Quellen in zwei Hauptkategorien einteilen:

  • Integrierte Frame-Quellen: Werden vom EasyAR Sense Unity Plugin bereitgestellt und unterstützen gängige Szenarien und einige Headsets.
  • Externe Frame-Quellen: Werden von Erweiterungspaketen bereitgestellt, oft für spezifische Headsets. Häufig von Herstellern oder Drittanbietern entwickelt.

Die folgende Tabelle listet von EasyAR bereitgestellte Frame-Quellen auf:

Name Integriert Benutzerdefinierte Kamera Bewegungsdaten Beschreibung
CameraDeviceFrameSource Ja Nein Keine (0DoF) Standardkamera, unterstützt Front-/Rückkamera und PC
EditorCameraDeviceFrameSource Ja Nein Keine (0DoF) Nur für Editor-Debugging
FramePlayer Ja Nein Dateiabhängig Wiedergabe von EIF-Dateien
ThreeDofCameraDeviceFrameSource Ja Nein 3DoF Bietet 3DoF-Verfolgung
InertialCameraDeviceFrameSource Ja Nein 5DoF Bietet Trägheitsnavigation
MotionTrackerFrameSource Ja Nein 6DoF EasyAR-eigene Bewegungsverfolgung
ARCoreFrameSource Ja Nein 6DoF ARCore-Bewegungsverfolgung
ARKitFrameSource Ja Nein 6DoF ARKit-Bewegungsverfolgung
AREngineFrameSource Ja Ja 6DoF AR Engine-Bewegungsverfolgung
VisionOSARKitFrameSource Ja Ja 6DoF VisionOS ARKit-Bewegungsverfolgung 1
XREALFrameSource Ja Ja 6DoF XREAL-Geräteverfolgung 1
ARCoreARFoundationFrameSource Ja Ja 6DoF ARFoundation mit ARCore-Unterstützung
ARKitARFoundationFrameSource Ja Ja 6DoF ARFoundation mit ARKit-Unterstützung
PicoFrameSource Nein Ja 6DoF Pico-Geräteverfolgung 1
RokidFrameSource Nein Ja 6DoF Rokid-Geräteverfolgung 1

Auswahl zur Laufzeit

Die Sitzungshierarchie enthält eine oder mehrere Frame-Quell-Komponenten. Zur Laufzeit werden nicht alle aktiviert.

Screenshot mit einzelner Frame-Quell-Komponente: alt text

Screenshot mit mehreren Frame-Quell-Komponenten: alt text

Jede Bilddatenquelle hat unterschiedliche Funktionen, was auch ihre geeigneten Anwendungsszenarien und Geräte bestimmt. Bei der Session-Zusammenstellung wird eine und nur eine dieser Komponenten als Bilddatenquelle für die Session ausgewählt.

Die Eigenschaft AssembleOptions.FrameSourceSelection definiert die Auswahlmethode für die Bilddatenquelle während der Laufzeit der Session:

Name Methode
Auto (Standard) Automatische Auswahl, wählt das erste verfügbare und aktive untergeordnete Element in der Transform-Reihenfolge aus.
Manual Manuelle Angabe. Kann nur ein untergeordnetes Element der Session sein.
FramePlayer Verwendet FramePlayer.
Tipp

Die Transform-Reihenfolge von Unity-Objekten kann mit Transform.GetSiblingIndex() überprüft werden oder anhand der Reihenfolge der Objekte in der Hierarchy-Ansicht, jedoch muss folgende Option deaktiviert sein (standardmäßig deaktiviert): Edit > Preferences > General > Enable Alphanumeric Sorting.

Während des Session-Zusammenstellungsprozesses wird die Bilddatenquelle nach folgenden Schritten ausgewählt:

  1. Die Session durchläuft ihre untergeordneten Elemente und sammelt alle aktiven Bilddatenquellen-Komponenten in der Transform-Reihenfolge.
  2. Filtern der Kandidatenliste basierend auf der Auswahlstrategie (AssembleOptions.FrameSource) in AssembleOptions:
    • Auto (Standard): Behält alle Kandidaten bei.
    • Manual: Behält nur die manuell angegebene Bilddatenquelle bei.
    • FramePlayer: Ersetzt die Kandidatenliste durch FramePlayer.
  3. Erneutes Filtern der Kandidatenliste, Entfernen folgender Komponenten:
    • Komponenten, die durch sich selbst deaktiviert sind.
    • Alle benutzerdefinierten Kamera-Komponenten, wenn die benutzerdefinierte Kamera deaktiviert ist (AssembleOptions.EnableCustomCamera ist false).
  4. (Android-Plattform) Wenn der Timeout der AssembleOptions.DeviceList-Einstellung größer als 0 ist und die Kandidatenliste MotionTrackerFrameSource, ARCoreFrameSource oder AREngineFrameSource enthält, wird versucht, die neueste unterstützte Geräteliste herunterzuladen. Nach dem Download-Update kann sich die Verfügbarkeit dieser Bilddatenquellen ändern. Nach Abschluss des Downloads oder Timeout werden die folgenden Schritte fortgesetzt.
  5. Überprüfen der Verfügbarkeit der verbleibenden Kandidatenkomponenten in der Listenreihenfolge (Aufruf von FrameSource.CheckAvailability() und Zugriff auf FrameSource.IsAvailable).
  6. Auswahl der ersten Bilddatenquelle, deren Überprüfungsergebnis verfügbar ist.

Die Deaktivierungsbedingungen der Komponente selbst sind intern definiert, übliche Fälle sind:

Wenn am Ende keine Bilddatenquelle ausgewählt wird, geht die Session in den Zustand Broken über, und das Feld BrokenReason im Session-Bericht hat den Wert NoAvailabileFrameSource.

Anmerkung

Nachdem die Geräteliste aktualisiert wurde, kann sich die Verfügbarkeit der Bilddatenquellen ändern, wenn sich die Geräteliste geändert hat. Informationen zum Verhalten der Session in diesem Fall finden Sie unter Geräteunterstützung und Session-Bericht.

Nächste Schritte

Verwandte Themen


  1. Geräteunterstützung siehe EasyAR Headset-Unterstützung.