Laborator AR 01. Vuforia
Ce e Vuforia
Vuforia Engine este un SDK (Software Development Kit) pentru crearea de aplicații ce integrează realitatea augmentată. Cu ajutorul Vuforia putem adăuga oricărei aplicații funcționalități complexe de computer vision. Astfel, putem dezvolta aplicații care să permită recunoașterea de imagini și obiecte și care să permită interacțiunea cu obiecte din lumea reală. Vuforia oferă suport atât pentru Android, cât și pentru iOS.
Adăugarea Vuforia în Unity
Vuforia Engine este disponibil sub forma unui pachet Unity care poate fi importat din meniu: Assets → Import Package → Custom Package….
Pachetul poate fi descărcat de aici.
Configurarea Vuforia
Vuforia Engine poate fi vizibil din meniul GameObject. Dacă în acest meniu nu este vizibil Vuforia Engine, înseamnă că Vuforia nu s-a adăugat în Unity.
Primul pas pentru a construi o aplicație folosind Vuforia este să adăugăm un obiect ARCamera. Acesta este un GameObject specific Unity, care simulează o cameră. Aceasta conține VuforiaBehaviour, necesar pentru a adăuga suport pentru aplicațiile AR.
Adăugați un GameObject de tipul ARCamera din meniul Vuforia Engine.
Ștergeți camera default din Unity. ARCamera conține deja o cameră.
Selectați ARCamera și Open Vuforia Configuration din Inspector.
Adăugați Vuforia Development License Key în App License Key.
Vuforia License Manager
Pentru a putea dezvolta aplicații folosind Vuforia Engine, avem nevoie de o licență. Orice licență poate fi folosită într-o singură aplicație. Deci va trebui să creăm o licență unică pentru fiecare aplicație care folosește Vuforia Engine.
Pentru a putea crea o licență avem nevoie de un cont de developer pe site-ul
Vuforia.
O licență poate fi cretă în meniul
License Manager (trebuie să fiți logați pentru a putea accesa acest meniu). De aici, apăsați butonul
Get Basic pentru a putea crea licența.
License Name: numele dorit pentru licență.
Licența va apărea în License Manager de unde o putem deschide (dând click pe ea), copia și adăuga în Unity.
Image Targets
Image Targets sunt imagini care pot fi detectate și urmărite de Vuforia. Vuforia detectează o astfel de imagine comparând feature-uri din conținutul unei imagi obținute de la cameră cu o imagine deja cunoscută dintr-o bază de date. Odată ce imagea target este detectată, Vuforia va urmări imaginea și va afișa conținut augmentat peste imagine.
Adăugarea de Image Targets
După activarea Vuforia Engine în Unity, putem adăuga feature-uri specifice Vuforia în proiect. Pentru început, o să importăm Vuforia Core Samples din Unity Asset Store. Astfel, vom avea un punct de start pentru a crea un prim proiect folosind Vuforia.
În continuare, vom prezenta pașii pentru a crea o scenă de bază AR în Vuforia:
Din meniul Vuforia Engine selectăm un GameObject de tipul Image Target.
Selectăm obiectul Image Target nou creat. Setăm Type
From Database (imaginile pot fi create online în
Vuforia Target Manager sau putem folosi imaginile deja existente în Vuforia Core Samples)
Dacă nu avem o bază de date cu Image Targets în proiect, ni se va cere să importăm baza de date default din Vuforia Core Samples (VuforiaMars_Images).
Selectăm o imagine din baza de date selectată.
Crearea unei Baze de Date Proprii
Accesăm meniul
Target Manager de pe site-ul Vuforia (trebuie să fiți logați).
Apăsăm butonul Generate Database pentru a crea o nouă bază de date.
După ce am creat baza de date, dăm click pe ea.
Pentru a popula baza de date, apasăm butonul Add Target.
Odată adăugată imaginea, după ce s-a procesat, vom primi un scor. Cu cât scorul e mai bun, cu atât sunt șanse mai mari ca imaginea să fie detectată de Vuforia.
După ce am adăugat toate imaginile dorite, descărcăm baza de date pentru Unity.
Vom obține un pachet Unity, pe care îl putem importa în proiect.
Odată importat, putem înlocui în obiectul Image Target baza de date default cu propria bază de date.
Adăugarea de Obiecte 3D
Acum putem adăuga obiecte pe care dorim să le augmentăm. Putem face acest lucru, adăugând un obiect 3D drept copil obiectului de tip Target Image. Automat vor fi făcute setările necesare pentru AR (DefaultObserverEventHandler.cs).
Citirea de Coduri de Bare
O altă funcționalitate Vuforia este aceea de a detecta și de a citi o serie de tipuri de coduri de bare și coduri QR. Astfel, folosind Vuforia putem identifica și citi coduri de bare 1D și 2D, folosind algoritmi de computer vision. La un moment de timp, putem detecta cel puțin un cod de bare.
Codurile de bare unidimensionale sunt utilizate frecvent pentru a reprezenta informații care nu necesită o capacitate mare de stocare, cum ar fi codurile de identificare ale produselor sau serial numbers. Printre formatele acceptate de Vuforia se numără:
UPC-A
UPC-E
EAN-8
EAN-13
Code 39
Code 93
Code 128
Codabar
ITF
Codurile bidimensionale stochează cantități mai mari de date și pot fi utilizate pentru a stoca informații mai complexe, cum ar fi adrese URL sau instrucțiuni de expediere, oferind în același timp capabilități mai bune de corectare a erorilor. Vuforia acceptă următoarele tipuri de coduri 2D:
QR-Code
DataMatrix
Aztec
PDF417
Micro QR Code
Pentru a seta ce tip de cod de bare să fie detectat este necesară componenta
Barcode Behaviour atașată pe un obiect din scenă.
Pentru a putea citi un cod de bare în Vuforia, trebuie făcuți următorii pași:
Adăugați un obiect Barcode from GameObject → Vuforia Engine → Barcode. Acesta conține componenta Barcode Behaviour.
Pentru a vedea mai bine când un cod de bare este detectat, puteți adăuga componenta Barcode Outline Behaviour obiectului Barcode. Această componentă desenează o mască peste codul de bare detectat.
Creați un script, BarcodeReader.cs, pe care să îl atașați obiectului Barcode.
using UnityEngine;
using Vuforia;
public class BarcodeReader : MonoBehaviour
{
BarcodeBehaviour mBarcodeBehaviour;
void Start()
{
mBarcodeBehaviour = GetComponent<BarcodeBehaviour>();
}
void Update()
{
if (mBarcodeBehaviour != null && mBarcodeBehaviour.InstanceData != null)
{
Debug.Log(mBarcodeBehaviour.InstanceData.Text);
}
}
}
Build the App
Pentru a putea face debugging live din Unity, din meniul de configurare al Vuforia Engine setăm Play Mode Type să fie WEBCAM.
Pentru a putea rula aplicația de pe telefon, trebuie să facem aceleași setări necesare pentru a face un build specific pentru telefon. Urmați pașii de
aici. Pe scurt, pentru Android:
Activați Developer Mode și USB Debugging pe telefon.
În Unity: File → Build Settings. Dublu click Android, apoi Switch Platform.
Adăugați scenele pe care doriți să le includeți în build.
Selectați Player Settings.
Completați Company Name și Product Name.
Înapoi în Build Settings, click Build and Run (telefonul conectat prin USB la calculator).
Tasks
Scheletul de cod pentru laborator poate fi descărcat de
aici.
Deschideți scena Vuforia din scheletul de cod.
Creați o nouă licență de development pentru Vuforia Engine.
Adăugați Vuforia Engine și Vuforia Core Samples în proiectul Unity.
Adăugați un nou target image din baza de date default.
Adăugați un obiect 3D de augmentat.
Adăugați o imagine custom pe post de target image și adăugați un obiect 3D asociat acestei imagini.
Adăugați un cititor de coduri QR în scenă și afișați textul decodat pe ecran.
Bonus. Când se citește orice cod QR din scenă, dacă există un model 3D augmentat, acesta va deveni animat (Hint! Modelele 3D din Vuforia Core Samples au și animații incluse).