Considerazioni sul rendimento

Per creare esperienze utente AR coinvolgenti, è importante che l'app abilitata per AR funzioni correttamente.

Assicurati che l'app:

  • Si sente reattivo all'input dell'utente, che include gesti tattili e movimento del dispositivo.
  • Viene eseguito con una frequenza fotogrammi ragionevole e coerente. In genere gli utenti preferiscono frequenze fotogrammi coerenti e inferiori rispetto a frequenze fotogrammi variabili e superiori.
  • Riduce al minimo il consumo della batteria, consentendo all'utente di utilizzare il proprio dispositivo per altre attività durante il giorno o di utilizzare più a lungo la tua esperienza AR.
  • Consente di creare un'esperienza AR avvincente in cui i contenuti generati con AR sembrano stabili rispetto all'ambiente e si integrano realisticamente con l'ambiente.

Best practice per il rendimento

Per creare esperienze AR più avvincenti, progetta tenendo a mente le seguenti best practice.

Utilizzare gli ancoraggi per migliorare le prestazioni del monitoraggio

Sebbene sia possibile posizionare contenuti 3D utilizzando le coordinate dello spazio, utilizza sempre un ancoraggio quando possibile. ARCore garantisce che gli ancoraggi appaiano stabili rispetto al mondo, anche se le coordinate dello spazio mondiale sottostanti cambiano e possono saltare nel tempo ogni volta che ARCore aggiorna la sua comprensione del mondo.

Gli oggetti virtuali non fissati a un ancoraggio occasionalmente sembreranno che saltino e non appaiano stabili rispetto all'ambiente. Ciò può rendere l'esperienza AR meno interessante per gli utenti.

Considera le caratteristiche delle prestazioni specifiche per il dispositivo

I dispositivi supportati da ARCore coprono un'ampia gamma di caratteristiche hardware e prestazioni. Le prestazioni dei dispositivi possono variare per i seguenti motivi:

  • CPU/GPU dispositivo, velocità di clock
  • Memoria e larghezza di banda disponibili
  • Qualità del sensore IMU/della fotocamera
  • Altre differenze hardware
  • Driver del sistema operativo e dei dispositivi

Ti consigliamo di testare l'app su diverse classi di dispositivi che rappresentano i dispositivi che gli utenti utilizzeranno.

Disattiva le funzionalità che consumano molta CPU quando non in uso

Alcune funzionalità ARCore aumentano l'utilizzo della CPU quando sono abilitate. Valuta la possibilità di disattivare queste funzionalità nei casi in cui l'esperienza AR non le richiede. In questo modo, la tua app avrà a disposizione ulteriori cicli della CPU e migliorerà le prestazioni termiche e la durata della batteria.

Attualmente, l'utilizzo della CPU ARCore aumenta quando Instant Placement e/o Augmented Images sono abilitati per la sessione corrente. Segui queste linee guida per aumentare l'efficienza di utilizzo della CPU:

  • Instant Placement dovrebbe essere disattivato una volta stabilito il monitoraggio completo. La funzionalità può essere disattivata nella configurazione delle sessioni.

  • Augmented Images deve essere disattivato ogni volta che la funzionalità non è necessaria per la tua esperienza AR. Per disabilitare le immagini aumentate, configura un database null o vuoto nella configurazione delle sessioni.

Monitorare la temperatura del dispositivo

Durante lo sviluppo e i test di QA, puoi utilizzare le API termiche di Android per monitorare e tenere traccia delle prestazioni della tua app sul dispositivo.

Assicurati di utilizzare una build di produzione della tua app (e non una build di sviluppo o qa della tua app che potrebbe avere caratteristiche delle prestazioni di runtime diverse).

Identifica la mancanza di CPU ARCore

Quando una sessione ARCore è attiva, la tua app deve condividere risorse limitate di CPU e GPU per dispositivi mobili con ARCore. Le app associate alla CPU possono competere con le risorse della CPU necessarie per il monitoraggio del movimento.

Per verificare che SLAM (localization and mapping) simultanea di ARCore possa funzionare normalmente, verifica che il messaggio "VIOfrequency low" non venga visualizzato nei log del dispositivo Android:

adb logcat | grep 'VIO frequency low'

Evita il blocco della CPU ARCore

Quando una sessione ARCore è attiva, l'app deve condividere un dispositivo mobile limitato di risorse di CPU e GPU con ARCore. Le app associate alla CPU possono competere con le risorse della CPU necessarie per il monitoraggio del movimento.

Pre-creazione dei database di immagini aumentate

Se possibile, crea preventivamente i database di immagini aumentate in fase di sviluppo. Se è necessario creare database di immagini aumentate in fase di runtime o aggiungere dinamicamente immagini a un database esistente, assicurati di aggiungere immagini in un thread in background per evitare di bloccare il thread dell'interfaccia utente principale.

Limita il numero di stream della videocamera richiesti

Quando utilizzi la fotocamera condivisa Java, le app possono richiedere flussi di immagini di CPU o GPU aggiuntivi.