Table of Contents

Telecamere in unity e sorgente dei dati di frame - sorgente di frame (frame source)

La sorgente di frame è il fornitore di dati di frame per telecamere e input in Unity. Questo documento introduce i concetti fondamentali, i tipi e i metodi di selezione durante l'esecuzione per le sorgenti di frame.

Prima di iniziare

Cos'è una sorgente di frame

La sorgente di frame (FrameSource) è il fornitore di frame di input (InputFrame), che astrae telecamere e altri dispositivi o funzionalità che forniscono dati di frame.

Il diagramma seguente mostra la posizione della sorgente di frame nella sessione:

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

La sorgente di frame potrebbe semplicemente fornire dati a funzionalità AR a valle, o potrebbe implementare essa stessa alcune funzionalità AR, come il tracciamento del movimento. Alcune sorgenti di frame forniscono interfacce di controllo per il dispositivo della telecamera, consentendo agli utenti di selezionare parametri come risoluzione, modalità di messa a fuoco, ecc.

Tipi di sorgenti di frame

Classificate in base al pacchetto Unity che le fornisce, le sorgenti di frame si dividono in due categorie principali:

  • Sorgenti di frame integrate: fornite dal pacchetto plugin EasyAR Sense Unity, generalmente supportano la maggior parte degli scenari d'uso comuni e alcuni headset.
  • Sorgenti di frame esterne: fornite da pacchetti di estensione di EasyAR Sense Unity, tipicamente utilizzate per supportare specifici dispositivi headset. Spesso, le sorgenti di frame esterne sono fornite da produttori di headset o sviluppatori terzi.

Distinte dalle sorgenti esterne, telecamera personalizzata non necessariamente è fornita esternamente; alcune sorgenti integrate sono anch'esse telecamere personalizzate.

Le sorgenti di frame possono fornire dati di movimento con diversi gradi di libertà: 0DoF, 3DoF, 5DoF e 6DoF. La stessa sorgente potrebbe fornire dati di movimento con diversi gradi di libertà in diversi stati operativi.

La tabella seguente elenca le sorgenti di frame fornite da EasyAR:

Nome Integrata Telecamera personalizzata Dati di movimento Descrizione
CameraDeviceFrameSource No Nessuno (0DoF) Telecamera standard, supporta anteriore/posteriore e PC
EditorCameraDeviceFrameSource No Nessuno (0DoF) Telecamera standard, solo per debug nell'editor
FramePlayer No Determinato dal file Riproduzione file EIF per simulazione
ThreeDofCameraDeviceFrameSource No 3DoF Fornisce tracciamento 3DoF
InertialCameraDeviceFrameSource No 5DoF Fornisce navigazione inerziale
MotionTrackerFrameSource No 6DoF Fornisce tracciamento del movimento implementato da EasyAR
ARCoreFrameSource No 6DoF Fornisce tracciamento del movimento ARCore
ARKitFrameSource No 6DoF Fornisce tracciamento del movimento ARKit
AREngineFrameSource 6DoF Fornisce tracciamento del movimento AR Engine
VisionOSARKitFrameSource 6DoF Fornisce tracciamento del movimento ARKit per VisionOS 1
XREALFrameSource 6DoF Fornisce tracciamento del movimento per dispositivi XREAL 1
ARCoreARFoundationFrameSource 6DoF Fornisce tracciamento del movimento ARFoundation corrispondente ad ARCore
ARKitARFoundationFrameSource 6DoF Fornisce tracciamento del movimento ARFoundation corrispondente ad ARKit
PicoFrameSource No 6DoF Fornisce tracciamento del movimento per dispositivi Pico 1
RokidFrameSource No 6DoF Fornisce tracciamento del movimento per dispositivi Rokid 1

Selezione della sorgente di frame durante l'esecuzione

La struttura gerarchica della sessione contiene uno o più componenti sorgente di frame. Durante l'esecuzione della sessione, non tutti i componenti sorgente di frame vengono utilizzati.

La schermata seguente mostra una gerarchia di scena con un singolo componente sorgente di frame:

testo alternativo

La schermata seguente mostra una gerarchia di scena con più componenti sorgente di frame:

testo alternativo

Ogni sorgente di frame ha funzionalità diverse, il che determina anche i loro scenari e dispositivi applicabili. Durante l'assemblaggio della sessione, una e una sola di queste componenti verrà selezionata come sorgente di frame per la sessione.

La proprietà AssembleOptions.FrameSourceSelection definisce il metodo di selezione della sorgente di frame durante l'esecuzione della sessione:

Nome Metodo
Auto (predefinito) Selezione automatica. Seleziona il primo figlio disponibile e attivo in base all'ordine di trasformazione.
Manual Specifica manualmente. Può essere specificato solo un figlio della sessione.
FramePlayer Utilizza FramePlayer.
Consiglio

L'ordine di trasformazione degli oggetti Unity può essere determinato utilizzando Transform.GetSiblingIndex() o osservando l'ordinamento degli oggetti nella vista Hierarchy, ma è necessario disabilitare la seguente opzione (disattivata per impostazione predefinita): Edit > Preferences > General > Enable Alphanumeric Sorting.

Durante il processo di assemblaggio della sessione, la sorgente di frame viene selezionata attraverso i seguenti passaggi:

  1. La sessione scorre i suoi figli, raccogliendo tutte le componenti sorgente di frame attive in base all'ordine di trasformazione.
  2. Filtra l'elenco dei candidati in base alla strategia di selezione della sorgente (AssembleOptions.FrameSource) in AssembleOptions:
    • Auto (predefinito): Mantiene tutti i candidati.
    • Manual: Mantiene solo la sorgente di frame specificata manualmente.
    • FramePlayer: Sostituisce l'elenco dei candidati con FramePlayer.
  3. Filtra nuovamente l'elenco dei candidati, rimuovendo le seguenti componenti:
    • Componenti disabilitate dalla componente stessa.
    • Tutte le componenti di telecamera personalizzata quando la telecamera personalizzata è disabilitata (AssembleOptions.EnableCustomCamera è false).
  4. (Piattaforma Android) Se il timeout in AssembleOptions.DeviceList è maggiore di 0 e l'elenco dei candidati include MotionTrackerFrameSource, ARCoreFrameSource o AREngineFrameSource, tenterà di scaricare le ultime liste di supporto del dispositivo corrispondenti. Dopo l'aggiornamento, la disponibilità di queste sorgenti di frame potrebbe cambiare. Dopo il completamento o il timeout del download, procede con i passaggi successivi.
  5. Controlla in sequenza la disponibilità delle componenti candidate rimanenti (chiamando FrameSource.CheckAvailability() e accedendo a FrameSource.IsAvailable).
  6. Seleziona la prima sorgente di frame il cui risultato del controllo è disponibile.

Le condizioni di disabilitazione intrinseche di una componente sono definite internamente dalla componente stessa. Ecco alcuni casi comuni:

Se alla fine non viene selezionata alcuna sorgente di frame, la sessione entra nello stato Broken e il campo BrokenReason nel report della sessione avrà il valore NoAvailabileFrameSource.

Nota

Dopo l'aggiornamento della lista dei dispositivi, se la lista cambia, la disponibilità della sorgente di frame potrebbe cambiare. Per il comportamento della sessione in questo caso, consultare Supporto del dispositivo e report della sessione.

Prossimi passi

Argomenti correlati


  1. Il supporto per dispositivi può essere consultato in Supporto headset di EasyAR.