Creați un joc de realitate cu stilul Pokémon GO cu Vuforia

Ce veți crea

1. Introducere

În primul post al acestei serii am vorbit despre cât de minunat Vuforia este pentru a crea experiențe de realitate augmentată, iar acum suntem gata să practicăm aceste concepte într-o aplicație reală. În acest tutorial, vom începe să jucăm cu Realitatea Augmented utilizând Vuforia pe Unitatea 3D. Vom învăța cum să configuram Vuforia și să începem să dezvoltăm un joc AR de la zero, adoptând o logică similară cu cea folosită pe Pokémon GO!

Nu va fi necesar să aveți experiență anterioară despre Unity sau Vuforia pentru a urma acest tutorial.

Dacă doriți să săturați mai adânc, de ce să nu învățați despre unul dintre cele mai fundamentale concepte ale AR, markeri, în cursul nostru scurt:

1.1. Recapitulare rapidă: Cum funcționează Vuforia??

Vuforia utilizează alimentarea pentru cameră a aparatului, combinată cu date de accelerometru și giroscop, pentru a examina lumea. Vuforia utilizează viziunea computerului pentru a înțelege ce vede "pe cameră pentru a crea un model de mediu. După procesarea datelor, sistemul se poate localiza aproximativ în întreaga lume, cunoscând coordonatele sale: unde este sus, jos, stânga, dreapta și așa mai departe.

Dacă nu știți ce este Vuforia, aruncați o privire la primul post din această serie.

1.2. Ce vom învăța?

Acest tutorial este împărțit în două părți. În acest moment, vom vedea unele dintre particularitățile Vuforia pe Unity 3D, vom învăța cum să configuram mediul și vom începe, de asemenea, să dezvoltăm un mic joc AR numit Shoot the Cubes. Vom acorda o atenție deosebită ARCamera Prefab, una dintre cele mai importante părți ale Vuforia în unitate.

În a doua parte, vom continua să dezvoltăm jocul Shoot the Cubes, adăugând interactivitate și făcându-l mai interesant. Această secțiune nu va merge prea mult în particularitățile lui Vuforia, deoarece ideea va fi aceea de a explora unele posibilități oferite de Unitate pentru a crea o experiență realistă îmbogățită.

2. Vuforia despre Unitate

Unitatea este un motor de joc popular și puternic care este ușor de folosit și poate compila jocuri pentru mai multe platforme. Există câteva avantaje în utilizarea Unității pentru a crea experiențe AR cu Vuforia. Este posibil să vizați toate sistemele suportate de Vuforia, inclusiv ochelarii inteligenți. Este mai simplu de utilizat, datorită prefabricatelor oferite de SDK-ul Vuforia. Folosind numai Unity este posibil să accesați toate funcțiile disponibile pe Vuforia.

2.1. Vuforia Prefabs

Aveți posibilitatea să accesați toate caracteristicile Vuforia pe Unity folosind prefabricatele Vuforia. Tot ce trebuie să faceți este să trageți obiectul pe scenă și să îl configurați. După cum sugerează și numele, prefab-urile sunt ca șabloane pentru crearea și clonarea obiectelor Unity complete cu componente și proprietăți. De exemplu, ImageTarget reprezintă imaginile care pot fi folosite ca ținte. Să aruncăm o privire asupra prefabricatelor Vuforia disponibile pe Unity:

  • ARCamera: Cel mai important prefabricat. Acesta gestionează experiența generală AR, controlând calitatea redării, definind centrul lumii, aparatul de fotografiat al aparatului, țintele maxime care trebuie urmărite și așa mai departe. În acest tutorial ne vom concentra eforturile asupra înțelegerii utilizării acestui obiect.
  • Obiective: Toate obiectivele Vuforia au propriile lor prefabricate: ImageTarget, multițintă, CylinderTarget, ObjectTarget, UserDefinedTargetBuilder, VuMark, FrameMarker. Aceste obiective vor fi recunoscute de către ARCamera și începeți o acțiune, cum ar fi prezentarea unui obiect 3D sau a unei animații.
  • CloudRecognition: Utilizat pentru a accesa obiectivele definite în sistemul de cloud Vuforia.
  • SmartTerrain și sprijini: Aceste obiecte sunt utilizate în caracteristica Smart Terrain.
  • TextRecognition și Cuvânt: Prefabs utilizate în caracteristica Text Recunoaștere.
  • VirtualButton: Vuforia poate înțelege obiectivele ca butoane care pot fi presate fizic de către utilizator. Acest prefabricat vă va ajuta să utilizați această resursă.

3. Crearea primei noastre experiențe AR

Jocul pe care îl vom dezvolta este simplu, dar ilustrează bine principiile augmentate ale realității și ne va învăța câteva dintre fundamentele lui Vuforia. Obiectivul jocului este de a găsi și trage cuburi care zboară în jurul camerei. Jucătorul va căuta în jurul cuburilor folosind dispozitivul său și "atinge" pentru a fotografia pe cutii. Nu ne vom ocupa de scor, nivel sau ceva de genul asta, dar vă puteți extinde cu ușurință pe aceste aspecte ale jocului.

3.1. Pregătirea unității pentru Vuforia

Înainte de a începe să jucăm, va trebui să pregătim unitatea pentru Vuforia. Procesul este destul de simplu și, în principiu, trebuie să importăm pachetul SDF al Vuforia și să adăugăm un ARCamera prefab la proiectul nostru.

  • Creați un cont de dezvoltator pe Vuforia.
  • Faceți login-ul și descărcați SDU-ul Vuforia pentru unitate.
  • Deschideți Unitatea și creați un nou proiect numit "Shoot the Cubes".
  • După deschiderea ferestrei proiectului Unity, mergeți la Active> Pachetul de import> Pachetul personalizat și selectați SDK-ul descărcat.
  • Importați totul.
  • Ștergeți aparat foto obiect în Ierarhie fereastră.
  • Accesați Managerul de licență de pe portalul de dezvoltatori al Vuforia și creați o nouă licență utilizând contul dvs. de dezvoltator.
  • Copiați cheia de licență.
  • Înapoi la Unitate, în Proiect fereastră, du-te la Active> Vuforia> Prefabricate> ARCamera.Selectați elementul și trageți-l în Ierarhie fereastră.
  • Cu ARCamera selectat, în Inspector panou, mergeți la Comportamentul Vuforia (Script), găsiți câmpul Cheie de licență pentru aplicații, și lipiți licența pe care ați creat-o în portalul dezvoltatorului Vuforia.
  • Apasă pe aplica în partea de sus a ecranului Inspector pentru a adăuga cheia de licență tuturor ARCamera prefabs pe acest proiect.

3.2. Testarea dacă Vuforia funcționează

Este timpul să verificați dacă mediul funcționează corect. 

Utilizarea camerei computerului

Dacă aveți o cameră web pe computer, puteți apăsa butonul de redare al Unity pentru a verifica dacă ARCamera muncește. Va fi posibilă recunoașterea țintelor folosind webcam-ul; cu toate acestea, nu va fi posibil să utilizați date senzor pentru a vă testa experiența AR. Dacă alimentarea camerei nu afișează imaginea Joc fereastră, există posibilitatea ca aparatul foto să nu fie compatibil cu profilul webcam furnizat de ARCamera

Configurarea aplicației pentru rularea pe un dispozitiv

Cea mai bună modalitate de a testa aplicația dvs. Vuforia este direct pe dispozitiv. Vom compila proiectul pentru Android, dar aceiași pași se vor aplica dispozitivelor iOS.

  • În primul rând, trebuie să salvăm Scena pe care lucrăm. Mergi la Fișier> Salvați scenă.
  • Selectează bunuri și creați un folder nou numit scene.
  • Salvați această scenă ca fiind ShootTheCubesMain.
  • Mergi la Fișier> Setări pentru configurare.
  • Selectați Android și faceți clic pe Schimbați platforma. Dacă această opțiune este dezactivată, va trebui să descărcați unitatea SDK dorită pentru dispozitiv.
  • Click pe Setările playerului și configurați proiectul în Inspector fereastră.
  • Fiți atenți la unele opțiuni: Dezactivați Auto API pentru grafică și asigurați-vă că OpenGLES2 este selectat pentru API pentru grafică opțiune.
  • Tastați Identificatorul pachetului.
  • Pentru dispozitive Android, asigurați-vă că Nivel minim API este selectat API 9 sau mai mare. De asemenea, va trebui să utilizați ARMv7 pentru Filtru dispozitiv opțiune.
  • Dacă ați urmat corect etapele, proiectul este pregătit pentru a fi construit. Cu toate acestea, dacă aceasta este prima dată când compilați un proiect Unity pentru Android sau iOS, trebuie să configurați Unity pentru aceste dispozitive. Urmați acest ghid pentru Android și pentru iOS.
  • Pentru a rula proiectul, reveniți la Construiți setările și faceți clic pe Construiți și executați.

După clădire, aplicația va fi instalată pe dispozitiv. Pentru moment, tot ce trebuie să vă așteptați este să vedeți alimentarea camerei de pe dispozitiv fără nici o eroare. Dacă ați reușit asta, totul a funcționat corect.

3.3. Folosind Prefabul ARCamera

Obiectivul jocului Shoot the Cubes este de a căuta și de a trage cuburi de zbor folosind camera și senzorii dispozitivului. Această abordare este similară cu cea utilizată pe Pokémon GO. Pentru a realiza acest lucru, va trebui doar să folosim Vuforia ARCamera prefabricat.

Există o mulțime de scripturi atașate la ARCamera. Pentru moment, singura care trebuie să înțelegi este Comportamentul Vuforia script-ul. Să aruncăm o privire la opțiunile sale:

  • Cheie de licență pentru aplicații: În cazul în care cheia de licență Vuforia trebuie inserată.
  • Modul aparatului foto: Controlează calitatea redării obiectelor.
  • Imagini maxime simultan urmărite: Definește obiectivele maxime urmărite în același timp. Vuforia nu recomandă mai mult de cinci deodată.
  • Obiecte maxime simultane urmărite: Definește obiectele maxime urmărite în același timp. Din nou, Vuforia nu recomandă mai mult de cinci în același timp.
  • Încărcați obiective pentru obiecte în funcție de detectare: Încarcă obiectul asociat cu țintă imediat ce obiectivul este detectat.
  • Direcția camerei: Alegeți ce aparat de aparat să utilizați.
  • Mirror Video Background: Definește dacă oglindirea alimentării camerei trebuie să fie oglindită.
  • Word Center Mode: Cea mai relevantă opțiune pentru proiectul nostru. Definește modul în care sistemul ar trebui să găsească centrul lumii. 
    • SPECIFIC_TARGET: Utilizează o țintă specifică ca referință la lume.
    • FIRST_TARGET: Prima țintă detectată va fi utilizată ca referință la lume.
    • APARAT FOTO: Utilizează camera foto ca punct de referință pentru lume.
    • DEVICE_TRACKING: Utilizează senzorul dispozitivului ca referință pentru a stabili pozițiile lumii. Aceasta este opțiunea pe care trebuie să o alegem pentru micul nostru proiect.

Deocamdată, tot ce va trebui să schimbați în ARCamera este Word Center Mode. Faceți clic pe ARCamera element în ierarhie și în Inspector fereastră, schimbați Modul Centru Mondial la DEVICE_TRACKING.

3.4. Folosind senzorul dispozitivului pentru a găsi centrul lumii

Să adăugăm un cub pe scenă și să încercăm dacă ARCamera funcționează corect.

  • Asigura-te ca ARCamerapoziția și rotația sunt setate la 0 pe axele X, Y și Z.
  • Creeaza o cub obiect de la Obiect Obiect> Obiect 3D> Cub.
  • Deplasați cubul Poziţie pe Z axa la 10 și 0 pe X și Y.
  • Scară obiectul pentru 2 pe XY, și Z axă.
  • Roti cubul 45 grade pe X și Y axă.
  • Puteți apăsa butonul de redare pentru a verifica dacă cubul este poziționat corect.
  • Odată ce sunteți sigur că cubul este poziționat corect, construiți din nou proiectul și testați-l pe dispozitiv. Pentru a construi, du-te la Fișier> Construiți și executați.

Va trebui să vă uitați prin rotirea dispozitivului pentru a găsi cubul. Veți observa că obiectul rămâne în același loc, chiar și după rotirea dispozitivului. Este ca și cum cubul "există" în lumea reală, dar poate fi văzut doar cu camera aparatului.

3.5. Setarea poziției elementelor în funcție de ARCamera

Prima problemă cu aplicația noastră până acum este că cubul poate apărea oriunde și că utilizatorul va trebui să se uite în jur pentru al găsi. Deoarece centrul lumii este definit în funcție de senzorii dispozitivului, nu putem fi siguri de poziția reală a elementelor. Acest lucru se datorează faptului că utilizatorul ar putea începe cu dispozitivul în orice orientare și deoarece modul de rotație este măsurat variază de la dispozitiv la dispozitiv.

Pentru a se asigura că entitățile AR pornesc din perspectiva utilizatorului, cea mai ușoară abordare este aceea de a aștepta ca Vuforia să definească centrul lumii și să găsească ARCamera rotație și apoi aranjarea locației de pornire a elementelor în funcție de orientarea respectivă.

Vom crea o Managerul spawn pentru a defini poziția cuburilor care trebuie să fie create. Managerul își va defini poziția în funcție de ARCamera rotație. Se va aștepta până când se va seta rotirea, apoi se vor muta 10 unități în fața camerei.

  • Creați două obiecte goale cu Obiect Obiect> Creare gol. Faceți clic pe unul dintre obiectele pe care tocmai le-ați creat și le redenumiți _SpawnController.
  • Schimbați numele celuilalt obiect gol la _GameManager.
  • În Proiect fereastră, selectați bunuri și creați un folder nou numit Scripturi.
  • În Scripturi folder, creați un script C # numit SpawnScript.
  • Trageți SpawnScript la _SpawnController.
  • Faceți dublu clic pe SpawnScript să o editați.

Mai întâi să adăugăm pachetul Vuforia.

utilizând UnityEngine; utilizând System.Collections; // Va trebui să folosim pachetul Vuforia pentru a vă asigura că totul funcționează folosind Vuforia; clasa publica SpawnScript: MonoBehavior 

A accesa ARCamera, utilizare Camera.main. Să creați o funcție pentru a obține poziția camerei și a stabili cubul care urmează să fie dat de 10 unități înainte din acest punct.

clasa publică SpawnScript: MonoBehavior // Definiți poziția dacă obiectul // în funcție de poziția ARCamera privată bool SetPosition () // obține poziția camerei Transformare cam = Camera.main.transform; // setați poziția 10 unități înainte din poziția camerei transform.position = cam.forward * 10; return true; 

Vom schimba poziția o singură dată din start funcţie. Schimba poziția este o corutină care va aștepta o scurtă perioadă de timp înainte de a stabili poziția.

 bool privat mPositionSet; void Start () // Definirea poziției de reproducere StartCoroutine (ChangePosition ());  // Vom folosi un Coroutine pentru a da puțin // întârziere înainte de a seta poziția privată IEnumerator ChangePosition () randamentul randament nou WaitForSeconds (0.2f); // Definiți poziția Spawn o singură dată dacă (! MPositionSet) // modificați poziția numai dacă Vuforia este activă dacă (VuforiaBehavior.Instance.enabled) SetPosition ();  

Să testăm scriptul:

  • Înapoi în Unitate, faceți clic pe _SpawnController obiect și utilizare Obiect de joc> Obiect 3D> Sferă pentru a introduce o sferă înăuntru _SpawnController
  • Selectați sfera și asigurați-vă că poziția sa este setată la 0 pe axele X, Y și Z. 
  • Acum vom suprapune cubul și _SpawnController astfel încât să puteți observa importanța scenariului. Selectați _SpawnController și setați poziția sa la 0 pe axele X și Y și la 10 pe axa Z, aceeași poziție ca și cubul. 

Elementele încep să se suprapună; cu toate acestea, odată ce ați construit și rula aplicația pe un dispozitiv, veți vedea că _SpawnController și sfera sa va apărea în fața camerei, iar cubul va fi în alt loc. Mergeți și încercați! Asigurați-vă că vă uitați la dispozitiv exact la pornirea aplicației.

4. Concluzie

Felicitări, ați creat prima experiență a Realității Augmentate. Da, e un pic cam dur, dar funcționează! În acest tutorial ați învățat cum să utilizați prefabul principal al lui Vuforia în Unity, ARCamera. De asemenea, ați învățat cum să o configurați și cum să utilizați senzorii dispozitivului pentru a crea iluzia că un obiect virtual este introdus în lume.

4.1. Ce urmeaza?

În următorul tutorial vom îmbunătăți acest principiu pentru a crea un adevărat joc și o experiență mai atrăgătoare. Vom continua să dezvoltăm jocul Shoot the Cubes, adăugând o oarecare interactivitate și explorând posibilitățile Unity de a crea un joc AR interesant. Vom face ca cuburile să se arunce în aer și să zboare și vom lăsa jucătorul să le caute și să le distrugă prin împușcarea unui laser din dispozitiv.

Ne vedem în curând!

Mulțumiri speciale pentru vector de imagine proiectat de Freepik, licențiat sub Creative Commons CC BY-SA.

Cod