Indholdsfortegnelse:

Augmented Reality Vuforia 7 Ground Plane Detection .: 8 trin
Augmented Reality Vuforia 7 Ground Plane Detection .: 8 trin

Video: Augmented Reality Vuforia 7 Ground Plane Detection .: 8 trin

Video: Augmented Reality Vuforia 7 Ground Plane Detection .: 8 trin
Video: Vuforia Unity Tutorial - Ground Plane #11 2024, Juli
Anonim
Augmented Reality Vuforia 7 Ground Plane Detection
Augmented Reality Vuforia 7 Ground Plane Detection
Augmented Reality Vuforia 7 Ground Plane Detection
Augmented Reality Vuforia 7 Ground Plane Detection

Vuforias augmented reality SDK til Unity 3D bruger ARCore og ARKit til at opdage jordplaner i AR. Dagens tutorial vil bruge deres native integration i Unity til at lave en AR -app til Android eller IOS. Vi får en bil til at falde ud af himlen på jorden, og dens døre åbnes automatisk, når vi kommer tæt på. Vi vil også gå over til at lave video i AR. For at følge med skal du bruge Unity 3D installeret på din computer (det er gratis). Disse instruktioner er for begyndere, så vi vil gå i detaljer over alt!

Den bedste del ved Vuforias SLAM er mængden af IOS og Android -enheder, den understøtter. En komplet enhedsliste findes her:

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

Trin 1: Start et nyt projekt

Start et nyt projekt
Start et nyt projekt

Download Unity 3D herfra, hvis du ikke allerede har det:

Sørg for at installere support til Vuforia Augmented Reality og Android eller IOS afhængigt af hvilken enhed du har.

Åbn Unity, og start et nyt Unity -projekt, kald det hvad du vil.

Lad os først komme ud af appen, der er konfigureret til at bygge ud, så vi ikke glemmer det. Så gem scenen og kald den "main".

Gå til filen, byg indstillinger, og skift din bygge -platform til Android eller IOS. Naviger til XR -indstillingerne i afspillerindstillinger, og tjek Vuforia Augmented Reality understøttet.

Hvis du er på Android, behøver du ikke gøre noget andet, men på IOS skal du gå til andre indstillinger og sørge for at lægge noget ind til dit bundt -id. Brug formatet "com. YourCompanyName. YourAppName."

Indsæt alt til beskrivelsen af kameraets brug, og ændr mål -minimum build -versionen til mindst 9.0.

Luk ud af det, og lad os nu få alt andet sat op.

Trin 2: Lad os konfigurere Vuforia

Lad os konfigurere Vuforia
Lad os konfigurere Vuforia

Lad os nu få alt sat op.

Gå til gameobject i topmenuen, og klik på ARCamera. Slet nu hovedkameraet fra din scene.

Vælg ARCamera, og klik på Åbn Vuforia -konfiguration i højre side i inspektøren. Klik på datasættets samling, og fjern markeringen i alt, fordi vi ikke bruger nogen billedmål her.

Klik på enheds tracker, og klik på track device pose. Skift sporingen fra roterende til positionel.

Gå nu tilbage til fanen spilobjekt og klik på Vuforia, Ground Plane og Plane finder. Dette huser scripts, der finder vores jordplan.

Den sidste ting, vi har brug for, er jordplanstadiet, så gå til spilobjekt igen i topmenuen, og klik på Vuforia, Jordplan, og vælg Jordplanstadie. Nu vil alt det, vi er børn af, dukke op i AR.

Trin 3: Tilføj et nyt script

Tilføj et nyt script
Tilføj et nyt script
Tilføj et nyt script
Tilføj et nyt script

Standardadfærden for denne jordplandetektering er at placere et nyt objekt, hver gang du trykker på skærmen. Det, vi ønsker, er bare at genplacere objektet, hver gang du trykker på skærmen. Så højreklik i mappen med dine aktiver, og opret et nyt C# script. Kald det "DeployStageOnce" og erstat alt med denne kode:

ved hjælp af System;

ved hjælp af UnityEngine; brug af Vuforia; public class DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; private PositionalDeviceTracker _deviceTracker; privat GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("AnchorStage skal angives"); Vend tilbage; } AnchorStage. SetActive (falsk); } public void Awake () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } public void OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } private void OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker (); } public void OnInteractiveHitTest (HitTestResult result) {if (result == null || AnchorStage == null) {Debug. LogWarning ("Hit test er ugyldig eller AnchorStage ikke angivet"); Vend tilbage; } var anker = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), resultat); hvis (anker! = null) {AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (true); } hvis (_previousAnchor! = null) {Destroy (_previousAnchor); } _previousAnchor = anker; }}

For at sikre, at dette script bliver brugt, skal vi kalde OnInteractiveHitTest () -funktionen, så gå tilbage til Unity og klik på flyfinder -spilobjektet. Skift tilstand fra automatisk til interaktiv. Træk scriptet, vi lige har lavet, til flyfinder -spilobjektet. Fjern ContentPositioningBehavior -scriptet. Du vil se et sted for et spilobjekt i DeployStageOnce -scriptet, trække flyfinderen derind og finde dette script, vælge funktionen OnInteractiveHitTest øverst på listen. Nu bliver vores funktion opkaldt, når brugeren klikker på skærmen!

Trin 4: Lad os tilføje bilen

Lad os tilføje bilen
Lad os tilføje bilen

Download denne gratis bil 3D -model herfra (Sørg for at få.obj -versionen):

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

Download også denne lyd, fordi vi spiller den, når bilen rammer jorden:

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

Pak begge disse filer ud, og træk dem ind i din aktivmappe.

Klik på bilen og se til højre, skift Brug indlejrede materialer til at bruge eksternt materiale (ældre) fra rullemenuen øverst. Nu vil vi være i stand til at ændre farven på alle materialer på bilen.

Træk bilen ind på din jordplanstadie og gør den til et barn. Skift skalaen til.035 på x, y og z.

Gå nu igennem hver af bilernes børnespilobjekter og skift deres materialer til den farve, du ønsker.

Tilføj en stiv karosserikomponent til bilens rodspilobjekt, og tilføj også en kassekollider, skaler den, så den dækker hele bilen. Tilføj også en kassekollider til jordplanstadiet og skaler den, så den er et par gange bredere end jordplanstadiet. På denne måde kan vi tabe bilen ud af himlen, og den vil ramme jorden ved hjælp af Unity's indbyggede fysikmotor.

Trin 5: Sæt bilen i himlen

Sæt bilen i himlen
Sæt bilen i himlen

Føj en lydkildekomponent til bilens rodspilobjekt, træk bilulykken ind i dens lydklipspot.

Nu skal vi lave et script, der sætter bilen i luften, når brugeren trykker på skærmen og derefter afspiller crashlyden, når bilen rammer jorden. Så højreklik i aktivmappen og opret et nyt C# script og kald det "CarController."

Udskift al koden der med dette:

ved hjælp af System. Collections;

ved hjælp af System. Collections. Generic; ved hjælp af UnityEngine; public class CarController: MonoBehaviour {private bool soundPlayed = false; // Opdatering kaldes én gang pr. Frame void Opdatering () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} public void MoveCar () {transform.localPosition += ny Vector3 (0, 10, 0); transform.eulerAngles += ny Vector3 (5, 20, 5); soundPlayed = false; } IEnumerator DelayPlaySound () {return returnerer nye WaitForSeconds (.2f); GetComponent (). Play (); }}

Føj MoveCar -funktionen til OnInteractiveHitTest -begivenheden som på billedet ovenfor. Nu bliver det kaldt, når brugeren klikker på skærmen.

Trin 6: Lambo -døre

Lambo Døre
Lambo Døre

Så hvis du udvider bilspilobjektet og finder dørene, vil du bemærke, at begge døre er et enkelt net. Hvis vi vil åbne dørene, vil vores eneste mulighed være Lambo -døre, der åbnes lodret. For at få dette til at fungere skal vi først ændre deres omdrejningspunkt.

Lav et tomt spilobjekt, der er et barn af bilen. Træk dørene ind og gør dem til et barn af dette nye spilobjekt. Flyt forældrespilobjektet til det sted, hvor drejepunktet skal være, ved dørhængslerne. Flyt nu barndørene tilbage på plads. Når vi nu roterer dørens forælder, er drejepunktet det rigtige sted.

Vi skal lave et script, der åbner dørene, når du kommer tæt på bilen, men før vi gør det, har vi brug for en måde at "udløse" begivenheden. Føj en kasse -kollider til dit dør -forældrespilobjekt, og skaler det, så det går lidt veje over bilen i begge retninger. Marker "isTrigger". Tilføj nu en kassekollider til hovedkameraet og skaler den korrekt. Tjek også "isTrigger". Føj en Rigid Body -komponent til dit kamera, og fjern markeringen fra "useGravity". Når dit kamera er valgt, skal du ændre mærket til "MainCamera" øverst i inspektøren.

Tilføj et nyt script kaldet "LamboDoorBehavior" og tilføj koden herunder. Træk scriptet ind på din dørs forælder.

ved hjælp af System. Collections;

ved hjælp af System. Collections. Generic; ved hjælp af UnityEngine; offentlig klasse LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; privat float ønsketAngle = 0; // Opdatering kaldes én gang pr. Frame void Opdatering () {currAngle = Mathf. LerpAngle (currAngle, winsAngle, Time.deltaTime * 3f); transform.localEulerAngles = ny Vector3 (currAngle, 0, 0); } public void OpenDoors () {winsAngle = 60f; } offentligt tomrum CloseDoors () {winsAngle = 0; } ugyldig OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} ugyldig OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Dette script får dine døre til at åbne langsomt, når du lukker dem i AR ved hjælp af funktionen Lerp () i enhed, der interpolerer mellem to punkter (eller i dette tilfælde to vinkler).

Trin 7: Afspilning af video i AR

Afspilning af video i AR
Afspilning af video i AR
Afspilning af video i AR
Afspilning af video i AR

Den sidste ting, vi skal gøre, er at få videoafspilning i AR.

Højreklik på et spilobjekt, der er et barn af din bil, og opret et 3D -objekt, Quad. Dette vil sikre, at quad er et barn af din bil. Placer og ændr størrelsen på denne quad, så den passer ind i bindestreg på din bil og ser ud til at være der. Det er det, vi skal afspille videoen på.

Føj en videoafspillerkomponent til din quad. Skift kilde til URL, og find et hårdt link til en. MP4 -fil, eller træk en videofil til din aktivmappe, og træk derefter klippet ind i den tomme slot. Hvis du vil streame i en video fra en URL, er Instragram en god kilde. Højreklik på en hvilken som helst Instagram -video i Google Chrome, og klik på inspicér. Find div'en, der indeholder videoen, og kopier linket derfra (jeg har denne metode vist på billedet ovenfor).

Sørg for at tjekke loop, hvis du vil have den til at afspille mere end én gang. Føj en lydkildekomponent til dette spilobjekt, og skift outputkilden til lydkilde på videoafspilleren. Træk din nyoprettede lydkilde ind i den slot.

Endelig er vi færdige!

Trin 8: Sæt appen på din telefon

Sæt appen på din telefon!
Sæt appen på din telefon!

Hvis du bygger til Android, kan du bare gå til filen og trykke på build og køre med din telefon tilsluttet.

Hvis du bygger ud til en iPhone eller og iPad, skal du sørge for at downloade Xcode fra app store. Tilmeld dig også en gratis Apple -udviklerkonto fra www.apple.developer.com. Gå til filen og tryk på build. Åbn den fil, der blev oprettet fra Xcode, og tilslut din telefon. Vælg dit udviklingsteam, og tryk på play -knappen.

Du skal muligvis flytte kameraet lidt rundt, men giv det et øjeblik og tryk på skærmen, og du skal se din bil falde ud af himlen på jorden! Nu kan du gå indenfor og se din video afspilles i instrumentbrættet!

God fornøjelse og lad mig vide, hvis du har spørgsmål i kommentarerne!

Anbefalede: