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
- Machen Sie sich mit den Grundkonzepten, Komponenten und Arbeitsabläufen der AR-Sitzung vertraut.
- Verstehen Sie grundlegende Konzepte wie Kameras, Eingabe-Frames.
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:
![]()
Screenshot mit mehreren Frame-Quell-Komponenten:

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:
- Die Session durchläuft ihre untergeordneten Elemente und sammelt alle aktiven Bilddatenquellen-Komponenten in der Transform-Reihenfolge.
- 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.
- 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).
- (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.
- Überprüfen der Verfügbarkeit der verbleibenden Kandidatenkomponenten in der Listenreihenfolge (Aufruf von FrameSource.CheckAvailability() und Zugriff auf FrameSource.IsAvailable).
- Auswahl der ersten Bilddatenquelle, deren Überprüfungsergebnis verfügbar ist.
Die Deaktivierungsbedingungen der Komponente selbst sind intern definiert, übliche Fälle sind:
- Ausführung in einem nicht unterstützten System, z.B. wird AREngineFrameSource in einem nicht-Android-System deaktiviert.
- Erforderliche Drittanbieter-SDK nicht installiert, z.B. wird XREALFrameSource deaktiviert, wenn das XREAL SDK nicht installiert ist.
- Konfigurierte Bedingungen nicht erfüllt, z.B. wird MotionTrackerFrameSource deaktiviert, wenn die MotionTrackerCameraDeviceQualityLevel des Geräts niedriger ist als MotionTrackerFrameSource.DeviceQualityLevel.
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
- Fügen Sie eine Frame-Quell-Gruppe zu Ihrer Szene hinzu
Verwandte Themen
- Geräteunterstützung und Sitzungsberichte
- EasyAR Headset-Unterstützung
- Erstellen Sie externe Frame-Quellen für benutzerdefinierte Kameras
-
Geräteunterstützung siehe EasyAR Headset-Unterstützung.↩↩↩↩