Featured image of post Unity AR Object Tracking e Realtà Aumentata con Vuforia

Unity AR Object Tracking e Realtà Aumentata con Vuforia

Breve guida su come creare un progetto Unity per il tracking AR di oggetti 3D scansionati con Polycam e modellati con Blender.

In questo articolo vedremo brevemente come tracciare con Vuforia un oggetto nel mondo reale e sovrapporre elementi virtuali. A partire dalla scansione 3D dell’oggetto con Polycam passando alla modellazione dell’oggetto grezzo con Blender fino alla creazione del modello da tracciare con Vuforia e l’applicazione finale Unity per Android (o iPhone).


Caratteristiche degli oggetti da tracciare

  1. Superficie: L’oggetto non deve essere costituito da materiale elastico, deformabile o trasparente.
  2. Dettagli: L’oggetto più è ricco di dettagli più sarà facile tracciarlo correttamente.
  3. Dimensioni: L’oggetto deve essere > di 2cm o superiore, questo perché le fotocamere degli smartphone potrebbero avere difficoltà con oggetti in miniatura.
  4. Posizione nello spazio: Il rilevamento funziona meglio se l’oggetto è statico e non si muove dopo la rilevazione, mentre l’utente può spostarsi liberamente intorno all’oggetto.
  5. Oggetti colorati: L’oggetto deve essere preferibilmente colorato sulla superficie in modo non omogeneo, quindi con sfumature di colori su una superficie colorata.
  6. Il modello scansionato dell’oggetto deve avere esattamente la stessa forma, è fondamentale che il modello CAD 3D prodotto sia quindi molto simile all’oggetto esistente, per un massimo del 10% di tolleranza secondo gli standard Vuforia.
  7. Un modello ideale dovrebbe avere massimo 400.000 poligoni o triangoli, massimo 20 parti e 5 texture.

Software & Tools

In questo articolo vedremo i seguenti software & tools

Le versioni Unity compatibili con Vuforia sono disponibili al seguente link https://library.vuforia.com/platform-support/supported-versions.

Scansione dell’oggetto

Polycam

Per effettuare la scansione dell’oggetto è necessario l’utilizzo di Polycam, applicazione cloud based per android necessaria per la scansione di oggetti 3D con la fotocamera dello smartphone. L’applicazione ha funzionalità aggiuntive a pagamento ma la versione free è più che sufficiente per il nostro progetto. Il primo passo è mettere l’oggetto su un piano libero da altri elementi e per quanto possibile anche da ombre, una volta posizionato è necessario raccogliere una quantità di fotogrammi utili al servizio cloud per la creazione del modello 3D, segui come esempio in video in basso.

Saranno necessari più tentativi prima di avere un risultato soddisfacente. A questo punto è possibile tracciare l’elemento desiderato, il risultato dovrà essere modellato con Blender se non è soddisfacente.

Una volta scansionato il nostro modello 3D dovremmo attendere qualche minuto prima che venga elaborato correttamente. Appena il modello 3D è pronto, va scaricato via computer dal sito ufficiale di Polycam, https://poly.cam/, per fare questo dovete accedere con il vostro account Polycam anche sul dispositivo mobile che avete utilizzato per tracciare l’oggetto 3D. Aprite il modello 3D elaborato e cliccate su Export per scaricare il file .glb (nella versione gratuita potete scaricare solo il file .glb).

Polycam 3D ModelPolycam Downlaod 3d Model

Modellazione 3D con Blender (Facoltativo)

Il modello 3D scaricato da Polycam, o altre applicazioni di 3D scan, presenta delle imperfezioni dovute alla superficie in cui è stato scansionato l’oggetto e alla qualità delle foto effettuate. Se l’oggetto è stato scansionato correttamente, puoi saltare questa parte

Utizzeremo le funzionalità base di blender per smussare e migliorare il modello 3D e per convertirlo in un formato che Unity può importare, anche se non l’hai mai utilizzato non è un problema, non faremo cose difficili, io stesso non sono un esperto di Blender.

Creiamo un nuovo progetto con blender, rimuoviamo il cubo centrale e importiamo il modello 3D scaricato da Polycam:

utilizzando il tasto centrale del mouse per ruotare sull’oggetto e i tasti tasto centrale del mouse + shift per spostarci, a questo punto possiamo selezionare gli elementi che vogliamo cancellare, premere il tasto del/canc ed eliminare i vectors o gli edges.

Una volta modificato possiamo esportare l’oggetto e siamo pronti ad importarlo nel database Vuforia. Nel video sottostante che trovi sul mio canale c’è una guida step by step su come modellare l’oggetto scansionato con Polycam, è una modellazione molto rudimentale però utile se il fine ultimo è il tracking dell’oggetto 3D.

Vuforia

Vuforia è uno strumento per lo sviluppo di applicazioni in realtà aumentata. Utilizza la tecnologia di visione artificiale per riconoscere e tracciare immagini planari e oggetti 3D in real time. Il primo passo è quello di creare un account vuforia e una licenza gratuita.

A questo punto potete scaricare il programma Vuforia Model Target Generator (Windows) per creare l’oggetto di riferimento da tracciare su Vuforia a partire dal modello Blender/Polycam.

Aprite il programma Model Target Generator di Vuforia e create un nuovo progetto cliccando su Create New Model Target e selezionate il modello CAD esportato con Blender.

La configurazione può essere eseguita in base alle esigenze che hai di tracciare l’oggetto, io ho usato quelle standard per il mio modellino di Auto. Puoi procedere passo passo seguendo le immagini in basso.

Creazione progetto Model Target GeneratorModel Up Vector Model UnitsModel Type Motion Hint Guide ViewsGenerate Standard Model Target

Una volta terminata la configurazione cliccando su Generate Standard Model Target, trovarai il dataset da importare in Unity e che sarà usato per il tracking, nella sottocartella dataset del path indicato durante la generazione del Model Target.

Puoi anche testare il risultato del tracking prima di importarlo in Unity, ti basterà creare il file zip della cartella in cui è stato creato il Model Target, installare sul tuo dispositivo l’applicazione Android/iOS Model Targets Test App. Una volta installata l’applicazione, dovrai darle in input il file zip che ha generato il Software Vuforia Model Target Generator, e se l’oggetto da tracciare viene riconosciuto correttamente puoi utilizzare il package, che troverai nella sotto cartella dataset, in Unity.

Unity

Creazione del progetto Unity

Il primo passo è quello di creare un nuovo progetto 3D con Unity.

Creazione progetto 3D Unity

Il prossimo è quello di aggiungere al proprio asset i package di Vuforia, disponibili al seguente link: https://assetstore.unity.com/packages/templates/packs/vuforia-engine-163598, questo passo non è necessario se già avete aggiunto al vostro asset o usato vuforia in precedenza; una volta aggiunto potete cliccare su open in unity oppure importarlo dalla schermata dei package del vostro progetto Unity (vedi foto in basso). Se vi dovesse chiedere di aggiungere dipendenze o fare l’upgrade di vuforia fatelo.

Creazione progetto 3D Unity

Vuforia Engine Setup

Dopo l’import, il motore Vuforia è visibile nel menu GameObject.

Se manca questo menu, potrebbe significare che il motore Vuforia non è stato importato correttamente.

Vuforia Engine

A questo punto prepariamo il motore di Vuforia per il riconoscimento AR delle immagini:

  1. Aggiungi un ARCamera GameObject dal menu Vuforia Engine, dal menù GameObject -> Vuforia Engine -> AR Camera, dopo aggiunta ricorda di eliminare la Main Camera di default del progetto;

  2. Seleziona ARCamera e dall’inspector seleziona la scheda Vuforia Behaviour (script) e click su Open Vuforia Engine configurator;

  3. Aggiungi la chiave di licenza Vuforia Developer generata in precedenza nel campo App License Key. Per una guida su come ottenere una chiave di licenza, vedere Vuforia License Manager.

Vuforia Environment Unity Configuration

Aggiungere Model Target alla scena

A questo punto dobbiamo utilizzare il model Target creato nel capitolo precedente, per importarlo in Unity click dal menù Assets -> Import Package -> Custom Package e selezionare il package del modello 3D da tracciare.

Importiamo nel nostro progetto il Model Target di Vuforia con: GameObject -> Vuforia Engine -> Model Target.

Ora dall’inspector del Model Target selezioniamo il database del nostro modello da tracciare, e sempre dall’inspector alla voce Guide View Mode selezioniamo GuideView2D, questo ci servirà per avere la guida 2D per tracciare l’oggetto al meglio, una volta fatte le vostre prove potete anche togliere la guida selezionando NoGuideView.

Model Target

Siamo pronti a tracciare il nostro oggetto!

Per verificare che il tracciamento sia corretto possiamo inserire un oggetto all’interno del Model Target, potete inserire anche un cilidro o un cubo di Unity, io ho scaricato un modellino della Ferrari SF15-T e importato nel progetto.

Prima di passare al prossimo step ricorda di salvare la scena.

Model Target con Ferrari f1

Preparare il Build Android

Prima di testare l’applicazione nel Game di Unity settare tutte le impostazioni per il build su Android, quindi selezioniamo File -> Build Settings -> Android -> Switch Platform. Ci vorrà qualche secondo/minuto.

Il prossimo passo è quello di configurare il Player Android:

  1. Click su Player Settings -> Player

  2. Nella scheda Resolution and Presentation selezionare Default Orientation: Auto Rotation*, per selezionare l’auto rotazione dello schermo del dispositivo Android.

  3. Nella scheda Other Settings rimuovere Vulkan dalle Graphics APIs, e selezionare come Minimum API Level: Android 9.0 (potete selezionare anche 8.0, ma se avete un dispositivo nuovo meglio 9.0), nel tab scriptingBackend selezionate IL2CPP.

Infine inizializzate il plugin XR senza però selezionare ARCore altrimenti la vostra applicazione non funzionerà.

Test

Prima del build su android potete testare la vostra applicazione lanciandola su Unity. Il alternativa basta effettuare il build e run.

2D GuideModel TrackingModel Tracking

Errori e Troubleshooting

L’applicazione non riconosce il modello

Se l’applicazione non riconosce il modello puoi utilizzare l’applicazione Android/ios di Vuforia Model Targets Test App, ti basterà creare il file zip della cartella in cui è stato creato il Model Target, installare sul tuo dispositivo l’applicazione Android/iOS ed importare il file zip con il modello che apparirà nell’applicazione sovrapposto in un contorno 2D.

Se hai difficoltà o errori scrivimi un commento o contattami privatamente dalla sezione ping me

Youtube Video e Codice Sorgente

Questo articolo è anche disponibile come Tutorial Youtube:

Il codice sorgente è disponibile su GitHub al seguente link: https://github.com/Francesco182g/Unity-AR-Tracking-Object-Example

Fonti

  1. https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@2.2/manual/tracked-image-manager.html
  2. https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@2.2/manual/index.html
  3. https://library.vuforia.com/model-targets/model-targets-supported-objects-cad-model-best-practices
  4. https://library.vuforia.com/model-targets/introduction-model-targets-unity

Grazie ☺

Condividi:
Create with Hugo, Theme Stack;
Sito creato e gestito da Francesco Garofalo;