Cuprins:

Realitate augmentată Vuforia 7 Detectarea planului de sol .: 8 pași
Realitate augmentată Vuforia 7 Detectarea planului de sol .: 8 pași

Video: Realitate augmentată Vuforia 7 Detectarea planului de sol .: 8 pași

Video: Realitate augmentată Vuforia 7 Detectarea planului de sol .: 8 pași
Video: Augmented reality Unity+Vuforia project_1 (Markers) 2024, Noiembrie
Anonim
Realitate augmentată Vuforia 7 Detectarea avionului de sol
Realitate augmentată Vuforia 7 Detectarea avionului de sol
Realitate augmentată Vuforia 7 Detectarea avionului de sol
Realitate augmentată Vuforia 7 Detectarea avionului de sol

SDK-ul de realitate augmentată Vuforia pentru Unity 3D folosește ARCore și ARKit pentru a detecta planurile solului în AR. Tutorialul de astăzi va folosi integrarea lor nativă în Unity pentru a crea o aplicație AR pentru Android sau IOS. Vom face o mașină să cadă din cer pe pământ, iar ușile sale se vor deschide automat când ne apropiem. De asemenea, vom trece la filmări în RA. Pentru a continua, veți avea nevoie de Unity 3D instalat pe computer (este gratuit). Aceste instrucțiuni sunt pentru începători total, așa că vom trece în revistă totul în detaliu!

Cea mai bună parte a SLAM-ului Vuforia este cantitatea de dispozitive IOS și Android pe care le acceptă. O listă completă a dispozitivelor poate fi găsită aici:

library.vuforia.com/articles/Solution/grou…

Pasul 1: Porniți un proiect nou

Porniți un proiect nou
Porniți un proiect nou

Descărcați Unity 3D de aici dacă nu îl aveți deja:

Asigurați-vă că instalați suport pentru Vuforia Augmented Reality și Android sau IOS, în funcție de dispozitivul pe care îl aveți.

Deschideți Unity și începeți un nou proiect Unity, numiți-l cum doriți.

Mai întâi permiteți să ieșiți din aplicație configurată pentru a construi, astfel încât să nu uităm. Așadar, salvați scena și numiți-o „principală”.

Accesați fișierul, creați setările și comutați platforma de construire la Android sau IOS. Navigați la setările XR din setările playerului și verificați Realitatea augmentată Vuforia acceptată.

Dacă sunteți pe Android, nu va trebui să faceți altceva, dar pe IOS accesați alte setări și asigurați-vă că introduceți ceva pentru identificatorul dvs. de pachet. Utilizați formatul „com. YourCompanyName. YourAppName”.

Introduceți orice pentru descrierea utilizării camerei și schimbați versiunea de construcție țintă minimă la cel puțin 9.0.

Închideți acest lucru și acum să configurăm orice altceva.

Pasul 2: Să configurăm Vuforia

Să înființăm Vuforia
Să înființăm Vuforia

Acum să pregătim totul.

Accesați gameobject din meniul de sus și faceți clic pe ARCamera. Acum ștergeți camera principală din scena dvs.

Selectați camera ARC și, în partea dreaptă a inspectorului, faceți clic pe Deschidere configurație Vuforia. Faceți clic pe colecția de seturi de date și debifați totul, deoarece aici nu folosim nicio imagine vizată.

Faceți clic pe dispozitivul de urmărire a dispozitivului și faceți clic pe urmărirea poziției dispozitivului. Schimbați urmărirea de la rotație la pozițională.

Acum reveniți la fila obiect de joc și faceți clic pe Vuforia, Ground Plane și Plane finder. Aceasta găzduiește scripturile care găsesc planul nostru de la sol.

Ultimul lucru de care avem nevoie este etapa planului de sol, așa că mergeți din nou la obiectul de joc din meniul de sus și faceți clic pe Vuforia, Ground Plane și alegeți Ground Plane Stage. Acum, tot ceea ce copilul nostru va apărea în AR.

Pasul 3: Adăugați un nou script

Adăugați un nou script
Adăugați un nou script
Adăugați un nou script
Adăugați un nou script

Comportamentul implicit al acestei detecții a planului de masă este plasarea unui obiect nou de fiecare dată când apăsați pe ecran. Ceea ce ne dorim este să repoziționăm obiectul de fiecare dată când apăsați pe ecran. Deci, faceți clic dreapta în folderul dvs. de active și creați un nou script C #. Apelați-l „DeployStageOnce” și înlocuiți totul cu acest cod:

utilizarea sistemului;

folosind UnityEngine; folosind Vuforia; public class DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; private PositionalDeviceTracker _deviceTracker; private GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("AnchorStage trebuie specificat"); întoarcere; } AnchorStage. SetActive (fals); } public void Awake () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } public void OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } private void OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker (); } public void OnInteractiveHitTest (rezultatul HitTestResult) {if (result == null || AnchorStage == null) {Debug. LogWarning ("Testul de lovire este nevalid sau AnchorStage nu este setat"); întoarcere; } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), rezultat); if (anchor! = nul) {AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (adevărat); } if (_previousAnchor! = null) {Destroy (_previousAnchor); } _previousAnchor = ancoră; }}

Pentru a ne asigura că acest script se folosește, trebuie să apelăm la funcția OnInteractiveHitTest (), așa că întoarceți-vă la Unity și faceți clic pe obiectul jocului de căutare plan. Schimbați modul de la Automat la Interactiv. Trageți scriptul pe care tocmai l-am realizat pe obiectul jocului de căutare de avioane. Eliminați scriptul ContentPositionBehavior. Veți vedea un loc pentru un obiect de joc pe scriptul DeployStageOnce, trageți avionul de căutare acolo și găsiți acest script, alegeți funcția OnInteractiveHitTest din partea de sus a listei. Acum funcția noastră va fi apelată ori de câte ori utilizatorul face clic pe ecran!

Pasul 4: Să adăugăm mașina

Să adăugăm mașina
Să adăugăm mașina

Descărcați acest model 3D gratuit de mașină de aici (asigurați-vă că obțineți versiunea.obj):

www.turbosquid.com/3d-models/max-exterior-…

De asemenea, descărcați acest sunet, pentru că îl vom reda când mașina lovește pământul:

freesound.org/people/PaulMorek/sounds/1967…

Dezarhivați ambele fișiere și trageți-le în dosarul dvs. de active.

Faceți clic pe mașină și priviți în dreapta, schimbați Utilizați materiale încorporate pentru a utiliza materiale externe (moștenire) din meniul derulant din partea de sus. Acum vom putea schimba culoarea tuturor materialelor de pe mașină.

Trageți mașina pe scena planului de sol, făcându-l copil. Schimbați scara la.035 pe x, y și z.

Acum parcurgeți fiecare dintre obiectele de joc pentru mașini pentru copii și schimbați-le materialele în orice culoare doriți.

Adăugați o componentă rigidă a caroseriei la obiectul de joc rădăcină al mașinii și adăugați, de asemenea, un colizor de cutie, scalați-l astfel încât să acopere întreaga mașină. Adăugați, de asemenea, un colizor de cutie la nivelul planului de masă și scalați-l astfel încât să fie de câteva ori mai lat decât nivelul planului de masă. În acest fel, putem lăsa mașina din cer și va lovi pământul folosind motorul fizic încorporat al Unity.

Pasul 5: Puneți mașina pe cer

Pune Mașina în cer
Pune Mașina în cer

Adăugați o componentă sursă audio la obiectul de joc rădăcină al mașinii, trageți sunetul accidentului auto în locul clipului audio.

Acum trebuie să realizăm un script care va pune mașina în aer atunci când utilizatorul apasă pe ecran și apoi redă sunetul de accident când mașina lovește pământul. Deci, faceți clic dreapta în folderul active și creați un nou script C # și numiți-l „CarController”.

Înlocuiți tot codul de acolo cu acesta:

folosind System. Collections;

folosind System. Collections. Generic; folosind UnityEngine; public class CarController: MonoBehaviour {private bool soundPlayed = false; // Actualizarea se numește o dată pe cadru void Actualizare () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} public void MoveCar () {transform.localPosition + = new Vector3 (0, 10, 0); transform.eulerAngles + = new Vector3 (5, 20, 5); soundPlayed = false; } IEnumerator DelayPlaySound () {randament returnează WaitForSeconds (.2f); GetComponent (). Play (); }}

Adăugați funcția MoveCar la evenimentul OnInteractiveHitTest ca în imaginea de mai sus. Acum va fi apelat atunci când utilizatorul face clic pe ecran.

Pasul 6: Uși Lambo

Uși Lambo
Uși Lambo

Deci, dacă extindeți obiectul jocului mașinii și găsiți ușile, veți observa că ambele uși sunt o singură plasă. Dacă dorim să deschidem ușile, singura noastră opțiune va fi ușile Lambo care se deschid vertical. Pentru a face acest lucru, trebuie mai întâi să le schimbăm punctul de pivot.

Faceți un obiect de joc gol care este un copil al mașinii. Trageți ușile și faceți-le copilul acestui nou obiect de joc. Mutați obiectul de joc părinte unde ar trebui să fie punctul de pivotare, de balamalele ușii. Acum mutați ușile copilului la loc. Acum, când rotim parantele ușilor, punctul de pivotare este în locul potrivit.

Vom realiza un scenariu care deschide ușile când vă apropiați de mașină, dar înainte de a face acest lucru avem nevoie de o modalitate de a „declanșa” evenimentul. Adăugați un colizor cutie la obiectul de joc părinte al ușii și scalați-l, astfel încât să treacă puțin peste mașină în ambele direcții. Bifați „isTrigger”. Acum adăugați un colizor de cutie la camera principală și scalați-l corespunzător. De asemenea, verificați „isTrigger”. Adăugați o componentă de corp rigid la camera dvs. și debifați „useGravity”. Cu camera selectată, schimbați eticheta în „MainCamera” din partea de sus a inspectorului.

Adăugați un nou script numit „LamboDoorBehavior” și adăugați codul de mai jos. Trageți scriptul pe părintele ușii dvs.

folosind System. Collections;

folosind System. Collections. Generic; folosind UnityEngine; public class LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; float privat doritAngle = 0; // Actualizarea se numește o dată pe cadru nul Update () {currAngle = Mathf. LerpAngle (currAngle, doritAngle, Time.deltaTime * 3f); transform.localEulerAngles = new Vector3 (currAngle, 0, 0); } public void OpenDoors () {wantedAngle = 60f; } public void CloseDoors () {wantedAngle = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Acest script va face ca ușile să se deschidă încet când le închideți în AR utilizând funcția Lerp () în unitate care interpola între două puncte (sau în acest caz două unghiuri).

Pasul 7: Redarea videoclipului în RA

Redarea videoclipului în RA
Redarea videoclipului în RA
Redarea videoclipului în RA
Redarea videoclipului în RA

Ultimul lucru pe care trebuie să-l facem este să redăm videoclipuri în RA.

Faceți clic dreapta pe orice obiect de joc care este un copil al mașinii dvs. și creați un obiect 3D, Quad. Acest lucru vă va asigura că quad-ul este un copil al mașinii dvs. Poziționați și redimensionați acest quad astfel încât să se potrivească în interiorul bordului mașinii dvs. și să pară că ar trebui să fie acolo. Pe asta vom reda videoclipul.

Adăugați o componentă player video la quad. Schimbați sursa la URL și găsiți un link dur către un fișier. MP4 sau trageți un fișier video în folderul dvs. de active și apoi trageți acel clip în slotul gol. Dacă doriți să transmiteți într-un videoclip de pe un URL, Instragram este o sursă excelentă. Faceți clic dreapta pe orice videoclip Instagram din Google Chrome și faceți clic pe inspectare. Găsiți divul care conține videoclipul și copiați linkul de acolo (am această metodă în imaginea de mai sus).

Asigurați-vă că bifați bucla dacă doriți să se redea de mai multe ori. Adăugați o componentă sursă audio la acest obiect de joc și schimbați sursa de ieșire la sursa audio de pe playerul video. Trageți sursa audio nou creată în acel slot.

În cele din urmă am terminat!

Pasul 8: Puneți aplicația pe telefon

Puneți aplicația pe telefonul dvs.!
Puneți aplicația pe telefonul dvs.!

Dacă construiți pentru Android, puteți doar să accesați fișierul și să apăsați build și să rulați cu telefonul conectat.

Dacă construiți un iPhone sau un iPad, asigurați-vă că descărcați Xcode din magazinul de aplicații. De asemenea, înscrieți-vă pentru un cont gratuit de dezvoltator Apple de pe www.apple.developer.com. Accesați fișierul și apăsați build. Deschideți fișierul care a fost creat din Xcode și conectați telefonul. Alegeți echipa de dezvoltare și apăsați butonul de redare.

Este posibil să trebuiască să mișcați puțin camera, dar dați-i o secundă și atingeți ecranul și ar trebui să vă vedeți mașina căzând din cer pe pământ! Acum puteți intra și viziona videoclipul redat în tabloul de bord!

Distrează-te și anunță-mă dacă ai întrebări în comentarii!

Recomandat: