Turinys:

Padarykime išplėstinės realybės programą MEMES !: 8 žingsniai
Padarykime išplėstinės realybės programą MEMES !: 8 žingsniai

Video: Padarykime išplėstinės realybės programą MEMES !: 8 žingsniai

Video: Padarykime išplėstinės realybės programą MEMES !: 8 žingsniai
Video: КАК НАСТРОИТЬ L4D2 2024, Liepa
Anonim
Padarykime išplėstinės realybės programą MEMES!
Padarykime išplėstinės realybės programą MEMES!

Šioje „Instructable“programoje „Unity3D“ketiname sukurti išplėstinės realybės programą, skirtą „Android“ir „IOS“, kuri naudoja „Google“API memėms ieškoti. „Unity“naudosime „Vuforia“įžeminimo plokštumos aptikimą, todėl ši programa mobiliesiems veiks daugeliui „Android“ir „IOS“vartotojų. Naudodami „Vuforia“taip pat galėsime pritvirtinti paveikslėlius vienoje vietoje, kad galėtume vaikščioti per šį nuotraukų lauką, o objektai liks ten, kur yra.

Taip pat ketiname išbandyti naująją „IBM Watson“API, kad galėtume atlikti šias paieškas balsu ir panaudoti jų natūralią kalbą.

Taigi blogos naujienos nėra tai, kad nė viena iš šių API nėra visiškai nemokama, tačiau gera žinia yra ta, kad abu jie gali laisvai išbandyti. „Google“tinkintos paieškos API suteikia jums 100 nemokamų paieškų per dieną, o „IBM Watson“API - pirmą mėnesį nemokamai.

Trumpai tariant, ši programa gaus mūsų kalbą iš „Unity“mikrofono, nusiųskite ją į „IBM Watson“serverius, kurie grąžins mums tekstą. Tada paimsime šį tekstą ir nusiųsime jį į „Google“serverius, kurie mums pateiks vaizdo URL sąrašą JSON formoje.

1 veiksmas: nustatykite „IBM Watson SDK“„Unity“

„Unity“nustatykite „IBM Watson SDK“
„Unity“nustatykite „IBM Watson SDK“

Norėdami pradėti „Watson“API, pirmiausia turite gauti savo kredencialus iš jų svetainės. Eikite į Console.bluemix.net, sukurkite paskyrą ir prisijunkite. Eikite į savo IBM paskyrą ir eikite į debesies liejyklos „Orgs“ir sukurkite naują erdvę. Dabar eikite į savo prietaisų skydelį ir spustelėkite, kad naršytumėte paslaugas, pridėkite kalbą prie teksto paslaugos, nes tai mes ketiname naudoti. Pasirinkite savo regioną, organizaciją ir erdvę ir sukurkite projektą. Dabar apačioje pamatysite savo API prisijungimo duomenis.

Atsisiųskite „Unity“, jei jos dar neturite, ir importuokite „IBM Watson SDK“iš „Unity“turto parduotuvės. Mes galime tai išbandyti sukurdami tuščią žaidimo objektą ir pavadinę jį „IBM Watson“ir pridėdami srautinio scenarijaus pavyzdį. Šis scenarijus jau nustatytas įrašyti garsą iš vienybės ir nusiųsti jį į „Watson“serverius apdoroti.

Kol kas mes tik naudosime šį scenarijaus pavyzdį, nes turime daug ką nuveikti, bet galbūt kitą kartą galėsime gilintis į „Watson“dalykus, nes norėčiau ką nors padaryti su „Vision“API.

2 veiksmas: išbandykite „IBM Watson Text to Speech“

Išbandykite „IBM Watson Text to Speech“
Išbandykite „IBM Watson Text to Speech“

Šis scenarijus ieško vartotojo sąsajos teksto objekto, todėl leidžia sukurti naują vartotojo sąsajos mygtuką, kuris suteiks mums reikalingą tekstą. Mygtuką naudosime vėliau. Nustatykite drobę pagal mastelį pagal ekrano dydį ir šiek tiek pakeiskite mygtuko dydį. Pritvirtinkite jį apačioje kairėje. Vilkite tą tekstą į tuščią angą. Atidarykite scenarijų ir leiskite pridėti „IBM Watson“kredencialus, suraskite, kur naudojamas „resultsField“tekstas, ir nustatykite jį tik į „alt.transcript“, nes šį tekstą naudosime „Google“paieškai. Dabar, prieš tai išbandydami, turime dinamiškai nustatyti paties teksto dydį, kad viskas, ką sakome, tilptų į langelį. Grįžkite prie teksto ir nustatykite jį geriausiai. Įveskite tam tikrą tekstą, kad jį išbandytumėte. Dabar, kai spustelėsime paleisti, mūsų žodžiai bus perrašyti į tekstą iš „Watson Text to Speech“API.

3 veiksmas: nustatykite „Google“tinkintos paieškos API

Nustatykite „Google“tinkintos paieškos API
Nustatykite „Google“tinkintos paieškos API

Kitas dalykas, kurį turime padaryti, yra nustatyti „Google“tinkintos paieškos API, kad būtų galima naudoti „Unity“. Aukštu lygiu „Google“serveriams pateiksime „Unity“HTTP užklausą, kuri mums pateiks atsakymą JSON formatu.

Taigi eikite į „Google“tinkintos paieškos JSON API nustatymo puslapį, spustelėkite, kad gautumėte API raktą ir sukurtumėte naują programą. Laikykite tai atvira. Dabar galime pereiti prie valdymo pulto. Įveskite bet ką, kad svetainės galėtų ieškoti, pavadinkite tai bet kokiu pavadinimu ir spustelėkite „Sukurti“.

Spustelėkite valdymo skydelį ir atlikite keletą pakeitimų: mes norime daugiausia ieškoti memų ir įjungti vaizdų paiešką. Ieškodami svetainių perjunkite jį į visą žiniatinklį. Spustelėkite atnaujinti, kad išsaugotumėte viską.

Dabar suraskite „Google“API naršyklę ir eikite į tinkintos paieškos API. Tai leis mums formatuoti „Google“gautą JSON atsakymą. Taigi kol kas įveskite bet ką užklausai, įklijuokite savo paieškos variklio ID, įveskite 1 į filtrą, kad negautume dublikatų, įveskite 10 po skaičiumi, nes tai yra didžiausias rezultatų skaičius, kurį galime grąžinti vienu metu, įveskite vaizdą paieškos tipui, nes tai viskas, ką norime grąžinti. Pradžiai įveskite 1, o galiausiai po laukais įveskite „elementai/nuoroda“, nes už kiekvieną grąžintą prekę norime tik vaizdo nuorodos. Dabar, kai spustelėsite „Vykdyti“, pamatysite, kad grąžiname 10 gražių vaizdo nuorodų.

Dabar turime įkelti šias nuotraukas į „Unity“.

4 veiksmas: nustatykite „Vuforia“„Unity“

Nustatykite „Vuforia“„Unity“
Nustatykite „Vuforia“„Unity“

Leiskite „Vuforia“veikti, kad galėtume pasinaudoti jų įžeminimo plokštumos aptikimu. Išsaugokite dabartinę sceną ir eikite į kūrimo nustatymus. Perjunkite savo platformą į „Android“arba „IOS“ir, jei naudojate „iOS“, rinkinio identifikatoriui ką nors pridėkite, pridėkite fotoaparato ir mikrofono naudojimo aprašymą. XR nustatymuose patikrinkite „Vuforia“papildytos realybės palaikymą.

Dabar scenoje ištrinkite pagrindinę kamerą ir pridėkite „Vuforia ARCamera“. Eikite į konfigūracijos skyrių ir pakeiskite stebėjimo režimą į padėties nustatymą. Atžymėkite visas duomenų bazes, nes mums jų nereikia.

Dabar pridėkite plokštumos ieškiklį ir turime nepaisyti jo numatytosios elgsenos, nes norime įžeminimo plokštumos etapą įdiegti tik vieną kartą, todėl „Vuforia“svetainėje surasime scenarijų „Deploy Stage egyszer“. Įtraukite šį scenarijų į „Unity“ir padėkite jį į lėktuvo ieškiklį, pašalindami ten buvusį scenarijų. Pakeiskite režimą į interaktyvų ir įsitikinkite, kad funkcija „OnInteractiveHitTest“bus iškviesta į tą „Unity“įvykį. Kol būsime čia, nustatysime anksčiau padarytą mygtuką aktyvų, kai radome įžeminimo plokštumą, nustatykite numatytąją būseną į neaktyvią. Dabar į sceną įdėkite įžeminimo plokštumą ir pakeiskite ją į vidurio orą, nes norime, kad visos nuotraukos sklandytų ore. Vilkite šią įžeminimo plokštę į tuščią plokštumos ieškiklio angą.

5 veiksmas: sukurkite paveikslėlio surenkamąjį elementą

Sukurkite paveikslėlio surenkamąjį elementą
Sukurkite paveikslėlio surenkamąjį elementą

Prieš pradėdami sudėti visas šias detales, turime sukurti surenkamą žaidimo objektą, kurį galime parodyti kiekvieną kartą, kai įkeliamas paveikslėlis. Taigi sukurkite tuščią žaidimo objektą po įžeminimo plokštuma ir pavadinkite jį „picPrefab“. Sukurkite keturkojį kaip tą vaiką ir padidinkite jį 2, pasukite jo y 180 laipsnių kampu, kad tėvų pirmyn nukreiptas vektorius, rodomas kaip mėlyna rodyklė, būtų keturkampio priekis.

Sukurkite naują scenarijų „PictureBehavior“ir pridėkite jį prie „picPrefab“.

Dabar vilkite šį paveikslėlio surenkamąjį elementą į savo išteklių aplanką ir mes ketiname įdėti kiekvieną paveikslėlį.

Mūsų „PictureBehavior“scenarijus turėtų atrodyti taip:

naudojant System. Collections;

naudojant System. Collections. Generic; naudojant „UnityEngine“; public class PictureBehavior: MonoBehaviour {public Renderer quadRenderer; privatus „Vector3“pageidaujama pozicija; void Start () {// pažvelk į kameros transformavimą. LookAt (Camera.main.transform); Vector3 noriAngle = naujas Vector3 (0, transform.localEulerAngles.y, 0); transform.rotation = Quaternion. Euler (pageidaujamas kampas); // jėga į orą noriPosition = transform.localPosition; transform.localPosition += naujas Vector3 (0, 20, 0); } negaliojantis atnaujinimas () {transform.localPosition = Vector3. Lerp (transform.localPosition, wantPosition, Time.deltaTime * 4f); } public void LoadImage (eilutės URL) {StartCoroutine (LoadImageFromURL (url)); } IEnumerator LoadImageFromURL (eilutės URL) {WWW www = naujas WWW (url); pajamingumo grąža www; quadRenderer.material.mainTexture = www.texture; }}

6 veiksmas: sukurkite „Google“API scenarijų

Sukurkite „Google“API scenarijų
Sukurkite „Google“API scenarijų

Dabar leiskite vilkti nuorodą į keturių atvaizdų kūrėją iš mūsų „picPrefab“.

Mums liko tik du scenarijai, todėl galime sukurti C# scenarijų, vadinamą „GoogleService.cs“ir „PictureFactroy.cs“.

„GoogleService“viduje įklijuokite šį kodą, dėl kurio pateikiama mūsų užklausa:

naudojant System. Collections;

naudojant System. Collections. Generic; naudojant „UnityEngine“; naudojant „UnityEngine. UI“; viešosios klasės „Google“paslauga: „MonoBehaviour“{public PictureFactory pictureFactory; public Text buttonText; private const string API_KEY = "PUT API KEY ČIA !!!!!"; public void GetPictures () {StartCoroutine (PictureRoutine ()); } IEnumerator PictureRoutine () {buttonText.transform.parent.gameObject. SetActive (false); eilutės užklausa = buttonText.text; query = WWW. EscapeURL (query + "memes"); // ištrinti senus vaizdus pictureFactory. DeleteOldPictures (); // išsaugoti kameros pirmyn vektorių, kad galėtume judėti, kol objektai yra išdėstyti Vector3 cameraForward = Camera.main.transform.forward; // vienu metu galime gauti tik 10 rezultatų, todėl turime kartoti ir išsaugoti savo pažangą, keisdami pradžios numerį kas 10 int rowNum = 1; (int i = 1; i <= 60; i + = 10) {string url = "https://www.googleapis.com/customsearch/v1?q=" + query + "& cx = 011535004225295624669%3Afeb1gwic6bs & filter = 1 & num = 10 & searchType = image & start = " + i +" & fields = items%2Flink & key = " + API_KEY; WWW www = naujas WWW (url); pajamingumo grąža www; pictureFactory. CreateImages („ParseResponse“(www.text), rowNum, cameraForward); rowNum ++; } pajamingumas grąžina naują WaitForSeconds (5f); buttonText.transform.parent.gameObject. SetActive (tiesa); } Sąrašas ParseResponse (eilutės tekstas) {List urlList = new List (); string urls = text. Split ('\ n'); foreach (eilutės eilutė URL) {if (line. Contains ("link")) {string url = line. Substring (12, line. Length-13); // atrodo, kad filtravimas pagal png arba jpg neveikia iš „Google“, todėl tai darome čia: if (url. Contains (".jpg") || url. Contains (".png")) {urlList. Add (url); }}} return urlList; }}

7 žingsnis: sukurkite mūsų paveikslų gamyklą

Sukurkite mūsų paveikslų gamyklą
Sukurkite mūsų paveikslų gamyklą

„PictureFactory.cs“įdėjo šį kodą, kad sukurtų visas mūsų nuotraukas, ir įkelia jų tekstūras iš URL.

naudojant System. Collections;

naudojant System. Collections. Generic; naudojant „UnityEngine“; public class PictureFactory: MonoBehaviour {public GameObject picPrefab; vieša „GoogleService“googleService; public void DeleteOldPictures () {if (transform.childCount> 0) {foreach (Transformuoti vaiką šioje.transformuoti) {Sunaikink (child.gameObject); }}} public void CreateImages (ListurlList, int resultNum, Vector3 camForward) {int picNum = 1; Vector3 centras = Camera.main.transform.position; foreach (eilutės URL urlList) {Vector3 pos = GetPosition (picNum, resultNum, camForward); GameObject pic = Instantiate (picPrefab, pos, Quaternion.identity, this.transform); pic. GetComponent (). LoadImage (url); picNum ++; }} Vector3 GetPosition (int picNum, int rowNum, Vector3 camForward) {Vector3 pos = Vector3.zero; if (picNum <= 5) {pos = camForward + new Vector3 (picNum * -3, 0, rowNum * 3.5f); } else {pos = camForward + new Vector3 ((picNum % 5) * 3, 0, rowNum * 3.5f); } return pos; }}

8 žingsnis: mes baigėme

Mes baigėme!
Mes baigėme!
Mes baigėme!
Mes baigėme!

Sukurkite tuščią žaidimo objektą, pavadintą „GoogleService“, ir įdėkite į jį „GoogleSerivice“scenarijų.

Vilkite „PictureFactory“scenarijų į antžeminės plokštumos sceną, nes visos mūsų nuotraukos bus sukurtos kaip šio žaidimo objekto vaikai.

Nuvilkite atitinkamas inspektoriaus nuorodas ir atlikite tą patį su „Google“paslauga.

Paskutinis dalykas, kurį turėtume padaryti, yra įsitikinti, kad iškviečiama „GetPictures“funkcija. Taigi eikime į mūsų mygtuko įvykį „onClick“ir paskambinkime iš ten.

Dabar galime spustelėti „Play“ir tai išbandyti. Įsitikinkite, kad įjungta įžeminimo plokštumos pakopa ir mygtukas. Pasakykite žodį ir spustelėkite mygtuką, kad atliktumėte to teksto paiešką!

Dabar, kad gautumėte šią programą savo telefone, prijunkite ją ir eikite į Failas-> Sukurti nustatymus. Paspauskite ir kurkite!

Praneškite man komentaruose, jei turite klausimų!

Rekomenduojamas: