Guide specifiche per la piattaforma
Android (Kotlin/Java)
Android NDK (C)
Unity (Elementi di base AR)
Motore irreale
In qualità di sviluppatore di app AR, vuoi che i tuoi utenti mescolino perfettamente il virtuale con quello reale. Quando un utente inserisce un oggetto virtuale nella propria scena, vuole che appartenga al mondo reale. Se stai creando un'app che consenta agli utenti di acquistare mobili, vuoi che siano sicuri che la poltrona che stanno per acquistare si adatta al loro spazio.
L'API Depth aiuta la fotocamera di un dispositivo a comprendere le dimensioni e la forma degli oggetti reali in una scena. Crea immagini di profondità o mappe di profondità, aggiungendo così un livello di realismo alle tue app. Puoi usare le informazioni fornite da un'immagine di profondità per offrire esperienze utente immersive e realistiche.
Casi d'uso per lo sviluppo con l'API Depth
L'API Depth può supportare l'occlusione degli oggetti, una migliore immersione e nuove interazioni che migliorano il realismo delle esperienze AR. Di seguito sono riportati alcuni modi per utilizzarlo nei tuoi progetti. Per esempi di profondità in azione, esplora le scene di esempio nel ARCore Depth Lab, che illustra diversi modi per accedere ai dati di profondità. Questa app Unity è open source su GitHub.
Attiva occlusione
L'occlusione, o il rendering accurato di un oggetto virtuale dietro oggetti del mondo reale, è fondamentale per un'esperienza AR immersiva. Prendiamo come esempio un Andy virtuale che un utente potrebbe voler collocare in una scena che contiene un bagagliaio accanto a una porta. Rappresentato senza occlusione, Andy si sovrapporrà in modo irrealistico al bordo del tronco. Se usi la profondità di una scena e comprendi quanto è distante l'Andy virtuale rispetto all'ambiente circostante come il tronco di legno, puoi eseguire il rendering dell'Andy con occlusione, rendendolo molto più realistico nell'ambiente circostante.
Trasformare una scena
Mostra ai tuoi utenti un mondo nuovo e immersivo simulando fiocchi di neve virtuali sulle braccia e sui cuscini del divano o creando il salotto nella nebbia nebbiosa. Puoi usare la profondità per creare una scena in cui delle luci virtuali interagiscono, si nascondono dietro e illuminano gli oggetti reali.
Distanza e profondità di campo
Hai bisogno di mostrare che qualcosa è lontano? Puoi utilizzare la misurazione della distanza e aggiungere effetti di profondità di campo, come la sfocatura dello sfondo o del primo piano di una scena, con l'API Depth.
Abilita le interazioni degli utenti con gli oggetti AR
Consenti agli utenti di "toccare" il mondo attraverso la tua app consentendo ai contenuti virtuali di interagire con il mondo reale attraverso scontri e leggi fisiche. Fai in modo che oggetti virtuali superino ostacoli reali o fai colpire e schiacciare paintball virtuali su un albero del mondo reale. Combinando la collisione basata sulla profondità con la fisica del gioco, puoi dare vita a un'esperienza.
Migliorare gli hit test
La profondità può essere utilizzata per migliorare i risultati degli hit test. Gli hit test piani funzionano solo su superfici planari con texture, mentre quelli di profondità sono più dettagliati e funzionano anche su aree non planari e con texture bassa. Questo perché gli hit test di profondità utilizzano informazioni sulla profondità della scena per determinare la profondità e l'orientamento corretti di un punto.
Nell'esempio seguente, gli Andy verdi rappresentano gli hit test del piano standard, mentre gli Andy rossi rappresentano gli hit test di profondità.
Compatibilità del dispositivo
L'API Depth è supportata solo sui dispositivi che supportano questa potenza di elaborazione di profondità e deve essere attivata manualmente in ARCore, come descritto in Attiva profondità.
Alcuni dispositivi potrebbero anche fornire un sensore di profondità hardware, ad esempio il tempo di volo (ToF). Consulta la pagina Dispositivi supportati da ARCore per una un elenco aggiornato dei dispositivi che supportano l'API Depth e un elenco di dispositivi che Disporre di un sensore di profondità hardware supportato, ad esempio un sensore ToF.
Immagini profondità
L'API Depth utilizza un algoritmo depth-from-motion per creare immagini depth, che offrono una visione 3D del mondo. Ogni pixel in un'immagine di profondità è associato a una misurazione della distanza della scena dalla fotocamera. Questo algoritmo prende più immagini del dispositivo da diverse angolazioni e le confronta per stimare la distanza da ogni pixel mentre l'utente muove lo smartphone. Utilizza il machine learning in modo selettivo per aumentare l'elaborazione della profondità, anche con il minimo movimento di un utente. Sfrutta inoltre qualsiasi hardware aggiuntivo che potrebbe avere il dispositivo di un utente. Se il dispositivo è dotato di un sensore di profondità dedicato, come ToF, l'algoritmo unisce automaticamente i dati provenienti da tutte le fonti disponibili. Questa opzione migliora l'immagine di profondità esistente e consente la profondità anche quando la fotocamera non è in movimento. Offre inoltre una maggiore profondità su superfici con poche o nessuna caratteristica, come i muri bianchi, oppure in scene dinamiche con persone o oggetti in movimento.
Le seguenti immagini mostrano l'immagine di una fotocamera di un corridoio con una bicicletta sul muro e una visualizzazione dell'immagine di profondità creata dalle immagini della fotocamera. Le aree in rosso sono più vicine alla fotocamera, mentre quelle in blu sono più lontane.
Profondità dal movimento
I dati sulla profondità diventano disponibili quando l'utente sposta il dispositivo. L'algoritmo può ottenere stime di profondità affidabili e accurate da 0 a 65 metri di distanza. I risultati più precisi si ottengono quando il dispositivo si trova da mezzo metro a circa cinque metri di distanza dalla scena del mondo reale. Le esperienze che incoraggiano l'utente a muovere di più il proprio dispositivo otterranno risultati sempre migliori.
Acquisisci immagini di profondità
Con l'API Depth, puoi recuperare immagini di profondità corrispondenti a ogni fotogramma della fotocamera. Un'immagine di profondità acquisita ha lo stesso timestamp e lo stesso campo visivo della fotocamera. Sono disponibili dati validi sulla profondità solo dopo che l'utente ha iniziato a spostare il dispositivo, poiché la profondità viene acquisita dal movimento. Le superfici con poche caratteristiche o nessuna, come le pareti bianche, saranno associate a una profondità imprecisa.
Passaggi successivi
- Dai un'occhiata al ARCore Depth Lab, che illustra diversi modi per accedere a dati di profondità.