Come creare un’app di realtà aumentata

La realtà aumentata (AR) è una tecnologia innovativa che permette di presentare una visione migliorata del mondo reale che ci circonda. Un buon esempio potrebbe essere la visualizzazione dei risultati delle partite incorporati accanto all’azione di calcio in diretta dal campo. L’incorporazione viene fatta tramite un’applicazione di realtà aumentata che rende un’immagine della telecamera dal vivo e aumenta un oggetto virtuale sopra l’immagine del mondo reale e lo visualizza sullo schermo di anteprima della telecamera utilizzando algoritmi di riconoscimento basati sulla visione.

In questo blog, spiegheremo il processo di sviluppo di un’applicazione AR campione utilizzando Qualcomm Vuforia SDK, uno dei migliori SDK disponibili per costruire applicazioni AR basate sulla visione per dispositivi mobili e tablet. Attualmente è disponibile per Android, iOS e Unity. L’SDK si prende cura delle complessità di livello più basso, che permettono agli sviluppatori di concentrarsi interamente sull’applicazione.

Panoramica concettuale

Iniziamo con una panoramica dei concetti chiave utilizzati nello spazio AR. È importante capirli prima di iniziare lo sviluppo di un’app AR.

  • Obiettivi – Sono oggetti del mondo reale o marcatori (come codici a barre o simboli). I target sono creati utilizzando Vuforia Target Manager. Una volta creati possono essere utilizzati per tracciare un oggetto e visualizzare il contenuto su di esso. I bersagli possono essere bersagli di immagine, bersagli cilindrici, bersagli definiti dall’utente o bersagli di parola, cornici di immagine 2D (marcatori di frame), pulsanti virtuali (che possono innescare un evento) o bersagli Cloud.
  • Contenuto – Per contenuto si intende un oggetto 2D/3D o video che vogliamo aumentare sopra un target. Per esempio visualizzando un’immagine o un video sopra l’obiettivo.
  • Textures – Una texture è un oggetto OpenGL formato da una o due immagini che hanno lo stesso formato immagine. Il sistema Vuforia AR converte il contenuto in texture e il sistema AR rende la texture da visualizzare sullo schermo di anteprima della fotocamera.
  • Java Native Interface – Nei campioni Vuforia Android, gli eventi del ciclo di vita sono gestiti in Java ma gli eventi di monitoraggio e il rendering sono scritti in nativo C ++. JNI può essere usato per comunicare tra Java e C++ in quanto permette le chiamate di metodi nativi da Java.
  • Occlusione – Significa tracciare un oggetto virtuale nascosto da un oggetto reale. La gestione della gestione dell’occlusione comporta l’istituzione di una relazione tra oggetti virtuali e reali utilizzando shader trasparenti e quindi visualizzando la grafica come se fossero all’interno di un oggetto del mondo reale.
  • OpenGL ES – Vuforia utilizza OpenGL ES internamente per il rendering della grafica 2D e 3D utilizzando un’unità di elaborazione grafica. OpenGL ES è specificamente progettato per smartphone e dispositivi embedded.

Componenti di Vuforia

Il diagramma sopra mostra i componenti principali dell’applicazione Vuforia AR.

  • Camera – Cattura il frame di anteprima e lo passa all’Image Tracker.
  • Convertitore di immagini – Il convertitore di formato pixel converte il formato predefinito della fotocamera in un formato adatto per il rendering OpenGL ES e tracking.
  • Tracker – Il tracker rileva e traccia gli oggetti del mondo reale nel frame di anteprima della fotocamera utilizzando algoritmi di riconoscimento delle immagini. I risultati sono memorizzati nell’oggetto di stato che viene passato al renderizzatore di sfondo video.
  • Video Background Renderer – Il renderizzatore rende l’immagine della telecamera memorizzata nell’oggetto di stato e la aumenta sullo schermo della telecamera.
  • Database dei dispositivi – Il database dei dispositivi o dataset contiene gli obiettivi creati utilizzando Target Manager. Contiene un file di configurazione XML e un file .dat binario.
  • Cloud Databases – Può essere creato utilizzando Target Manager e può contenere un database di fino a 1 milione di obiettivi, che può essere interrogato in fase di esecuzione.

Inizio sviluppo

TargetManager – Il primo passo è quello di creare obiettivi utilizzando Vuforia Target Manager da utilizzare come database di dispositivi. Per questo, è necessario prima fare la registrazione gratuita su Vuforia developer portal. Questo account può essere utilizzato per scaricare risorse da Vuforia e postare problemi sui forum Vuforia. Dopo il login,

  • Aprire TargetManager sul sito Vuforia come mostrato sopra e aprire la scheda Device Databases.
  • Fare clic su Create Database, Add Target. Si apre una nuova finestra di dialogo di destinazione.

  • Selezionate l’immagine che volete mostrare come destinazione dal vostro sistema locale. Sono supportate solo immagini JPG o PNG (solo RGB o in scala di grigi) di dimensioni inferiori a 2MB. Un’immagine target ideale dovrebbe essere ricca di dettagli e deve avere un buon contrasto e nessun modello ripetitivo.
  • Seleziona il tipo di target come immagine singola. Inserisci un valore arbitrario come larghezza e fai clic su create target. Dopo un breve tempo di elaborazione, l’obiettivo selezionato verrà creato.
  • Se la valutazione dell’obiettivo è più di tre, allora l’obiettivo può essere utilizzato per il monitoraggio. Una valutazione più alta indica che l’immagine è facilmente rintracciabile dal sistema AR.
  • Aggiungi altri obiettivi nello stesso modo. Seleziona gli obiettivi che vuoi scaricare e clicca su scarica obiettivi selezionati.
  • Il download conterrà un file <database_name>.xml e <database_name>.dat. Il file .xml contiene il database di immagini di destinazione mentre il file .dat è un file binario contiene informazioni sul database tracciabile.

Installazione e scaricare il codice di esempio

  • Assumendo che sei già loggato al tuo account Vuforia, andare avanti e scaricare Vuforia SDK per Android e campioni per Android
  • Estrarre la cartella Vuforia SDK e metterlo nella stessa cartella dove hai tenuto la tua cartella Android-SDK. Copia i campioni all’interno della directory vuota dei campioni nella cartella Vuforia SDK e importa il campione VideoPlayBack.
  • In Eclipse, vai su Window-Preferences e vai su Java-Build Path – Class Variables e crea una nuova variabile.
  • Aggiungere QCAR_SDK_ROOT nel campo Nome e selezionare voi Vuforia SDK cartella cliccando opzione cartella.
  • Verificare nel vostro progetto Java Build Path, vuforia.jar viene esportato sotto la scheda Ordine ed esportazioni.
  • Aprire copyVuforiaFiles.xml e sotto <fileset> dare percorso per armeabi-v7a. È possibile controllare il percorso nella directory build della vostra cartella Vuforia-SDK. Nel mio caso in Linux il percorso è : “/home/vineet/vineet/vuforia-sdk-android-2-8-8/build/lib/armeabi-v7a”
  • Il passo precedente genererà libVuforia.so file nella vostra directory libs progetto quando si costruisce ed eseguire l’applicazione.
  • L’applicazione demo contiene già 2 marcatori e file video che è possibile utilizzare per testare. Puoi stampare i marcatori dai file PDF nella cartella media della tua app.
  • Dopo aver eseguito l’app, si aprirà la schermata di visualizzazione della telecamera. Puntando la telecamera sul marcatore, un video apparirà sullo schermo sovrapposto al marcatore.

Flusso di lavoro dello sviluppatore

Quando un utente lancia l’applicazione campione, inizia a creare e caricare le texture chiamando loadTextures(). Qui le bitmap dalla cartella delle risorse vengono convertite in texture richieste dal motore Vuforia SDK per il rendering degli oggetti 3D sulla vista AR.

Simultaneamente l’app inizierà il processo di configurazione del motore chiamando initAR(). Qui l’app inizializzerà in modo asincrono il motore Vuforia SDK. Dopo un’inizializzazione riuscita, l’app inizia a caricare i dati dei tracker in modo asincrono. Caricherà e attiverà i set di dati dal file XML di destinazione creato utilizzando TargetManager.

Dopo la configurazione del motore, l’applicazione chiama initApplicationAR() dove creerà e inizializzerà la vista OpenGLES e allega un renderer ad essa, che è necessario per visualizzare il video in cima allo schermo della fotocamera se imagetarget viene trovato. Il renderer collegato alla vista OpenGL ES richiede il caricamento dei video attraverso VideoPlaybackHelper e chiama il metodo OpenGL DrawFrame() per tracciare i fotogrammi della telecamera. Durante questo processo vengono anche create le texture OpenGL dagli oggetti texture caricati all’inizio e le texture per i dati video.

L’applicazione chiama quindi startAR() per avviare la telecamera. Non appena la telecamera si avvia, il renderer inizia a tracciare i fotogrammi. Quando imageTarget viene trovato, l’applicazione visualizza il video. Il video può essere configurato per essere riprodotto automaticamente o può essere avviato su tap.

Tutte le risorse sono scaricate dall’app chiamando onDestroy() quando l’utente chiude l’app.

Conclusione

Con questo blog, abbiamo ora visto come possiamo usare Vuforia per tracciare ImageTarget e visualizzare video su di esso. Vuforia può essere utilizzato per molti scopi come il rilevamento del testo, la gestione dell’occlusione, la generazione di target in tempo reale dal cloud. Per saperne di più su Vuforia controllate developer.vuforia.com.

.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.