Cum se creează o aplicație de realitate augmentată

Realitatea augmentată (AR) este o tehnologie inovatoare care vă permite să prezentați o imagine îmbunătățită a lumii reale din jurul dumneavoastră. Un bun exemplu ar fi afișarea scorurilor meciurilor încorporate alături de acțiunea de fotbal în direct de pe teren. Încorporarea se face prin intermediul unei aplicații de realitate augmentată care redă o imagine live a camerei și mărește un obiect virtual deasupra imaginii din lumea reală și îl afișează pe ecranul de previzualizare al camerei dvs. folosind algoritmi de recunoaștere pe bază de viziune.

În acest blog, vom explica procesul de dezvoltare a unui exemplu de aplicație AR folosind Qualcomm Vuforia SDK, unul dintre cele mai bune SDK-uri disponibile pentru a crea aplicații AR bazate pe viziune pentru dispozitive mobile și tablete. În prezent, este disponibil pentru Android, iOS și Unity. SDK-ul se ocupă de complexitățile de cel mai mic nivel, ceea ce permite dezvoltatorilor să se concentreze în întregime asupra aplicației.

Prezentare generală a conceptelor

Vom începe cu o prezentare generală a conceptelor cheie utilizate în spațiul AR. Este important să le înțelegeți înainte de a începe dezvoltarea unei aplicații AR.

  • Ținte – Sunt obiecte sau markeri din lumea reală (cum ar fi codurile de bare sau simbolurile). Țintele sunt create cu ajutorul Vuforia Target Manager. Odată create, acestea pot fi utilizate pentru a urmări un obiect și a afișa conținut peste el. Țintele pot fi ținte de imagine, ținte cilindrice, ținte definite de utilizator sau ținte de cuvinte, cadre de imagine 2D (markeri de cadre), butoane virtuale (care pot declanșa un eveniment) sau ținte Cloud.
  • Conținut – Prin conținut înțelegem un obiect 2D/3D sau un videoclip pe care dorim să îl mărim deasupra unei ținte. De exemplu, afișarea unei imagini sau a unui videoclip deasupra țintei.
  • Texturi – O textură este un obiect OpenGL format din una sau două imagini care au același format de imagine. Sistemul Vuforia AR convertește conținutul în textură, iar sistemul AR redă textura pentru a o afișa pe ecranul de previzualizare al camerei.
  • Interfață nativă Java – În mostrele Vuforia Android, evenimentele ciclurilor de viață sunt gestionate în Java, dar evenimentele de urmărire și redarea sunt scrise în C++ nativ. JNI poate fi utilizată pentru a comunica între Java și C++, deoarece permite apelarea metodelor native din Java.
  • Ocluzie – Aceasta înseamnă urmărirea unui obiect virtual ascuns de un obiect real. Gestionarea managementului de ocluzie implică stabilirea unei relații între obiectele virtuale și cele reale prin utilizarea de shaderi transparenți și, prin urmare, afișarea graficii ca și cum s-ar afla în interiorul unui obiect din lumea reală.
  • OpenGL ES – Vuforia utilizează OpenGL ES în mod intern pentru redarea graficii 2D și 3D utilizând o unitate de procesare grafică. OpenGL ES este conceput special pentru smartphone-uri și dispozitive încorporate.

Componente Vuforia

Schema de mai sus prezintă componentele de bază ale aplicației Vuforia AR.

  • Camera – Captează cadrul de previzualizare și îl transmite către Image Tracker.
  • Convertor de imagine – Convertorul de format de pixeli convertește formatul implicit al camerei într-un format potrivit pentru redarea și urmărirea OpenGL ES.
  • Urmăritoare – Urmăritoarea detectează și urmărește obiectele din lumea reală din cadrul de previzualizare al camerei folosind algoritmi de recunoaștere a imaginii. Rezultatele sunt stocate în obiectul de stare, care este transmis către dispozitivul de redare a fundalului video.
  • Video Background Renderer – Dispozitivul de redare redă imaginea camerei stocată în obiectul de stare și o mărește pe ecranul camerei.
  • Device Databases – Baza de date a dispozitivelor – Baza de date a dispozitivelor sau setul de date conține obiective create cu ajutorul Target Manager. Conține un fișier de configurare XML și un fișier binar .dat.
  • Cloud Databases – Poate fi creată folosind target manager și poate conține o bază de date de până la 1 milion de ținte, care poate fi interogată în timpul execuției.

Începutul dezvoltării

TargetManager – Primul pas este crearea de ținte folosind Vuforia Target Manager pentru a le folosi ca bază de date de dispozitive. Pentru aceasta, trebuie mai întâi să faceți o înregistrare gratuită pe portalul dezvoltatorilor Vuforia. Acest cont poate fi folosit pentru a descărca resurse de la Vuforia și pentru a posta probleme pe forumurile Vuforia. După conectare,

  • Deschideți TargetManager pe site-ul Vuforia, așa cum se arată mai sus și deschideți fila Device Databases.
  • Click Create Database, Add Target. Se deschide o fereastră de dialog cu o nouă țintă.

  • Selectați imaginea pe care doriți să o afișați ca țintă din sistemul dvs. local. Sunt acceptate numai imaginile JPG sau PNG (numai RGB sau în tonuri de gri) cu o dimensiune mai mică de 2 MB. O imagine țintă ideală ar trebui să fie bogată în detalii și trebuie să aibă un contrast bun și să nu aibă modele repetitive.
  • Select target type as single image. Introduceți o valoare arbitrară ca lățime și faceți clic pe create target. După un timp scurt de procesare, ținta selectată va fi creată.
  • Dacă ratingul țintei este mai mare de trei, atunci ținta poate fi utilizată pentru urmărire. Un rating mai mare indică faptul că imaginea este ușor de urmărit de către sistemul AR.
  • Adaugați mai multe ținte în același mod. Selectați țintele pe care doriți să le descărcați și faceți clic pe download selected targets.
  • Descărcarea va conține un fișier <database_name>.xml și <database_name>.dat. Fișierul .xml conține baza de date a imaginilor țintă, în timp ce fișierul .dat este un fișier binar care conține informații despre baza de date urmăribile.

Instalarea și descărcarea codului de exemplu

  • Să presupunem că v-ați conectat deja la contul Vuforia, mergeți mai departe și descărcați Vuforia SDK pentru Android și Samples for Android
  • Extrageți folderul Vuforia SDK și puneți-l în același folder în care ați păstrat folderul Android-SDK. Copiați eșantioanele în interiorul directorului de eșantioane gol din dosarul Vuforia SDK și importați eșantionul VideoPlayBack.
  • În Eclipse, mergeți la Window-Preferences și navigați la Java-Build Path – Class Variables și creați o nouă variabilă.
  • Adaugați QCAR_SDK_ROOT în câmpul Name și selectați dosarul Vuforia SDK făcând clic pe opțiunea folder.
  • Verificați în proiectul dvs. Java Build Path, vuforia.jar este exportat sub fila Order and Exports.
  • Deschideți copyVuforiaFiles.xml și sub <fileset> dați calea pentru armeabi-v7a. Puteți verifica calea în directorul de construcție al folderului Vuforia-SDK. În cazul meu, în Linux, calea este : „/home/vineet/vineet/vuforia-sdk-android-2-8-8/build/lib/armeabi-v7a”
  • Pasul anterior va genera fișierul libVuforia.so în directorul libs al proiectului dvs. atunci când construiți și rulați aplicația.
  • Aplicația demo conține deja 2 markere și fișiere video pe care le puteți folosi pentru a testa. Puteți imprima markerii din fișierele PDF din dosarul media al aplicației.
  • După rularea aplicației, se va deschide ecranul de vizualizare a camerei. La îndreptarea camerei către marker, pe ecran va apărea un videoclip suprapus peste marker.

Fluxul de lucru al dezvoltatorului

Când un utilizator lansează aplicația de probă, aceasta începe să creeze și să încarce texturi prin apelarea loadTextures(). Aici, imaginile bitmap din dosarul assets sunt convertite în texturi necesare motorului Vuforia SDK pentru redarea obiectelor 3D pe vizualizarea AR.

Simultan, aplicația va începe procesul de configurare a motorului prin apelarea initAR(). Aici aplicația va inițializa în mod asincron motorul Vuforia SDK. După o inițializare reușită, aplicația începe să încarce datele trackerilor în mod asincron. Aceasta va încărca și va activa seturile de date din fișierul XML țintă creat cu ajutorul TargetManager.

După configurarea motorului, aplicația apelează initApplicationAR(), unde va crea și inițializa vizualizarea OpenGLES și îi va atașa un renderizator, care este necesar pentru a afișa imagini video deasupra ecranului camerei, dacă se găsește imagetarget. Renderul atașat la vizualizarea OpenGL ES solicită încărcarea videoclipurilor prin intermediul VideoPlaybackHelper și apelează metoda OpenGL DrawFrame() pentru a urmări cadrele camerei. În timpul acestui proces sunt create, de asemenea, texturile OpenGL din obiectele de textură încărcate la început și texturile pentru datele video.

Aplicația apelează apoi startAR() pentru a porni camera. De îndată ce camera pornește aparatul de redare începe să urmărească cadrele. Când imageTarget este găsit, aplicația afișează videoclipul. Videoclipul poate fi configurat pentru a fi redat automat sau poate fi pornit la apăsare.

Toate resursele sunt descărcate de către aplicație prin apelarea onDestroy() atunci când utilizatorul închide aplicația.

Concluzie

Cu acest blog, am văzut acum cum putem folosi Vuforia pentru a urmări ImageTargets și a afișa videoclipuri deasupra acestora. Vuforia poate fi folosit pentru o mulțime de scopuri, cum ar fi detectarea textului, gestionarea ocluziei, generarea de ținte în timp de execuție din cloud. Pentru a afla mai multe despre Vuforia, consultați developer.vuforia.com.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.