Sadržaj:

Vuforia 7 otkrivanje zemaljske ravni proširene stvarnosti .: 8 koraka
Vuforia 7 otkrivanje zemaljske ravni proširene stvarnosti .: 8 koraka

Video: Vuforia 7 otkrivanje zemaljske ravni proširene stvarnosti .: 8 koraka

Video: Vuforia 7 otkrivanje zemaljske ravni proširene stvarnosti .: 8 koraka
Video: Unity3D Воспроизведение,проигрывания звука при входе в Trigger зону 2024, Novembar
Anonim
Vuforia 7 otkrivanje zemaljske ravni sa proširenom stvarnošću
Vuforia 7 otkrivanje zemaljske ravni sa proširenom stvarnošću
Vuforia 7 otkrivanje zemaljske ravni sa proširenom stvarnošću
Vuforia 7 otkrivanje zemaljske ravni sa proširenom stvarnošću

Vuforijin SDK za proširenu stvarnost za Unity 3D koristi ARCore i ARKit za otkrivanje zemaljskih aviona u AR -u. Današnji vodič će koristiti njihovu izvornu integraciju u Unityju za izradu AR aplikacije za Android ili IOS. Auto će s neba pasti na tlo, a vrata mu se automatski otvaraju kad mu se približimo. Također ćemo preći na snimanje videa u AR -u. Za nastavak će vam trebati Unity 3D instaliran na vašem računaru (besplatan je). Ove upute su za početnike pa ćemo sve detaljno proći!

Najbolji dio Vuforijinog SLAM -a je količina IOS i Android uređaja koje podržava. Potpunu listu uređaja možete pronaći ovdje:

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

Korak 1: Pokrenite novi projekat

Pokrenite novi projekat
Pokrenite novi projekat

Preuzmite Unity 3D odavde ako ga već nemate:

Obavezno instalirajte podršku za Vuforia proširenu stvarnost i Android ili IOS, ovisno o tome koji uređaj imate.

Otvorite Unity i pokrenite novi Unity projekt, nazovite ga kako god želite.

Prvo izvadimo aplikaciju postavljenu za izgradnju kako ne bismo zaboravili. Zato sačuvajte scenu i nazovite je "glavna".

Idite na datoteku, postavite postavke i prebacite svoju platformu za izgradnju na Android ili IOS. Idite na postavke XR u postavkama playera i provjerite Vuforia proširena stvarnost podržana.

Ako imate Android, nećete morati raditi ništa drugo, ali na iOS -u idite na druge postavke i obavezno unesite nešto za svoj identifikator paketa. Koristite format "com. YourCompanyName. YourAppName."

Unesite bilo što za opis upotrebe kamere i promijenite ciljnu minimalnu verziju verzije na najmanje 9.0.

Zatvorite to i sada postavimo sve ostalo.

Korak 2: Postavimo Vuforiju

Postavimo Vuforiju
Postavimo Vuforiju

Ajmo sad sve postaviti.

Idite na gameobject u gornjem meniju i kliknite ARCamera. Sada izbrišite glavnu kameru sa scene.

Odaberite ARCameru i s desne strane u inspektoru kliknite Otvori konfiguraciju Vuforie. Kliknite na zbirku skupova podataka i poništite sve jer ovdje ne koristimo nikakve ciljeve slika.

Kliknite na uređaj za praćenje i kliknite na praćenje položaja uređaja. Promijenite praćenje iz rotacijskog u pozicijsko.

Sada se vratite na karticu Objekat igre i kliknite Vuforia, Ground Plane i Plane Finder. Ovo sadrži skripte koje pronalaze našu ravninu tla.

Posljednja stvar koja nam je potrebna je etapa zemaljske ravnine, pa ponovo idite na objekt igre u gornjem izborniku, kliknite Vuforia, Ground Plane i odaberite Ground Plane Stage. Sada će se sve što smo mi od ovoga pojaviti u AR -u.

Korak 3: Dodajte novu skriptu

Dodajte novu skriptu
Dodajte novu skriptu
Dodajte novu skriptu
Dodajte novu skriptu

Zadano ponašanje ove detekcije ravnine zemlje je postavljanje novog objekta svaki put kada pritisnete na ekran. Ono što želimo je samo premjestiti objekt svaki put kada pritisnete na ekran. Zato desnom tipkom miša kliknite u folderu imovine i stvorite novu C# skriptu. Nazovite ga "DeployStageOnce" i zamijenite sve ovim kodom:

pomoću System;

koristeći UnityEngine; koristeći Vuforia; javna klasa DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; privatni PositionalDeviceTracker _deviceTracker; privatni GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("AnchorStage mora biti naveden"); return; } AnchorStage. SetActive (false); } javna void Awake () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } javna void OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } private void OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker (); } public void OnInteractiveHitTest (HitTestResult rezultat) {if (result == null || AnchorStage == null) {Debug. LogWarning ("Test pogodaka je nevažeći ili AnchorStage nije postavljen"); return; } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), rezultat); if (sidro! = null) {AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (true); } if (_previousAnchor! = null) {Uništi (_previousAnchor); } _prethodnoAnchor = sidro; }}

Kako bismo bili sigurni da se ova skripta koristi, moramo pozvati funkciju OnInteractiveHitTest () pa se vratite na Unity i kliknite objekt igre Finder plane. Promijenite način rada iz automatskog u interaktivni. Prevucite skriptu koju smo upravo napravili na objekt igre Finder plane. Uklonite skriptu ContentPositioningBehavior. Na skripti DeployStageOnce vidjet ćete mjesto za objekt igre, povucite tražilicu aviona tamo i pronađite ovu skriptu, odaberite funkciju OnInteractiveHitTest s vrha popisa. Sada će se naša funkcija pozivati kad god korisnik klikne na ekran!

Korak 4: Dodajmo automobil

Dodajmo auto
Dodajmo auto

Preuzmite ovaj besplatni 3D model automobila odavde (obavezno nabavite.obj verziju):

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

Također preuzmite ovaj zvuk jer ćemo ga svirati kada automobil udari o tlo:

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

Raspakirajte obje te datoteke i povucite ih u mapu svojine.

Kliknite na automobil i pogledajte desno, iz padajućeg izbornika na vrhu promijenite opciju Upotreba ugrađenih materijala za upotrebu vanjskih materijala (naslijeđeno). Sada ćemo moći promijeniti boju svih materijala na automobilu.

Odvucite automobil na pozornicu prizemlja čineći ga djetetom. Promijenite skalu u.035 na x, y i z.

Sada prođite kroz svaki od predmeta dječje igre automobila i promijenite njihove materijale u koju god boju želite.

Dodajte osnovnu igračku jedinicu automobila u krutu komponentu i dodajte okvirni sudarač, prilagodite ga tako da pokrije cijeli automobil. U stupanj ravnine tla dodajte i okvirni sudarač i skalirajte ga tako da bude nekoliko puta širi od stupnja ravnine tla. Na ovaj način možemo ispustiti automobil s neba i on će udariti o tlo pomoću Unity -ovog ugrađenog motora za fiziku.

Korak 5: Stavite automobil na nebo

Stavite auto na nebo
Stavite auto na nebo

Dodajte komponentu audio izvora izvornom objektu igre u automobilu, prevucite zvuk sudara na mesto audio snimka.

Sada moramo napraviti skriptu koja će podići automobil u zrak kada korisnik pritisne ekran, a zatim reproducirati zvuk sudara kada automobil udari o tlo. Dakle, desnom tipkom miša kliknite u folderu imovine i stvorite novu C# skriptu i nazovite je "CarController".

Zamijenite sav tamošnji kod ovim:

pomoću System. Collections;

pomoću System. Collections. Generic; koristeći UnityEngine; javna klasa CarController: MonoBehaviour {private bool soundPlayed = false; // Ažuriranje se poziva jednom po okviru void Update () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} javna void MoveCar () {transform.localPosition += novi Vector3 (0, 10, 0); transform.eulerAngles += novi Vector3 (5, 20, 5); soundPlayed = false; } IEnumerator DelayPlaySound () {yield return new WaitForSeconds (.2f); GetComponent (). Play (); }}

Dodajte funkciju MoveCar događaju OnInteractiveHitTest kao na gornjoj slici. Sada će biti pozvan kada korisnik klikne na ekran.

Korak 6: Lambo vrata

Lambo vrata
Lambo vrata

Dakle, ako proširite objekt igre automobila i pronađete vrata, primijetit ćete da su oba vrata jedna mreža. Ako želimo otvoriti vrata, naša jedina mogućnost bit će Lambo vrata koja se otvaraju okomito. Da bi ovo uspjelo, prvo moramo promijeniti njihovu tačku okretanja.

Napravite prazan predmet igre koji je dijete auta. Uvucite vrata i učinite ih djecom ovog novog objekta igre. Premjestite roditeljski objekt igre tamo gdje bi trebala biti točka okretanja, pomoću šarki vrata. Sada vratite dječja vrata na mjesto. Sada, kada rotiramo nadređena vrata, tačka okretanja je na pravom mjestu.

Napravit ćemo skriptu koja otvara vrata kada se približite automobilu, ali prije nego što to učinimo potreban nam je način da "pokrenemo" događaj. Dodajte okvirni sudarač u roditeljski objekt igre na vratima i povećajte ga tako da ide malo dalje od automobila u oba smjera. Označite "isTrigger". Sada dodajte okvirni sudarač u glavnu kameru i prilagodite ga na odgovarajući način. Također provjerite "isTrigger". Dodajte komponentu Rigid Body u kameru i poništite "useGravity". Kad je vaša kamera odabrana, promijenite oznaku u "MainCamera" na vrhu inspektora.

Dodajte novu skriptu pod nazivom "LamboDoorBehavior" i dodajte donji kod. Prevucite skriptu na roditelja svojih vrata.

pomoću System. Collections;

pomoću System. Collections. Generic; koristeći UnityEngine; javna klasa LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; private float desireAngle = 0; // Ažuriranje se poziva jednom po okviru void Update () {currAngle = Mathf. LerpAngle (currAngle, desireAngle, Time.deltaTime * 3f); transform.localEulerAngles = novi Vector3 (currAngle, 0, 0); } public void OpenDoors () {wishAngle = 60f; } javna void CloseDoors () {željeniAngle = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Ova skripta će uzrokovati da se vaša vrata polako otvaraju kada ih zatvorite u AR pomoću funkcije Lerp () u jedinstvu koja interpolira između dvije točke (ili u ovom slučaju dva kuta).

Korak 7: Reprodukcija videa u AR -u

Reprodukcija videa u AR -u
Reprodukcija videa u AR -u
Reprodukcija videa u AR -u
Reprodukcija videa u AR -u

Posljednje što trebamo učiniti je reproducirati video u AR -u.

Desnom tipkom miša kliknite bilo koji objekt igre koji je dijete vašeg automobila i stvorite 3D objekt, Quad. Ovo će osigurati da quad bude dijete vašeg automobila. Postavite i promijenite veličinu ovog kvadrata tako da stane u armaturu vašeg automobila i izgleda kao da bi trebao biti tamo. Ovo je ono na čemu ćemo reproducirati video.

Dodajte komponentu video playera u svoj četverokut. Promijenite izvor u URL i pronađite čvrstu vezu do. MP4 datoteke ili povucite video datoteku u mapu svojine, a zatim povucite taj isječak u prazno mjesto. Ako želite streaming videozapisa s URL -a, Instragram je odličan izvor. Desnom tipkom miša kliknite bilo koji Instagram video zapis u Google Chromeu i kliknite Inspect. Pronađite div koji sadrži video i kopirajte vezu odatle (imam ovu metodu na slici gore).

Obavezno provjerite petlju ako želite da se reproducira više puta. Dodajte komponentu audio izvora ovom objektu igre i promijenite izlazni izvor u audio izvor na video playeru. Prevucite novostvoreni izvor zvuka u taj utor.

Konačno smo gotovi!

Korak 8: Postavite aplikaciju na telefon

Stavite aplikaciju na telefon!
Stavite aplikaciju na telefon!

Ako gradite za Android, možete jednostavno otići u datoteku i pritisnuti build i run sa priključenim telefonom.

Ako nadograđujete na iPhone ili iPad, svakako preuzmite Xcode iz trgovine aplikacija. Takođe, prijavite se za besplatni Apple developer račun sa www.apple.developer.com. Idite u datoteku i pritisnite build. Otvorite datoteku koja je stvorena iz Xcode -a i priključite telefon. Odaberite svoj razvojni tim i pritisnite dugme za reprodukciju.

Možda ćete morati malo pomaknuti kameru, ali sačekajte trenutak i dodirnite ekran i trebali biste vidjeti kako vam automobil pada s neba na tlo! Sada možete ući unutra i gledati svoj video zapis na nadzornoj ploči!

Zabavite se i javite mi ako imate pitanja u komentarima!

Preporučuje se: