Table of Contents

Supporto del dispositivo e report di sessione

A causa delle differenze hardware e di prestazioni dei dispositivi, le funzionalità AR spesso non funzionano su tutti i dispositivi. Pertanto, è fondamentale determinare con precisione il supporto del dispositivo corrente quando si utilizzano funzionalità AR. Questo articolo spiega come viene espresso il supporto del dispositivo in Unity e come ottenere informazioni sul supporto del dispositivo e sulla disponibilità della sessione tramite il report di sessione (ARSession.Report).

Prima di iniziare

Supporto del dispositivo, disponibilità della sessione e assemblaggio

Ogni funzionalità AR può supportare dispositivi diversi. Ad esempio, il motion tracking richiede componenti hardware specifici e solitamente la calibrazione del dispositivo, mentre il riconoscimento di immagini può funzionare su quasi tutti i dispositivi con fotocamera funzionante. Pertanto, per determinare se un'applicazione AR può funzionare su un dispositivo specifico, è necessario sapere quali funzionalità AR vengono utilizzate o, in altre parole, determinare se una sessione può essere eseguita sul dispositivo.

In Unity, questo processo di determinazione avviene durante la fase di assemblaggio della sessione (Assemble()). L'assemblaggio determina lo stato finale della sessione prima dell'avvio, in base ai componenti inclusi nella sessione e al supporto del dispositivo corrente.

Se l'assemblaggio ha successo, la sessione entra nello stato Ready e può essere avviata ed eseguita; se l'assemblaggio fallisce, la sessione entra nello stato Broken e la causa specifica del fallimento può essere verificata tramite il report di sessione (ARSession.Report).

Report di sessione

La proprietà ARSession.Report fornisce un report operativo della sessione. Un report di sessione include i seguenti campi:

Proprietà Descrizione
Availability Report completo di disponibilità
BrokenReason Motivo del danneggiamento della sessione, valido quando lo stato della sessione è Broken
Exception Eccezione specifica del danneggiamento della sessione, valido quando lo stato della sessione è Broken

Nel report di sessione, è possibile verificare la disponibilità di ogni componente tramite Availability o consultare BrokenReason per i dettagli del motivo del danneggiamento quando la sessione è danneggiata.

Esempio di report di sessione

Ad esempio, su Windows, se una sessione include ImageTrackerFrameFilter, CameraDeviceFrameSource e diversi altri componenti frame source, il processo di assemblaggio verificherà la disponibilità di ogni componente e genererà un report come questo:

alt text

Si può osservare che, sebbene Availability del componente ARCoreFrameSource sia Unavailable, poiché Availability di ImageTrackerFrameFilter e CameraDeviceFrameSource sono entrambi Available, l'assemblaggio complessivo della sessione ha successo e la sessione entra correttamente nello stato Ready.

Se rimuoviamo CameraDeviceFrameSource dalla sessione, il processo di assemblaggio genererà questo report:

alt text

Si può notare che il numero di elementi in FrameSources è diminuito da 9 a 8. Sebbene Availability del componente ImageTrackerFrameFilter sia ancora Available, l'assenza di componenti frame source disponibili causa il fallimento dell'assemblaggio della sessione, che entra nello stato Broken. In questo caso, il campo BrokenReason nel report ha valore NoAvailabileFrameSource, indicando l'assenza di frame source disponibili.

Oltre al processo di assemblaggio, la sessione può danneggiarsi anche durante l'esecuzione, ad esempio se un componente in esecuzione viene rimosso accidentalmente. In tali casi, è possibile verificare la causa specifica tramite il report di sessione.

Aggiornamento del report

Il report di sessione cambia nei seguenti momenti:

  • Completamento della prima fase di assemblaggio
    Viene generato un report di sessione completo, inclusa la disponibilità dei componenti. La parte Availability del report viene determinata in questo momento e non cambia ulteriormente.
    È possibile ottenere aggiornamenti sulla disponibilità dei componenti tramite l'evento AssembleUpdate.
    Se la sessione viene avviata subito dopo l'assemblaggio, è possibile ottenere aggiornamenti del report di sessione anche tramite l'evento StateChanged. Gli stati della sessione da monitorare includono: Ready e Broken.

  • Completamento della seconda fase di assemblaggio
    Viene generato un nuovo report sulla disponibilità dei componenti. Il report di sessione non viene aggiornato a meno che la sessione non venga riavviata.
    È possibile ottenere aggiornamenti sulla disponibilità dei componenti tramite l'evento AssembleUpdate.

  • Danneggiamento della sessione durante l'avvio o l'esecuzione
    I campi BrokenReason e Exception del report di sessione vengono aggiornati.
    È possibile ottenere aggiornamenti del report di sessione tramite l'evento StateChanged. Lo stato della sessione da monitorare è: Broken.

Contenuto del report: motivi del danneggiamento della sessione

BrokenReason indica il motivo del danneggiamento della sessione, con le seguenti possibilità:

Motivo Descrizione
Uninitialized Assemblaggio, EasyAR Sense non inizializzato correttamente
LicenseInvalid Assemblaggio, verifica della licenza EasyAR Sense fallita o non valida per l'uso corrente
SessionObjectIncomplete Assemblaggio, oggetto sessione incompleto. Ad esempio, RendererFeature non configurato correttamente in URP
NoAvailabileFrameSource Assemblaggio, nessun frame source disponibile. Ad esempio, tutti i frame source non sono disponibili o non ne è stato aggiunto nessuno. Solo nella configurazione di sessione predefinita, indica che il dispositivo non supporta le funzionalità AR selezionate
FrameSourceIncomplete Assemblaggio, frame source incompleto. Generalmente si verifica quando un frame source personalizzato non implementa correttamente l'interfaccia frame source
FrameFilterNotAvailabile Assemblaggio, presenza di frame filter non disponibili. Questo caso esiste solo con alcune opzioni di assemblaggio.
StartFailed Avvio fallito. Ad esempio, eccezione durante l'avvio
RunningFailed Esecuzione fallita. Ad esempio, rimozione accidentale di un componente in esecuzione o RendererFeature non configurato correttamente in URP.

Contenuto del report: informazioni sulla disponibilità

Availability fornisce informazioni sulla disponibilità di ogni componente nella sessione. Include i seguenti campi:

Campo Descrizione
FrameFilters Elenco dei frame filter verificati durante l'assemblaggio
FrameSources Elenco dei frame source verificati durante l'assemblaggio
PendingDeviceList Attività di download dell'elenco dispositivi non completate
DeviceList Risultato del download dell'elenco dispositivi

I campi PendingDeviceList e DeviceList indicano lo stato di download dell'elenco di supporto dei dispositivi. Al completamento della prima fase di assemblaggio, se e solo se PendingDeviceList non è vuoto, l'assemblaggio procede alla seconda fase. È possibile utilizzare questa condizione per determinare se AssembleUpdate verrà eseguito una seconda volta.

Passaggi successivi