Sadržaj:

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

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

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

Vuforijin SDK za proširenu stvarnost za Unity 3D koristi ARCore i ARKit za otkrivanje zemaljskih ravnina u AR -u. Današnji će vodič koristiti njihovu izvornu integraciju u Unityju za izradu AR aplikacije za Android ili IOS. Automobil ć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. Da biste nastavili, trebat će vam Unity 3D instaliran na vašem računalu (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. Cijeli popis uređaja možete pronaći ovdje:

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

Korak 1: Pokrenite novi projekt

Pokrenite novi projekt
Pokrenite novi projekt

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. Dakle, spremite scenu i nazovite je "glavna".

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

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

Unesite bilo što za opis uporabe kamere i promijenite ciljnu minimalnu verziju gradnje 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 na gornjem izborniku i kliknite ARCamera. Sada izbrišite glavnu kameru sa scene.

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

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 Objekt igre i kliknite Vuforia, Ground Plane i Plane Finder. Ovdje se nalaze skripte koje pronalaze našu ravninu tla.

Posljednje što nam je potrebno je faza zemaljske ravnine, pa ponovno idite na objekt igre na gornjem izborniku, pa kliknite Vuforia, Ground Plane i odaberite Ground Plane Stage. Sada će se sve što smo mi ovo dijete pojaviti u AR -u.

Korak 3: Dodajte novu skriptu

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

Zadano ponašanje ovog otkrivanja ravnine tla je postavljanje novog objekta svaki put kada pritisnete na zaslon. Ono što želimo je samo premjestiti objekt svaki put kada pritisnete zaslon. Dakle, desnom tipkom miša kliknite u mapi svojstva i stvorite novu C# skriptu. Nazovite ga "DeployStageOnce" i zamijenite sve ovim kodom:

pomoću sustava;

pomoću UnityEngine; pomoću Vuforije; javni razred DeployStageOnce: MonoBehaviour {javni GameObject AnchorStage; privatni PositionalDeviceTracker _deviceTracker; privatni GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("AnchorStage mora biti naveden"); povratak; } AnchorStage. SetActive (false); } javna void Awake () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } public 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"); povratak; } var sidro = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), rezultat); if (sidro! = null) {AnchorStage.transform.parent = sidro.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (true); } if (_previousAnchor! = null) {Uništiti (_previousAnchor); } _prethodnoAnkor = 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. Povucite 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 zaslon!

Korak 4: Dodajmo automobil

Dodajmo auto
Dodajmo auto

Ovdje preuzmite ovaj besplatni 3D model automobila (obavezno nabavite.obj verziju):

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

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

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

Raspakirajte obje te datoteke i povucite ih u mapu imovine.

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

Povucite automobil na pozornicu prizemlja čineći ga djetetom. Promijenite ljestvicu na.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.

U objekt korijenske igre auta dodajte krutu karoserijsku komponentu i dodajte okvirni sudarač, razmjestite ga tako da pokrije cijeli automobil. U stupanj ravnine tla dodajte i okvirni sudarač te ga skalirajte tako da bude nekoliko puta širi od stupnja ravnine tla. Na ovaj način možemo ispustiti automobil s neba i udarit će o tlo pomoću Unityja ugrađenog motora za fiziku.

Korak 5: Stavite automobil na nebo

Stavite automobil na nebo
Stavite automobil na nebo

Dodajte komponentu izvora zvuka u korijenski objekt igre automobila, povucite zvuk sudara u mjesto audio isječka.

Sada moramo napraviti skriptu koja će podići automobil u zrak kada korisnik pritisne zaslon, a zatim će pustiti 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; pomoću UnityEngine; CarController javne klase: 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 u događaj OnInteractiveHitTest kao na gornjoj slici. Sada će se pozvati kada korisnik klikne na zaslon.

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. Kako bi ovo uspjelo, moramo prvo promijeniti njihovu točku zaokreta.

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

Napravit ćemo skriptu koja otvara vrata kad 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 fotoaparat i poništite "useGravity". S odabranim fotoaparatom promijenite oznaku u "MainCamera" na vrhu inspektora.

Dodajte novu skriptu pod nazivom "LamboDoorBehavior" i dodajte kôd u nastavku. Povucite skriptu na roditelja svojih vrata.

pomoću System. Collections;

pomoću System. Collections. Generic; pomoću UnityEngine; javna klasa LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; private float željeniAngle = 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); } javna void OpenDoors () {poželjanAngle = 60f; } public void CloseDoors () {željeniAngle = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

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

Korak 7: Reprodukcija videozapisa 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. Time ćete biti sigurni da je quad dijete vašeg automobila. Postavite i promijenite veličinu ovog četverokuta tako da stane unutar armature 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 imovine, a zatim povucite taj isječak u prazno mjesto. Ako želite streaming videozapisa s URL -a, Instragram je izvrstan izvor. Desnom tipkom miša kliknite bilo koji Instagram video zapis u Google Chromeu i kliknite Inspect. Pronađite div koji sadrži video zapis i kopirajte vezu odatle (imam ovu metodu na slici gore).

Provjerite petlju ako želite da se reproducira više puta. Ovom objektu igre dodajte komponentu audio izvora i promijenite izlazni izvor u audio izvor na video playeru. Povucite novostvoreni izvor zvuka u taj utor.

Napokon 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 and run sa priključenim telefonom.

Ako nadograđujete na iPhone ili iPad, svakako preuzmite Xcode iz trgovine aplikacija. Također, prijavite se za besplatni račun razvojnog programera Applea s 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 gumb za reprodukciju.

Možda ćete morati pomaknuti kameru, ali pričekajte trenutak i dodirnite zaslon 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čeni: