Lav en Killer Augmented Reality App: 7 trin

Lav en Killer Augmented Reality App: 7 trin

Indholdsfortegnelse:

Anonim

Denne vejledning skal vise dig, hvordan du bruger API'er i Unity, så du kan gøre dine forstørrede reality apps smartere. Alt skal være rettet mod begyndere. Vi vil bruge Unity 3D videospilmotoren, fordi det vil gøre det muligt for os at lave cross platform apps, der vil arbejde på IOS eller Android. Vuforia-plugin'et giver os mulighed for at få adgang til kamerastrømmen, og Unitys WWW-klasse giver os mulighed for at kommunikere med API'erne via http-protokollen. Dette er den samme mekanisme, der bruges, når du får adgang til websteder i din browser.

Jeg tror, ​​at den virkelige killer-applikation af forstærket virkelighed ikke er spil, men snarere ved at bruge AR som et værktøj til faktisk at forbedre din nuværende opfattelse af virkeligheden. Vejen til at gøre dette er ved at oprette forbindelse apps, der udnytter magten på internettet.

Hvad angår software skal du bruge Unity 3D:

og Vuforia SDK:

forsyninger:

Trin 1: Enheds WWW klasse

Så, Unitys WWW-klasse er det første skridt i at gøre disse ting, fordi det giver dig mulighed for at stille henvendelser via http til en server. Når du besøger et websted, gør du netop dette, du skriver en URL til din browser og foretager en http-anmodning til serveren på den adresse.Webserveren returnerer dig html-koden, som din browser bruger til at gøre websiden.

Trin 2: Lad os lave en

For at illustrere dette kan vi yderligere henvende os til www.unity.com.

Start et nyt enhedsprojekt, lav et C # script kaldet test og træk det på dit hovedkamera.

Først opret en opkalder kaldet anmodning, vi ønsker at arbejde med www objekter inde i en coroutine, så vi stopper ikke hele programmet, mens tingene behandles. Lad os så sørge for, at denne kode kører ved at starte coroutinen i startfunktionen.

Inde i koroutinen lader oprette en streng og definerer den som webadressen til Unity.

Opret et nyt www objekt og send i url.

Yield return www (så vi ikke fortsætter, indtil den operation er færdig).

Opret en streng kaldet html og definer det som www.text, hvilket en tekststreng, der blev returneret fra vores anmodning.

Når vi udskriver dette ud, vil vi se, at dette er html til unity.com

Trin 3: Introduktion til webskrabning.

Nu uden at komme ind i api er vi endnu, kunne vi analysere disse data for at trække nogle nyttige oplysninger fra hjemmesider til brug i vores app. Dette kaldes webskrabning. Sig for eksempel vi ønsker at udtrække titlen på websiden.

Vi ved fra standard html, at titlen vil være mellem to titelkoder.

En start titel og slut titel tag: Dette er titlen på websiden

Bare ved, at der er bedre og renere måder at gøre dette på, men for tidens skyld lader vi bare manipulere snoren for at trække ud, hvad vi ønsker.

Lige nu har vi en streng adskilt af individuelle tegn. Så når vi udskriver html 2 får vi det tredje tegn (siden indekserne starter ved 0). Lad os i stedet oprette en liste med strings og opdele den med den nye linjetegn. Nu når vi udskriver htmlList 2, får vi den tredje tekstlinie.

For at finde linjen, der indeholder "titel", kan vi løbe gennem hver linje af tekst ved hjælp af en for loop.

Vi kan finde den ønskede linje ved at kontrollere, om den aktuelle linje indeholder ordtitel. Når vi har fundet den linje, kan vi erstatte den første titel tag med en tom streng og derefter erstatte den anden titel tag med en tom streng. Lad os udskrive resultatet, og så kan vi bryde her, fordi vi ikke behøver at gå længere. Resultatet vil nu indeholde titlen på websiden. Hvis du vil have en bedre, men lidt mere kompliceret metode til at opnå dette, skal du se på regulære udtryk eller REGEX.

Trin 4: API's

Nu kan vi se på at lave en egentlig API-anmodning. Vi skal bruge Google Custom Search API. Først har vi brug for en unik nøgle. Så søg google brugerdefineret søgning api nøgle og gå til det første link. Opret en konto, hvis du ikke allerede har en, og opret en app. Aktivér brugerdefineret søgning API til denne app og kopier nøglen til dit udklipsholder.

Du kan gøre 100 søgninger om dagen gratis med denne særlige API.

Trin 5: Hej, jeg er JSON, rart at møde dig.

Gå tilbage til Unity og lad os begynde med at slette alt, indtil vi sætter vores html-streng. Lad os omdøbe denne "json", fordi vi vil komme tilbage til et JSON objekt. Lad os bare kopiere vores API-nøgle hvor som helst for nu.

Gå tilbage til google og klik på "Brug af hvile". Hvis du kigger rundt her, vil du opdage, at api kræver 3 parametre, api-nøglen, et brugerdefineret søgemaskine-id og et søgeforespørgsel. Kopier eksemplet anmodning og forbi det i URL-strengen tilbage i Unity.

Flyt din licensnøgle til den rigtige placering i url, og da vi ikke vil oprette en brugerdefineret søgemaskine, skal du ændre cx-parameteren til cref og gøre den til en tom streng.

Opret en privat streng variabel kaldet forespørgsel og sæt det samme som hvad du vil søge efter. Gå tilbage til url og fjern alt efter "q =" og sammenkæd strengen med den forespørgselsvariabel, vi lige har defineret. Nu, når vi udskriver svaret, vil vi få alle google-resultaterne organiseret i pæne JSON-objekter.

Trin 6: Hvad nu?

Fantastisk, nu har vi mere gibberish.

Nå kan du udtrække hvad du vil bruge et bibliotek kaldet LitJSON.

github.com/lbv/litjson

Det ville give os mulighed for at behandle alle disse oplysninger pænt.

For en hurtig løsning kan du bare analysere det ligesom vi gjorde med html fra det sidste eksempel.

For at få dette synligt i spilvisningen skal du højreklikke i Unity-hierarkiet og oprette en ny brugerteksttekst.

Tilføj dette ved hjælp af et direktiv til dit script: "UnityEngine.UI;"

Opret nu kun en henvisning til brugergrænsefladen ved at definere et offentligt GameObject yourTextObject;

Træk i teksten til det tomme spor, som netop blev oprettet i inspektøren.

Nu kan du bare sætte det sådan:

yourTextObject.GetComponent().text = "Hvad end du vil."

Trin 7: Lad os tage det et skridt videre …

Jeg lavede denne vejledning, fordi jeg lærte meget at forsøge at finde en løsning for manglen på et gratis omvendt billedsøgning API. Google giver dig mulighed for at udføre et omvendt billedsøgning i browseren, men ikke via http ligesom alle deres andre tjenester.

Jeg var fast besluttet på at få det til at fungere, så her er hvad jeg gjorde:

Det viser sig, at resultatet af en anmodning til google omvendt billedsøgning bliver omdirigeret flere gange og endelig gengives som html via javascript. Så det er ikke muligt at få de data, vi har brug for i enhed alene. Den eneste måde jeg kunne tænke mig at få det på var at skabe min egen api af slags i php. Jeg kunne passere URL'en til det billede, jeg vil søge fra Unity til et php script, jeg har hostet på en server. PHP-scriptet følger omdirigeringer fra google ved hjælp af cURL og kan se den javascript gengivne html ved hjælp af Node.js, som er et server side javascript-miljø.

Hvis du er interesseret i at lære mere om dette, skal du se videoen i introduktionen.

Tak for at se, og lad mig vide, hvis du har spørgsmål!