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
- Comprendere i concetti fondamentali, i componenti e il flusso di lavoro di sessione AR.
- Comprendere concetti base come telecamere, frame di input.
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 | Sì | No | Nessuno (0DoF) | Telecamera standard, supporta anteriore/posteriore e PC |
| EditorCameraDeviceFrameSource | Sì | No | Nessuno (0DoF) | Telecamera standard, solo per debug nell'editor |
| FramePlayer | Sì | No | Determinato dal file | Riproduzione file EIF per simulazione |
| ThreeDofCameraDeviceFrameSource | Sì | No | 3DoF | Fornisce tracciamento 3DoF |
| InertialCameraDeviceFrameSource | Sì | No | 5DoF | Fornisce navigazione inerziale |
| MotionTrackerFrameSource | Sì | No | 6DoF | Fornisce tracciamento del movimento implementato da EasyAR |
| ARCoreFrameSource | Sì | No | 6DoF | Fornisce tracciamento del movimento ARCore |
| ARKitFrameSource | Sì | No | 6DoF | Fornisce tracciamento del movimento ARKit |
| AREngineFrameSource | Sì | Sì | 6DoF | Fornisce tracciamento del movimento AR Engine |
| VisionOSARKitFrameSource | Sì | Sì | 6DoF | Fornisce tracciamento del movimento ARKit per VisionOS 1 |
| XREALFrameSource | Sì | Sì | 6DoF | Fornisce tracciamento del movimento per dispositivi XREAL 1 |
| ARCoreARFoundationFrameSource | Sì | Sì | 6DoF | Fornisce tracciamento del movimento ARFoundation corrispondente ad ARCore |
| ARKitARFoundationFrameSource | Sì | Sì | 6DoF | Fornisce tracciamento del movimento ARFoundation corrispondente ad ARKit |
| PicoFrameSource | No | Sì | 6DoF | Fornisce tracciamento del movimento per dispositivi Pico 1 |
| RokidFrameSource | No | Sì | 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:
![]()
La schermata seguente mostra una gerarchia di scena con più componenti sorgente di frame:

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:
- La sessione scorre i suoi figli, raccogliendo tutte le componenti sorgente di frame attive in base all'ordine di trasformazione.
- 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.
- 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).
- (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.
- Controlla in sequenza la disponibilità delle componenti candidate rimanenti (chiamando FrameSource.CheckAvailability() e accedendo a FrameSource.IsAvailable).
- 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:
- Esecuzione su sistemi non supportati, ad esempio AREngineFrameSource è disabilitata su sistemi non Android.
- SDK di terze parti necessari non installati, ad esempio XREALFrameSource è disabilitata se l'SDK XREAL non è installato.
- Condizioni di configurazione non soddisfatte, ad esempio MotionTrackerFrameSource è disabilitata se il livello di qualità MotionTrackerCameraDeviceQualityLevel del dispositivo è inferiore a MotionTrackerFrameSource.DeviceQualityLevel.
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
- Prova ad aggiungere un gruppo di sorgenti di frame nella scena
Argomenti correlati
- Supporto dispositivi e report sessione
- Supporto headset di EasyAR
- Creazione di sorgenti di frame esterne per utilizzare telecamere personalizzate
-
Il supporto per dispositivi può essere consultato in Supporto headset di EasyAR.↩↩↩↩