Guide specifiche per piattaforma
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
I contenuti AR devono essere posizionati e dimensionati correttamente per integrarsi in una scena. Come gli oggetti del mondo reale, gli oggetti virtuali più lontani devono apparire più piccoli. Puoi eseguire un hit-test (o un raycast in AR Foundation per Unity) per determinare il posizionamento corretto di un oggetto 3D nella scena. Il posizionamento corretto garantisce che i contenuti AR vengano sottoposti a rendering con le dimensioni (apparenti) appropriate.
Gli hit-test trovano le intersezioni tra la geometria 3D del mondo reale e un raggio virtuale costituito da un'origine e una direzione. I raggi con la videocamera del dispositivo come origine sono i più utilizzati, anche se ARCore include un'API per eseguire hit-test con un raggio arbitrario nelle coordinate dello spazio del mondo.
Immagina che ci sia un raggio che parte dalla fotocamera del dispositivo di un utente e si estende in avanti fino a colpire la geometria 3D della scena, ad esempio un pavimento, una parete o un oggetto. Quando ciò accade, ricevi un elenco di risultati dell'hit o intersezioni con la geometria della scena rilevata. L'elenco è ordinato in base alla distanza dal dispositivo, con l'intersezione più vicina per prima. Questo è importante perché in genere non puoi vedere gli oggetti occlusi dietro altri oggetti, quindi la maggior parte delle volte il primo risultato è il più significativo.

Contenuti di un risultato dell'hit
Un singolo risultato dell'hit viene restituito come un elenco con le seguenti informazioni per ogni risultato:
- Distanza dall'origine del raggio, in metri
- Posa (posizione e orientamento) del risultato dell'hit
- La geometria 3D che hai colpito, sotto forma di Trackable
Puoi quindi utilizzare il risultato dell'hit desiderato per posizionare in modo realistico i contenuti 3D utilizzando un ancoraggio.
Tipi di risultati dell'hit
Esistono quattro tipi di risultati dell'hit: profondità, piano, punto di funzionalità e posizionamento istantaneo. Ognuno ha i propri casi d'uso e compromessi, come mostrato nella tabella seguente.
| Tipo di risultato dell'hit | Descrizione | Orientamento | Caso d'uso |
|---|---|---|---|
| Profondità | Utilizza le informazioni sulla profondità dell'intera scena per determinare la profondità e l'orientamento corretti di un punto | Perpendicolare alla superficie 3D | Posiziona un oggetto virtuale su una superficie arbitraria (non solo su pavimenti e pareti) |
| Piano | Colpisce le superfici orizzontali e/o verticali per determinare la profondità e l'orientamento corretti di un punto | Perpendicolare alla superficie 3D | Posiziona un oggetto su un piano (pavimento o parete) utilizzando la geometria completa del piano. È necessario scalare correttamente immediatamente. Fallback per l'hit-test di profondità |
| Punto di funzionalità | Si basa sulle funzionalità visive intorno al punto di un tocco dell'utente per determinare la posizione e l'orientamento corretti di un punto | Perpendicolare alla superficie 3D | Posiziona un oggetto su una superficie arbitraria (non solo su pavimenti e pareti) |
| Posizionamento istantaneo (raycast persistente) | Utilizza lo spazio dello schermo per posizionare i contenuti. Inizialmente utilizza la profondità stimata fornita dall'app. Funziona immediatamente, ma la posa e la profondità effettiva cambieranno una volta che ARCore sarà in grado di determinare la geometria effettiva della scena | +Y che punta verso l'alto, opposto alla gravità | Posiziona un oggetto su un piano (pavimento o parete) utilizzando la geometria completa del piano in cui il posizionamento rapido è fondamentale e l'esperienza può tollerare la profondità e la scala iniziali sconosciute |
Compatibilità dei dispositivi
Gli hit-test funzionano su tutti i dispositivi supportati da ARCore, ma gli hit-test di profondità richiedono dispositivi che supportano la profondità.
Utilizzare i risultati dell'hit per posizionare i contenuti AR
Una volta ottenuto un risultato dell'hit, puoi utilizzare la sua posa come input per posizionare i contenuti AR nella scena.