I det første innlegget i denne serien snakket vi om hvor fantastisk Vuforia er for å skape Augmented Reality-opplevelser, og nå er vi klare til å praktisere disse konseptene i en faktisk app. I denne opplæringen begynner vi å leke med Augmented Reality ved hjelp av Vuforia on Unity 3D. Vi lærer hvordan du konfigurerer Vuforia og begynner å utvikle et AR-spill fra bunnen av, ved å vedta en logikk som ligner den som brukes på Pokémon GO!
Det vil ikke være nødvendig å ha noen tidligere erfaring på Unity eller Vuforia for å følge denne opplæringen.
Hvis du ønsker å grave dypere, hvorfor ikke lære om en av de mest grunnleggende av begreper AR, markører, i vår korte kurs:
Vuforia bruker enhetens kamerainnføring kombinert med akselerometer og gyroskopdata for å undersøke verden. Vuforia bruker datasyn å forstå hva det ser på kameraet for å skape en modell av miljøet. Etter å ha behandlet dataene, kan systemet lokalisere seg selv i verden, kjenne dets koordinater: hvor er opp, ned, venstre, høyre og så videre.
Hvis du ikke vet hva Vuforia handler om, ta en titt på det første innlegget i denne serien.
Denne opplæringen er delt inn i to deler. I dette vil vi se noen av spesifikasjonene til Vuforia på Unity 3D, vi lærer å sette opp miljøet, og vi skal også begynne å utvikle et lite AR-spill som heter Shoot the Cubes. Vi vil være spesielt oppmerksom på ARCamera Prefab, en av de viktigste delene av Vuforia i Unity.
I den andre delen fortsetter vi å utvikle Shoot the Cubes-spillet, legge til interaktivitet og gjøre det mer interessant. Denne delen vil ikke gå for mye inn i Vuforias særegenheter, da ideen vil være å utforske noen muligheter som Unity tilbyr for å skape en engasjerende Augmented Reality-opplevelse.
Enhet er en populær og kraftig spillmotor som er enkel å bruke og kan kompilere spill for flere plattformer. Det er noen fordeler ved å bruke Unity for å skape AR-opplevelser med Vuforia. Det er mulig å målrette mot alle Vuforias støttede systemer, inkludert smarte briller. Det er enklere å bruke, takket være Prefabs gitt av Vuforias SDK. Ved å bruke bare Unity er det mulig å få tilgang til alle funksjonene som er tilgjengelige på Vuforia.
Du kan få tilgang til alle Vuforias funksjoner på Unity ved hjelp av Vuforia prefabs. Alt du trenger å gjøre er å dra objektet til scenen og konfigurere det. Som navnet antyder, er prefabs som maler for å lage og klone Unity-objekter komplett med komponenter og egenskaper. For eksempel, ImageTarget representerer bilder som kan brukes som mål. La oss ta en titt på Vuforia prefabs tilgjengelig på Unity:
Spillet som vi skal utvikle er enkelt, men det illustrerer prinsippene for Augmented Reality godt, og det vil lære oss noen av Vuforias grunnleggende. Spillets mål er å finne og skyte terninger som flyr rundt i rommet. Spilleren vil søke rundt kubene ved hjelp av hans eller hennes enhet og "trykk" for å skyte på boksene. Vi vil ikke bekymre oss om score, nivå eller noe sånt, men du kan enkelt utvide på disse aspektene av spillet selv.
Før vi begynner å leke, må vi forberede Unity for Vuforia. Prosessen er ganske enkel, og vi må i utgangspunktet importere Vuforias SDK-pakke og legge til en ARCamera prefab til vårt prosjekt.
Det er på tide å sjekke om miljøet fungerer riktig.
Hvis du har et webkamera på datamaskinen, kan du trykke på Unitys avspillingsknapp for å sjekke om ARCamera Jobber. Det vil være mulig å gjenkjenne mål ved hjelp av webkameraet; Det vil imidlertid ikke være mulig å bruke sensordata for å teste din AR-opplevelse. Hvis kamerainnmatingen ikke viser Spill vindu, er det en mulighet for at kameraet ditt ikke er kompatibelt med webkameraprofilen som tilbys av ARCamera.
Den beste måten å teste ditt Vuforia-program på er direkte på enheten. Vi samler prosjektet for Android, men de samme trinnene gjelder for iOS-enheter.
Etter bygningen blir applikasjonen installert på enheten. For nå, alt du bør forvente er å se kameraet feed på enheten uten noen feil. Hvis du har det, fungerte alt riktig.
Målet med Shoot the Cubes spillet er å lete etter og skyte flygende kuber med enhetens kamera og sensorer. Denne tilnærmingen ligner den som ble brukt på Pokémon GO. For å oppnå dette, trenger vi bare å bruke Vuforia ARCamera ferdighus.
Det er mange skript knyttet til ARCamera. For nå er den eneste du trenger å forstå, den Vuforia Oppførsel manus. La oss se på alternativene:
For nå, alt det du må endre i ARCamera er den Word Center Mode. Klikk på ARCamera element i hierarkiet og i Inspektør ruten, endre World Center Mode til DEVICE_TRACKING.
La oss legge til en kube på scenen og teste om ARCameraen fungerer som den skal.
Du må se deg rundt ved å rotere enheten for å finne terningen. Du vil legge merke til at gjenstanden forblir stille på samme sted, selv etter at du roterer enheten vekk fra den. Det er som om kuben eksisterer i den virkelige verden, men kan bare ses med enhetskameraet.
Det første problemet med søknaden vår så langt er at kuben kan vises hvor som helst og brukeren må se seg rundt for å finne den. Siden verdens sentrum er definert i henhold til enhetens sensorer, kan vi ikke være sikker på elementets faktiske posisjon. Dette skyldes at brukeren kan starte med enheten i en hvilken som helst retning, og fordi målerotasjonen måles, varierer fra enhet til enhet.
For å sikre at AR-enhetene starter på grunn av brukeren, er det enklest å vente på at Vuforia skal definere sentrum av verden og finne den ARCamera rotasjon og deretter å ordne startplasseringen av elementer i henhold til den retningen.
Vi lager en Spawn Manager å definere plasseringen av terningene som skal hages. Lederen vil definere sin posisjon i henhold til ARCamera rotasjon. Det venter til rotasjonen er satt, og flytt deretter 10 enheter til forsiden av kameraet.
Først la oss legge til Vuforia-pakken.
bruker UnityEngine; bruker System.Collections; // Vi må bruke Vuforia-pakken til //. Kontroller at alt fungerer ved hjelp av Vuforia; offentlig klasse SpawnScript: MonoBehaviour
Å få tilgang ARCamera, bruk Camera.main
. La oss lage en funksjon for å få kameraposisjonen og sette kuben til å bli spunnet 10 enheter fremover fra dette punktet.
offentlig klasse SpawnScript: MonoBehaviour // Definer posisjonen hvis objektet // i henhold til ARCamera-posisjonen privat bool SetPosition () // få kameraposisjonen Transform cam = Camera.main.transform; // still inn 10 enheter fremover fra kameraposisjonen transform.position = cam.forward * 10; returnere sant;
Vi endrer posisjonen bare en gang fra Start
funksjon. Forandre posisjon
er en coroutine som vil vente litt tid før du setter stilling.
privat bool mPositionSet; ugyldig start () // Definere gyteposisjonen StartCoroutine (ChangePosition ()); // Vi bruker en Coroutine til å gi en liten // forsinkelse før du stiller inn posisjonen privat IEnumerator ChangePosition () yield returner nye WaitForSeconds (0.2f); // Definer sperringsposisjonen bare en gang hvis (! MPositionSet) // endre posisjonen bare hvis Vuforia er aktiv hvis (VuforiaBehaviour.Instance.enabled) SetPosition ();
La oss teste skriptet:
Elementene begynner å overlappe; Men når du bygger og kjører programmet på en enhet, vil du se at _SpawnController og sfæren vil dukke opp foran kameraet, og kuben vil være på et annet sted. Gå videre og test det! Pass på at du ser på enheten når appen starter.
Gratulerer, du har opprettet din første Augmented Reality-opplevelse. Ja, det er litt grovt, men det fungerer! I denne opplæringen har du lært hvordan du bruker Vuforias viktigste prefab i Unity, the ARCamera. Du lærte også hvordan du konfigurerer den og hvordan du bruker enhetssensorene for å skape illusjonen om at et virtuelt objekt settes inn i verden.
I neste opplæring vil vi forbedre dette prinsippet for å skape et ekte spill og en mer engasjerende opplevelse. Vi fortsetter å utvikle Shoot the Cubes-spillet, legger til noe interaktivitet og utforsker Unitys muligheter for å skape et interessant AR-spill. Vi gjør kuberne gyte og fly rundt, og vi lar spilleren søke og ødelegge dem ved å skyte en laser ut av enheten.
Ser deg snart!
Spesiell takk for bildevektor designet av Freepik, lisensiert under Creative Commons CC BY-SA.