Gli hit test posizionano gli oggetti virtuali nel mondo reale

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.