In questo articolo vedremo brevemente come creare un’applicazione Unity per Android in Realtà Aumentata, utilizzando ARFoundation e ARCore, in particolare come posizionare degli oggetti appartenenti al mondo virtuale nel mondo reale, utilizzando una libreria di immagini.
Get Started
Per creare questa applicazione avremo bisogno:
Android Build Support per Unity
N.B Questa guida è stata testata con Unity 2021.3.1f1
Crea il tuo progetto AR
- Puoi creare il progetto via Unity Hub come un progetto 3D standard.
Import ARFoundation + ARCore e prepare per il buld android
Dal progetto unity creato in precedenza click su Windows -> Package Manager, selezionare Packages: Unity Registry come da immagine sottostante e installare i pacchetti AR Foundation, ARCore XR Plugin
Ora cambiare il build del progetto e impostarlo su android, per fare questo click su File, Build Settings, selezionare Android e click su Switch Platform.
Inizializzare la scena AR
Ora siamo pronti per sviluppare il nostro progetto AR. Innanzitutto prepariamo la scena, dal pannello hierarchy rimuovere l’oggetto main camera esistente di default nel progetto, click con il tasto destro sul pannello hierarchy -> XR -> AR Session Origin, click di nuovo con il tasto destro sul pannello hierarchy -> XR -> AR Session Origin. A questo punto il progetto sarà nel pannello hierarchy come quello dell’immagine Import AR Session e AR Session Origin.
Assicuratevi inoltre che all’interno dell’oggetto AR Session Origin ci sia l’oggetto AR Camera e che il tag dell’oggetto sia MainCamera
Preparare il componente AR Session Origin per il Tracking
Il prossimo passo è quello di aggiungere una liberia di immagini per il tracking, per fare questo **click su AR Session Origin -> Add Component -> cercare image, e cliccare su AR Tracked Image **
Ora nell’oggetto AR Session Origin è presente anche AR Tracked Image Manager, dove:
- Reference Library: si riferisce alla collezione di immagini di cui la nostra applicazione si servirà per la detection;
- Max Number Of Moving Object: indica il numero di immagini in movimento da monitorare contemporaneamente, più immagini saranno selezionate più alto sarà il consumo della CPU;
- Tracked Image Prefab: questo prefab permette di creare un’istanza ogni volta che viene rilevata un’immagine dalla libreria di immagini di riferimento.
Per saperne di più sul AR Tracked Image Manager trovi alla fine dell’articolo i link alle fonti e alla documentazione ufficiale.
Creare la libreria di immagini da tracciare
Sull’asset di progetto click con il tasto destro -> Create -> XR-> Reference Image Library, potete lasciare il nome utilizzato di default. A questo punto importate un’immagine qualsiasi all’interno del vostro progetto, a volte con delle immagini che hanno un nome uppercase ci potrebbero essere dei problemi, assicuratevi che le immagini siano nel seguente formato: pinco.png, pallino.jpg.
Dall’inspector dell’oggetto ReferenceImageLibrary, cliccare sul bottone Select nel quadratino dell’immagine per la Texture 2D e selezionare l’immagine appena importata nell’asset di progetto.
A questo punto, spuntando la checkbox Specify Size puoi modificare le dimensioni, quelle della texture le prende in automatico mentre quelle fisiche definite in metri vengono settate dall’utente, puoi inserire 0.2 all’asse x e 0.2 all’asse y (Unity setta in automatico le proporzioni dell’immagine).
L’opzione Keet Texture at Runtime assicura che l’immagine venga caricata a runtime e quindi che sul nostro device non ci siano problemi di caricamento.
Puoi aggiungere altre immagini da tracciare cliccando su Add Image.
Settare il tracking con la libreria di immagini
Per configurare la nostra scena AR con la libreria di immagini appena create, selezione l’oggetto AR Session Origin e dall’inspector inserisci la libreria di immagini nel campo Reference Library. Nel campo Max Number Of Moving Object puoi inserire un valore a piacere, 4 è il trade off giusto tra performance ed efficacia dell’applicazione. A questo punto va aggiunto un prefab all’immagine da tracciare nel campo Tracked Image Prefab, per fare questo creiamo un 3D object semplice: click sul menù GameObject -> 3D Object -> Sphere, Riduciamo le dimensioni della sfera a 0.1, dall’ispector sul valore scale impostiamo un valore di 0.2 su tutti e 3 gli assi e settiamo la posizione dal campo position a 0.
A questo punto dall’ispector dell’oggetto AR Session Origin possiamo inserire nel campo Tracked Image Prefab la sfera appena creata.
Build & Run
Se avete eseguito tutti i passi correttamente ora potete testare l’applicazione su un device android.
Click su File -> Build And Run -> Click su Add Open Scene -> Click su Player Settings -> Click su XR Plug-in Management -> Abilitare ARCore. Poi ARCore -> Dal Player Settings rimuovere la spunta da Auto Graphics API, e rimuovere Vulkan dalle Graphics APIs. A questo punto, tornate alla schermata del build e click su Build o Build And Run se avete un device android già collegato e configurato.
Problemi e Trobleshooting
- Sul device l’applicazione parte ma vedo tutto nero -> In questo caso non è stato correttamente configurato ARCore, verifica di averlo abilitato nel Player Settings della schermata di Build.
- Errore Vulkan graphics API does not support ARCore -> Dal Player Settings rimuovere la spunta da Auto Graphics API, e rimuovere Vulkan dalle Graphics APIs.
- Errore Missing ARM64 architecture which is required for Android 64-bit devices -> Non è un errore ma solo un warning di progetto, un possibile fix è Project Settings > Player > Other Settings > Scripting Backend’ and select ARM64 in ‘Project Settings > Player > Other Settings > Target Architectures > IL2CPP.
Codice Sorgente
Su Github T1 - Tracking Image AR trovi l’intero progetto Unity.
Youtube
Questo tutorial è disponibile anche come video tutorial su youtube.
Fonti
AR Tracked Image Manager - Documentazione Unity
Grazie ☺