Crea un gioco di realtà aumentata in stile Pokémon GO con Vuforia

Cosa starai creando

1. Introduzione

Nel primo post di questa serie abbiamo parlato di quanto sia impressionante Vuforia per creare esperienze di Realtà Aumentata, e ora siamo pronti a mettere in pratica questi concetti in un'app vera e propria. In questo tutorial, inizieremo a giocare con Augmented Reality usando Vuforia su Unity 3D. Impareremo come impostare Vuforia e iniziare a sviluppare un gioco AR da zero, adottando una logica simile a quella utilizzata su Pokémon GO!

Non sarà necessario avere alcuna esperienza precedente su Unity o Vuforia per seguire questo tutorial.

Se vuoi approfondire, perché non apprendere uno dei concetti più fondamentali di AR, marcatori, nel nostro breve corso:

1.1. Ricapitolazione rapida: come funziona Vuforia?

Vuforia utilizza l'alimentazione della fotocamera del dispositivo combinata con i dati dell'accelerometro e del giroscopio per esaminare il mondo. Vuforia usa la visione artificiale per capire cosa "vede" sulla fotocamera per creare un modello dell'ambiente. Dopo aver elaborato i dati, il sistema può approssimativamente trovarsi nel mondo, conoscendo le sue coordinate: dove è su, giù, sinistra, destra e così via.

Se non sai cos'è Vuforia, dai un'occhiata al primo post di questa serie.

1.2. Cosa impareremo?

Questo tutorial è diviso in due parti. In questo, vedremo alcune particolarità di Vuforia su Unity 3D, impareremo come impostare l'ambiente, e inizieremo anche a sviluppare un piccolo gioco di AR chiamato Shoot the Cubes. Presteremo particolare attenzione al ARCamera Prefabbricato, una delle parti più importanti di Vuforia in Unity.

Nella seconda parte, continueremo a sviluppare il gioco Shoot the Cubes, aggiungendo l'interattività e rendendola più interessante. Questa sezione non entrerà troppo nelle particolarità di Vuforia, poiché l'idea sarà di esplorare alcune possibilità offerte da Unity per creare un'esperienza di Realtà Aumentata coinvolgente..

2. Vuforia su Unity

Unity è un motore di gioco popolare e potente che è facile da usare e può compilare giochi per più piattaforme. Ci sono alcuni vantaggi nell'usare Unity per creare esperienze AR con Vuforia. È possibile scegliere come target tutti i sistemi supportati da Vuforia, inclusi gli occhiali intelligenti. È più semplice da usare, grazie alle prefabbricate fornite dall'SDK di Vuforia. Usando solo Unity è possibile accedere a tutte le funzionalità disponibili su Vuforia.

2.1. Prefabbricati di Vuforia

Puoi accedere a tutte le funzionalità di Vuforia su Unity utilizzando i prefabbricati Vuforia. Tutto ciò che devi fare è trascinare l'oggetto sullo stage e configurarlo. Come suggerisce il nome, le prefabbricate sono come modelli per la creazione e la clonazione di oggetti Unity completi di componenti e proprietà. Ad esempio, il ImageTarget rappresenta immagini che possono essere utilizzate come target. Diamo un'occhiata ai prefabbricati Vuforia disponibili su Unity:

  • ARCamera: Il prefabbricato più importante Gestisce l'esperienza AR complessiva, controllando la qualità del rendering, definendo il centro del mondo, la fotocamera del dispositivo da utilizzare, gli obiettivi massimi da tracciare e così via. In questo tutorial concentreremo i nostri sforzi sulla comprensione di come utilizzare questo oggetto.
  • obiettivi: Tutti gli obiettivi Vuforia hanno il loro prefabbricato: ImageTarget, multitarget, CylinderTarget, ObjectTarget, UserDefinedTargetBuilder, VuMark, FrameMarker. Questi obiettivi saranno riconosciuti dal ARCamera e iniziare un'azione, come esporre un oggetto 3D o un'animazione.
  • CloudRecognition: Utilizzato per accedere ai target definiti nel sistema cloud Vuforia.
  • SmartTerrain e Puntello: Questi oggetti sono utilizzati nella funzione Smart Terrain.
  • TextRecognition e parola: Prefabbricati utilizzati nella funzione di riconoscimento del testo.
  • VirtualButton: Vuforia può comprendere i Target come pulsanti che possono essere premuti fisicamente dall'utente. Questo prefabbricato ti aiuterà a utilizzare questa risorsa.

3. Creare la nostra prima esperienza AR

Il gioco che svilupperemo è semplice, ma illustra bene i principi della Realtà Aumentata e ci insegnerà alcuni dei fondamenti di Vuforia. L'obiettivo del gioco è quello di trovare e sparare cubetti che volano in giro per la stanza. Il giocatore cercherà i cubi usando il suo dispositivo e "tocca" per sparare sulle scatole. Non ci interesseremo con punteggio, livello o qualcosa del genere, ma puoi facilmente espandere questi aspetti del gioco da solo.

3.1. Preparare l'unità per Vuforia

Prima di iniziare a giocare, dovremo preparare Unity per Vuforia. Il processo è abbastanza semplice e in pratica è necessario importare il pacchetto SDK di Vuforia e aggiungere un ARCamera prefabbricato al nostro progetto.

  • Crea un account sviluppatore su Vuforia.
  • Effettua il login e scarica l'SDK Vuforia per Unity.
  • Apri Unity e crea un nuovo progetto chiamato "Spara ai cubi".
  • Dopo l'apertura della finestra del progetto Unity, vai a Risorse> Importa pacchetto> Pacchetto personalizzato e seleziona l'SDK scaricato.
  • Importa tutto.
  • Elimina il telecamera oggetto nel Gerarchia finestra.
  • Vai a License Manager sul portale per sviluppatori di Vuforia e crea una nuova licenza utilizzando il tuo account sviluppatore.
  • Copia la chiave di licenza.
  • Torna a Unità, nel Progetto finestra, vai a Asset> Vuforia> Prefabbricati> ARCamera.Seleziona l'elemento e trascinalo su Gerarchia finestra.
  • Con ARCamera selezionato, nel Ispettore pannello, vai a Vuforia Behavior (Script), trova il campo Chiave di licenza dell'app, e incolla la licenza che hai creato nel portale per sviluppatori di Vuforia.
  • Clicca il Applicare pulsante vicino alla cima del Ispettore riquadro per aggiungere la chiave di licenza a tutti ARCamera prefabbricati su questo progetto.

3.2. Verifica se Vuforia funziona

È tempo di controllare se l'ambiente funziona correttamente. 

Uso della fotocamera del computer

Se hai una webcam sul tuo computer, puoi premere il pulsante di riproduzione di Unity per verificare se il ARCamera sta lavorando. Sarà possibile riconoscere i bersagli usando la webcam; tuttavia, non sarà possibile utilizzare alcun dato del sensore per testare la tua esperienza AR. Se l'alimentazione della telecamera non mostra il Gioco finestra, è possibile che la fotocamera non sia compatibile con il profilo webcam fornito da ARCamera

Configurazione dell'applicazione per l'esecuzione su un dispositivo

Il modo migliore per testare l'applicazione Vuforia è direttamente sul dispositivo. Compileremo il progetto per Android, ma gli stessi passaggi si applicano ai dispositivi iOS.

  • Per prima cosa, dobbiamo salvare la scena su cui stiamo lavorando. Vai a File> Salva scena.
  • Seleziona il Risorse cartella e creare una nuova cartella chiamata scene.
  • Salva questa scena come ShootTheCubesMain.
  • Vai a File> Impostazioni di creazione.
  • Selezionare androide e fare clic su Switch Platform. Se questa opzione è disabilitata, dovrai scaricare l'Unity SDK desiderato per il dispositivo.
  • Clicca su Impostazioni del giocatore e configurare il progetto nel Ispettore finestra.
  • Presta attenzione ad alcune opzioni: Disattiva il API grafica automatica e assicurati che OpenGLES2 è selezionato per API grafica opzione.
  • Digitare il Identificativo del pacchetto.
  • Per i dispositivi Android, assicurati che il Livello API minimo selezionato è API 9 o maggiore. Dovrai anche usarlo ARMv7 per il Filtro dispositivo opzione.
  • Se hai seguito correttamente i passaggi, il progetto è pronto per essere costruito. Tuttavia, se è la prima volta che si compila un progetto Unity per Android o iOS, è necessario configurare Unity per tali dispositivi. Segui questa guida per Android e questo per iOS.
  • Per eseguire il progetto, torna a Costruisci le impostazioni e fare clic su Costruisci ed esegui.

Dopo la costruzione, l'applicazione verrà installata sul tuo dispositivo. Per ora, tutto ciò che dovresti aspettarti è vedere il feed della videocamera sul tuo dispositivo senza errori. Se hai capito, tutto ha funzionato correttamente.

3.3. Utilizzo del prefabbricato ARCamera

L'obiettivo del gioco Shoot the Cubes è quello di cercare e sparare cubetti volanti usando la fotocamera e i sensori del dispositivo. Questo approccio è simile a quello usato su Pokémon GO. Per realizzare questo, avremo solo bisogno di usare la Vuforia ARCamera prefabbricato.

Ci sono molti script allegati al ARCamera. Per ora, l'unico che devi capire è il Comportamento di Vuforia script. Diamo un'occhiata alle sue opzioni:

  • Chiave di licenza dell'app: Dove deve essere inserita la chiave di licenza Vuforia.
  • Modalità dispositivo fotocamera: Controlla la qualità di rendering degli oggetti.
  • Immagini tracciate simultanee massime: Definisce i bersagli massimi tracciati allo stesso tempo. Vuforia non ne consiglia più di cinque in una volta.
  • Max Tracciati simultanei: Definisce gli oggetti massimi tracciati allo stesso tempo. Di nuovo, Vuforia non ne consiglia più di cinque allo stesso tempo.
  • Carica obiettivi oggetto sul rilevamento: Carica l'oggetto associato al target non appena viene rilevato il target.
  • Direzione della telecamera: Scegli quale videocamera del dispositivo usare.
  • Mirror Video Background: Definisce se il feed della telecamera deve essere specchiato.
  • Modalità Word Center: L'opzione più pertinente per il nostro progetto. Definisce come il sistema dovrebbe localizzare il centro del mondo. 
    • SPECIFIC_TARGET: Utilizza un obiettivo specifico come riferimento per il mondo.
    • FIRST_TARGET: Il primo obiettivo rilevato verrà utilizzato come riferimento per il mondo.
    • TELECAMERA: Utilizza la fotocamera come punto di riferimento per il mondo.
    • DEVICE_TRACKING: Utilizza il sensore del dispositivo come riferimento per impostare le posizioni del mondo. Questa è l'opzione che dobbiamo scegliere per il nostro piccolo progetto.

Per ora, tutto ciò che devi cambiare nel ARCamera è il Modalità Word Center. Clicca sul ARCamera elemento nella gerarchia e nel Ispettore riquadro, cambia il Modalità World Center a DEVICE_TRACKING.

3.4. Usando il sensore del dispositivo per trovare il centro del mondo

Aggiungiamo un cubo allo stage e testiamo se ARCamera funziona correttamente.

  • Assicurati che ARCameraLa posizione e la rotazione sono impostate su 0 sugli assi X, Y e Z..
  • Creare un Cubo oggetto da Oggetto del gioco> Oggetto 3D> Cubo.
  • Muovi il cubo Posizione sul Z asse a 10 e 0 sul X e Y.
  • Scala l'oggetto a 2 sul XY, e Z asse.
  • Ruotare il cubo 45 gradi sul X e Y asse.
  • È possibile premere il pulsante di riproduzione per verificare se il cubo è posizionato correttamente.
  • Una volta che sei sicuro che il cubo è posizionato correttamente, ricostruisci il progetto e testalo sul dispositivo. Per costruire, vai a File> Crea ed esegui.

Dovrai guardarti intorno ruotando il tuo dispositivo per trovare il cubo. Noterai che l'oggetto rimane fermo nello stesso punto, anche dopo averlo allontanato. È come se il cubo "esista" nel mondo reale, ma può essere visto solo con la fotocamera del dispositivo.

3.5. Impostazione della posizione degli elementi secondo ARCamera

Il primo problema con la nostra applicazione è che il cubo può apparire ovunque e l'utente dovrà guardarsi attorno per trovarlo. Poiché il centro del mondo è definito in base ai sensori del dispositivo, non possiamo essere sicuri della posizione effettiva degli elementi. Questo perché l'utente può iniziare con il dispositivo con qualsiasi orientamento e poiché il modo in cui viene misurata la rotazione varia da dispositivo a dispositivo.

Per assicurarsi che le entità AR inizino dal punto di vista dell'utente, l'approccio più semplice è aspettare che Vuforia definisca il centro del mondo e trovare il ARCamera rotazione e quindi per organizzare la posizione di partenza degli elementi secondo tale orientamento.

Creeremo un Responsabile spawn per definire la posizione dei cubi da generare. Il manager definirà la sua posizione secondo il ARCamera rotazione. Attenderà fino a quando non viene impostata la rotazione, quindi sposta 10 unità nella parte anteriore della videocamera.

  • Crea due oggetti vuoti con Oggetto del gioco> Crea vuoto. Fai clic destro su uno degli oggetti che hai appena creato e rinominalo _SpawnController.
  • Cambia il nome dell'altro oggetto vuoto in _GameManager.
  • Nel Progetto finestra, selezionare il Risorse cartella e creare una nuova cartella chiamata Script.
  • Nel Script cartella, creare uno script C # chiamato SpawnScript.
  • Trascina il SpawnScript al _SpawnController.
  • Fare doppio clic su SpawnScript per modificarlo.

Per prima cosa aggiungiamo il pacchetto Vuforia.

usando UnityEngine; usando System.Collections; // Avremo bisogno di usare il pacchetto Vuforia per // assicurarsi che tutto funzioni usando Vuforia; classe pubblica SpawnScript: MonoBehaviour 

Accedere ARCamera, uso Camera.main. Creiamo una funzione per ottenere la posizione della telecamera e impostare il cubo da generare 10 unità in avanti da questo punto.

spawnScript di classe pubblica: MonoBehaviour // Definire la posizione se l'oggetto // in base alla posizione di ARCamera bool privato SetPosition () // ottiene la posizione della telecamera Transform cam = Camera.main.transform; // imposta la posizione 10 unità in avanti dalla posizione della telecamera transform.position = cam.forward * 10; ritorna vero; 

Cambiamo la posizione solo una volta dal Inizio funzione. Cambiare posizione è una coroutine che attenderà un po 'di tempo prima di impostare la posizione.

 private bool mPositionSet; void Start () // Definizione della posizione di spawn StartCoroutine (ChangePosition ());  // Useremo una Coroutine per dare un piccolo // ritardo prima di impostare la posizione IEnumerator privato ChangePosition () yield return new WaitForSeconds (0.2f); // Definisce la posizione Spawn una sola volta se (! MPositionSet) // cambia la posizione solo se Vuforia è attivo se (VuforiaBehaviour.Instance.enabled) SetPosition ();  

Proviamo lo script:

  • Di nuovo in Unity, fai clic su _SpawnController oggetto e uso Oggetto del gioco> Oggetto 3D> Sfera inserire una sfera all'interno _SpawnController
  • Seleziona la sfera e assicurati che la sua posizione sia impostata su 0 sugli assi X, Y e Z.. 
  • Ora sovrapponiamo il cubo e _SpawnController così puoi notare l'importanza della sceneggiatura. Selezionare _SpawnController e imposta la sua posizione su 0 sull'asse X e Y e su 10 sull'asse Z, la stessa posizione del cubo. 

Gli elementi iniziano a sovrapporsi; tuttavia, una volta creato ed eseguito l'applicazione su un dispositivo, vedrai che il file _SpawnController e la sua sfera apparirà davanti alla telecamera, e il cubo sarà in un altro posto. Vai avanti e provalo! Assicurati di guardare il dispositivo giusto all'avvio dell'app.

4. Conclusione

Congratulazioni, hai creato la tua prima esperienza in Realtà Aumentata. Sì, è un po 'approssimativo, ma funziona! In questo tutorial hai imparato come utilizzare il prefabbricato principale di Vuforia in Unity, il ARCamera. Hai anche imparato come configurarlo e come usare i sensori del dispositivo per creare l'illusione che un oggetto virtuale sia inserito nel mondo.

4.1. Qual'è il prossimo?

Nel prossimo tutorial miglioreremo questo principio per creare un vero gioco e un'esperienza più coinvolgente. Continueremo a sviluppare il gioco Shoot the Cubes, aggiungendo un po 'di interattività ed esplorando le possibilità di Unity per la creazione di un gioco AR interessante. Faremo in modo che i cubi si generino e volino in giro, e lasceremo che il giocatore li cerchi e li distrugge sparando un laser dal dispositivo.

A presto!

Un ringraziamento speciale per il immagine vettoriale disegnata da Freepik, sotto licenza Creative Commons CC BY-SA.