La profondità aggiunge realismo

Guide specifiche per piattaforma

In qualità di sviluppatore di app di AR, vuoi integrare perfettamente il virtuale con il reale per i tuoi utenti. Quando un utente posiziona un oggetto virtuale nella sua scena, vuole che sembri appartenere al mondo reale. Se stai creando un'app per consentire agli utenti di acquistare mobili, vuoi che siano certi che la poltrona che stanno per acquistare si adatti al loro spazio.

La Depth API 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 utilizzare le informazioni fornite da un'immagine di profondità per offrire esperienze utente immersive e realistiche.

Casi d'uso per lo sviluppo con la Depth API

La Depth API può alimentare l'occlusione degli oggetti, migliorare l'immersione e offrire nuove interazioni che aumentano il realismo delle esperienze AR. Di seguito sono riportati alcuni modi in cui puoi utilizzarla nei tuoi progetti. Per esempi di Depth in azione, esplora le scene di esempio in ARCore Depth Lab, che mostra diversi modi per accedere ai dati di profondità. Questa app Unity è open source su GitHub.

Abilitare l'occlusione

L'occlusione, ovvero il rendering accurato di un oggetto virtuale dietro gli oggetti del mondo reale, è fondamentale per un'esperienza AR immersiva. Considera un Andy virtuale che un utente potrebbe voler posizionare in una scena contenente un baule accanto a una porta. Se il rendering viene eseguito senza occlusione, l'Andy si sovrapporrà in modo non realistico al bordo del baule. Se utilizzi la profondità di una scena e comprendi la distanza dell'Andy virtuale rispetto all'ambiente circostante, ad esempio il baule di legno, puoi eseguire il rendering accurato dell'Andy con l'occlusione, rendendolo molto più realistico nell'ambiente circostante.

Trasformare una scena

Mostra all'utente un nuovo mondo immersivo eseguendo il rendering di fiocchi di neve virtuali che si depositano sulle braccia e sui cuscini dei divani o avvolgendo il soggiorno in una nebbia nebbiosa. Puoi utilizzare Depth per creare una scena in cui le luci virtuali interagiscono, si nascondono dietro e riaccendono gli oggetti reali.

Distanza e profondità di campo

Devi mostrare che qualcosa è lontano? Puoi utilizzare la misurazione della distanza e aggiungere effetti di profondità di campo, ad esempio sfocando lo sfondo o il primo piano di una scena, con la Depth API.

Consentire le interazioni utente con gli oggetti AR

Consenti agli utenti di "toccare" il mondo tramite la tua app consentendo ai contenuti virtuali di interagire con il mondo reale tramite collisioni e fisica. Fai in modo che gli oggetti virtuali superino gli ostacoli del mondo reale o che le palline di vernice virtuali colpiscano e si spargano su un albero del mondo reale. Quando combini 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 planari funzionano solo su superfici planari con texture, mentre gli hit test di profondità sono più dettagliati e funzionano anche su aree non planari e con texture ridotte. Questo perché gli hit test di profondità utilizzano le 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 planari standard e gli Andy rossi rappresentano gli hit test di profondità.

Compatibilità dei dispositivi

La Depth API è supportata solo sui dispositivi con la potenza di elaborazione necessaria per supportare la profondità e deve essere abilitata manualmente in ARCore, come descritto in Abilitare la profondità.

Alcuni dispositivi potrebbero anche fornire un sensore di profondità hardware, ad esempio un sensore time-of-flight (ToF). Consulta la pagina Dispositivi supportati da ARCore per un elenco aggiornato dei dispositivi che supportano la Depth API e un elenco dei dispositivi che dispongono di un sensore di profondità hardware supportato, ad esempio un sensore ToF.

Immagini di profondità

La Depth API utilizza un algoritmo di profondità dal movimento per creare immagini di profondità, che forniscono una visualizzazione 3D del mondo. Ogni pixel in un'immagine di profondità è associato a una misurazione della distanza della scena dalla fotocamera. Questo algoritmo acquisisce più immagini del dispositivo da angolazioni diverse e le confronta per stimare la distanza da ogni pixel mentre un utente sposta lo smartphone. Utilizza in modo selettivo il machine learning per aumentare l'elaborazione della profondità, anche con un movimento minimo da parte di un utente. Sfrutta anche qualsiasi hardware aggiuntivo che il dispositivo di un utente potrebbe avere. Se il dispositivo ha un sensore di profondità dedicato, ad esempio ToF, l'algoritmo unisce automaticamente i dati di tutte le origini disponibili. In questo modo, l'immagine di profondità esistente viene migliorata e la profondità è abilitata anche quando la fotocamera non è in movimento. Fornisce inoltre una profondità migliore sulle superfici con poche o nessuna funzionalità, ad esempio pareti bianche, o in scene dinamiche con persone o oggetti in movimento.

Le immagini seguenti mostrano un'immagine della fotocamera di un corridoio con una bicicletta sulla parete e una visualizzazione dell'immagine di profondità creata dalle immagini della fotocamera. Le aree in rosso sono più vicine alla fotocamera, mentre le aree in blu sono più lontane.

Profondità dal movimento

I dati di profondità diventano disponibili quando l'utente sposta il dispositivo. L'algoritmo può ottenere stime di profondità robuste e accurate da 0 a 65 metri di distanza. I risultati più accurati si ottengono quando il dispositivo si trova a una distanza compresa tra mezzo metro e circa cinque metri dalla scena del mondo reale. Le esperienze che incoraggiano l'utente a spostare maggiormente il dispositivo otterranno risultati sempre migliori.

Acquisire immagini di profondità

Con la Depth API, puoi recuperare le immagini di profondità che corrispondono a ogni frame della fotocamera. Un'immagine di profondità acquisita ha lo stesso timestamp e le stesse caratteristiche intrinseche del campo visivo della fotocamera. I dati di profondità validi sono disponibili solo dopo che l'utente ha iniziato a spostare il dispositivo, poiché la profondità viene acquisita dal movimento. Le superfici con poche o nessuna funzionalità, ad esempio le pareti bianche, saranno associate a una profondità imprecisa.

Passaggi successivi

  • Dai un'occhiata ad ARCore Depth Lab, che mostra diversi modi per accedere ai dati di profondità.