Përmbajtje:

Lejoni të bëni një Aplikacion të Realitetit të Shtuar për MEMES !: 8 hapa
Lejoni të bëni një Aplikacion të Realitetit të Shtuar për MEMES !: 8 hapa

Video: Lejoni të bëni një Aplikacion të Realitetit të Shtuar për MEMES !: 8 hapa

Video: Lejoni të bëni një Aplikacion të Realitetit të Shtuar për MEMES !: 8 hapa
Video: КАК НАСТРОИТЬ L4D2 2024, Korrik
Anonim
Lejoni të bëni një Aplikacion të Realitetit të Shtuar për MEMES!
Lejoni të bëni një Aplikacion të Realitetit të Shtuar për MEMES!

Në këtë Instructable ne do të bëjmë një aplikacion të realitetit të shtuar për Android dhe IOS në Unity3D që përdor API të Google për të kërkuar meme. Ne do të përdorim zbulimin e aeroplanit tokësor të Vuforia në Unity kështu që ky aplikacion celular do të funksionojë për shumicën e përdoruesve të Android dhe IOS. Përdorimi i Vuforia gjithashtu do të na lejojë që fotografitë të jenë të ankoruara në një vendndodhje, në mënyrë që të ecim nëpër këtë fushë të fotografive dhe objektet të qëndrojnë aty ku janë.

Ne gjithashtu do të testojmë API -në e re të IBM Watson, në mënyrë që t'i bëjmë këto kërkime me zërin tonë dhe të përdorim përpunimin e gjuhës së tyre natyrore.

Pra, lajmi i keq është se asnjë nga këto API nuk është plotësisht falas, por lajmi i mirë është se ata të dy janë të lirë të provojnë. API e kërkimit me porosi të Google ju jep 100 kërkime falas në ditë, dhe API IBM Watson ju jep muajin e parë falas.

Me pak fjalë, ky aplikacion do të marrë fjalimin tonë nga mikrofoni në Unity, dërgojeni atë në serverët IBM Watson, të cilët do të na kthejnë tekstin. Ne pastaj do ta marrim atë tekst dhe do ta dërgojmë tek serverët e Google që do të na kthejnë një listë të URL -ve të imazhit në formën JSON.

Hapi 1: Vendosni IBM Watson SDK në Unitet

Vendosni SDK -në IBM Watson në Unitet
Vendosni SDK -në IBM Watson në Unitet

Për të aktivizuar API -në Watson, së pari duhet të merrni kredencialet tuaja nga faqja e tyre. Shkoni te Console.bluemix.net, krijoni dhe krijoni llogari dhe regjistrohuni. Shkoni te llogaria juaj IBM dhe lundroni te Orgs shkritore cloud dhe krijoni një hapësirë të re. Tani shkoni në pultin tuaj dhe klikoni për të shfletuar shërbimet, shtoni fjalimin në shërbimin e tekstit sepse kjo është ajo që ne do të përdorim. Zgjidhni rajonin, organizatën dhe hapësirën tuaj dhe krijoni projektin. Tani do të shihni kredencialet tuaja API në fund.

Shkarkoni Unity nëse nuk e keni dhe importoni IBM Watson SDK nga dyqani i aseteve në Unity. Ne mund ta provojmë këtë duke krijuar një objekt të zbrazët të lojës dhe ta quajmë IBM Watson dhe të shtojmë shembullin e skriptit të transmetimit. Ky skenar është vendosur tashmë për të regjistruar audio nga uniteti dhe për ta dërguar atë në serverët Watson për përpunim.

Tani për tani ne thjesht do të përdorim këtë skenar shembull sepse kemi shumë më tepër për të bërë, por ndoshta herën tjetër mund të hyjmë më thellë në gjërat e Watson sepse do të doja të bëja diçka me API të Vizionit.

Hapi 2: Provoni Tekstin në të folur të IBM Watson

Provoni tekstin në të folur të IBM Watson
Provoni tekstin në të folur të IBM Watson

Ky skenar po kërkon një objekt teksti UI, kështu që le të krijojmë një buton të ri UI, kjo do të na japë tekstin që na nevojitet, ne do ta përdorim butonin më vonë. Vendosni kanavacën në shkallë me madhësinë e ekranit dhe ndryshoni madhësinë e butonit pak. Mbylle atë në pjesën e poshtme të majtë. Tërhiqeni atë tekst në vendin e zbrazët. Hapni skriptin dhe le të shtojmë kredencialet tona të IBM Watson, gjeni se ku përdoret teksti "resultsField" dhe vendoseni në vetëm "alt.transcript" sepse ne do ta përdorim këtë tekst për të kërkuar në Google. Tani, para se ta testojmë këtë, duhet të bëjmë madhësinë e tekstit në mënyrë dinamike, kështu që çfarëdo që themi do të përshtatet brenda kutisë. Kthehuni tek teksti dhe vendoseni në përshtatjen më të mirë. Shkruani një tekst për ta provuar atë. Tani kur klikojmë luajmë fjalët tona do të transkriptohen në tekst nga API Watson Text to Speech.

Hapi 3: Konfiguroni API -në e Kërkimit të personalizuar të Google

Konfiguro API -në e Kërkimit të Përshtatur të Google
Konfiguro API -në e Kërkimit të Përshtatur të Google

Pjesa tjetër që duhet të bëjmë është të vendosim api të kërkimit me porosi të Google për t'u përdorur në Unity. Në një nivel të lartë ne do të bëjmë një kërkesë HTTP nga Unity për serverët e Google e cila do të na kthejë një përgjigje në formatin JSON.

Pra, shkoni te faqja e konfigurimit të Google Custom Search JSON API, klikoni për të marrë një çelës API dhe për të krijuar një aplikacion të ri. Mbaje këtë të hapur. Tani mund të shkojmë te paneli i kontrollit. Vendosni çdo gjë që faqet të kërkojnë, emërtoni çfarëdo dhe klikoni në krijimin.

Klikoni në panelin e kontrollit dhe ju lejon të bëni disa modifikime: ne duam të kërkojmë kryesisht meme dhe të aktivizojmë kërkimin e imazheve. Nën faqet për të kërkuar kalojeni atë në të gjithë uebin. Klikoni përditësimin për të ruajtur gjithçka.

Tani gjeni Google API explorer dhe shkoni te API e kërkimit me porosi. Kjo do të na lejojë të formatojmë përgjigjen JSON që marrim nga Google. Pra, vendosni çdo gjë për pyetjen tani, ngjisni në ID -në e motorit tuaj të kërkimit, vendosni 1 në filtër në mënyrë që të mos marrim kopje, vendosni 10 nën numër sepse ky është numri maksimal i rezultateve që mund të kthejmë në të njëjtën kohë, vendosni imazhin për llojin e kërkimit sepse kjo është gjithçka që duam të kthejmë. Vendosni 1 për fillim dhe në fund nën fushat vendosni "artikuj/lidhje" sepse për secilin artikull të kthyer ne duam vetëm lidhjen e imazhit. Tani kur klikoni ekzekutoni do të shihni që ne marrim 10 lidhje të bukura të imazhit të kthyera.

Tani duhet t'i fusim këto fotografi në Unitet.

Hapi 4: Vendosni Vuforia në Unitet

Vendosni Vuforia në Unitet
Vendosni Vuforia në Unitet

Lejoni që Vuforia të punojë në mënyrë që të mund të shfrytëzojmë zbulimin e tyre të aeroplanit tokësor. Ruani skenën tuaj aktuale dhe shkoni te cilësimet e ndërtimit. Kaloni platformën tuaj në Android ose IOS dhe nëse në IOS vendosni diçka për identifikuesin e paketës, shtoni një përshkrim të përdorimit të kamerës dhe mikrofonit. Nën cilësimet XR kontrolloni Vuforia të mbështetur nga realiteti i shtuar.

Tani në skenë fshini kamerën kryesore dhe shtoni një Vuforia ARCamera. Shkoni në seksionin e konfigurimit dhe ndryshoni modalitetin e gjurmimit në pozicion. Çiqni të gjitha bazat e të dhënave sepse nuk kemi nevojë për to.

Tani shtoni një zbulues aeroplani dhe ne duhet të anashkalojmë sjelljen e tij të paracaktuar sepse duam të vendosim fazën e aeroplanit tokësor vetëm një herë, kështu që ju lejon të gjeni skenarin Deploy Stage një herë në faqen e internetit të Vuforia. Sillni atë shkrim në Unitet dhe vendoseni në gjetësin e avionit, duke hequr shkrimin e vjetër që ishte atje. Ndryshoni modalitetin në interaktiv dhe sigurohuni që funksioni "OnInteractiveHitTest" të thirret në atë Ngjarje Uniteti. Ndërsa jemi këtu, le të vendosim butonin që kemi bërë më herët në aktiv pasi të kemi gjetur rrafshin tokësor, të vendosim gjendjen e tij të paracaktuar në joaktive. Tani vendosni një aeroplan tokësor në skenë dhe ndryshojeni atë në ajër të mesëm sepse duam që të gjitha fotografitë të notojnë në ajër. Tërhiqeni këtë aeroplan tokësor në vendin e zbrazët në gjetësin e aeroplanit.

Hapi 5: Krijoni një Parafjalë të Fotografisë

Krijoni një parafabrikim fotografish
Krijoni një parafabrikim fotografish

Para se të fillojmë t'i bashkojmë të gjitha këto pjesë, ne duhet të krijojmë një objekt të parafabrikuar të lojës që mund ta krijojmë sa herë që ngarkohet një fotografi. Pra, krijoni një objekt të zbrazët të lojës nën fazën e rrafshit tokësor dhe e quani atë "picPrefab". Krijoni një kuadrat si fëmijë dhe shkallëzojeni atë me 2, rrotulloni y -in e tij me 180 gradë në mënyrë që vektori i prindërve përpara, i cili tregohet si një shigjetë blu, të jetë pjesa e përparme e kuadratit.

Krijoni një skenar të ri të quajtur "PictureBehavior" dhe shtojeni atë në picPrefab tonë.

Tani tërhiqeni këtë parafjalë të fotografisë në dosjen tuaj të pasurive dhe kjo është ajo që ne do të vendosim secilën fotografi.

Skenari ynë "PictureBehavior" duhet të duket kështu:

duke përdorur System. Collection;

duke përdorur System. Collections. Generic; duke përdorur UnityEngine; klasë publike PictureBehavior: MonoBehaviour {public Renderer quadRenderer; vektori privat3 i dëshiruarPozicioni; void Fillimi () {// shikoni transformimin e kamerës. Shikoni (Camera.main.transform); Vector3 dëshiruarAngle = i ri Vector3 (0, transform.localEulerAngles.y, 0); transformim.rrotullim = Kuaternion. Euler (Këndi i dëshiruar); // forca në ajër e dëshiruarPozicioni = transformo.pozicioni lokal; transform.localPosition += vektori i ri3 (0, 20, 0); } void Update () {transform.localPosition = Vector3. Lerp (transform.localPosition, dëshiruarPozicioni, Time.deltaTime * 4f); } zbrazëti publike LoadImage (url i vargut) {StartCoroutine (LoadImageFromURL (url)); } IEnumerator LoadImageFromURL (url i vargut) {WWW www = new WWW (url); kthimi i rendimentit www; quadRenderer.material.mainTexture = www.texture; }}

Hapi 6: Krijoni një Skript për API të Google

Krijoni një Skript për API të Google
Krijoni një Skript për API të Google

Tani le të tërheqim referencën për interpretuesin e kuadratit nga "picPrefab" -i ynë.

Na kanë mbetur vetëm dy skripte për të bërë, kështu që le të krijojmë një shkrim C# të quajtur GoogleService.cs dhe PictureFactroy.cs.

Brenda "GoogleService" ngjitni këtë kod që bën kërkesën tonë:

duke përdorur System. Collection;

duke përdorur System. Collections. Generic; duke përdorur UnityEngine; duke përdorur UnityEngine. UI; klasa publike GoogleService: MonoBehaviour {public PictureFactory pictureFactory; butoni i tekstit publikTeksti; string konstitues API_KEY = "VUTN KRYESIN E API -së K !!!!!TU !!!!!"; zbrazëti publike GetPictures () {StartCoroutine (PictureRoutine ()); } IEnumerator PictureRoutine () {buttonText.transform.parent.gameObject. SetActive (false); query string = buttonText.text; query = WWW. EscapeURL (pyetje + "meme"); // fshini imazhet e vjetra pictureFactory. DeleteOldPictures (); // ruani vektorin e kamerës përpara në mënyrë që të mund të lëvizim ndërsa objektet po vendosen Vector3 cameraForward = Camera.main.transform.forward; // ne mund të marrim vetëm 10 rezultate në të njëjtën kohë, kështu që ne duhet të bëjmë lak dhe të ruajmë përparimin tonë duke ndryshuar numrin e fillimit pas çdo 10 int rowNum = 1; për (int i = 1; i <= 60; i + = 10) {string url = "https://www.googleapis.com/customsearch/v1?q=" + pyetje + "& cx = 011535004225295624669%3Afeb1gwic6bs & filter = 1 & num = 10 & searchType = image & start = " + i +" & fushat = artikujt%2Flink & key = " + API_KEY; WWW www = i ri WWW (url); kthimi i rendimentit www; pictureFactory. CreateImages (ParseResponse (www.text), rowNum, cameraForward); rreshtNum ++; } kthimi i rendimentit të ri WaitForSeconds (5f); buttonText.transform.parent.gameObject. SetActive (e vërtetë); } Lista ParseResponse (teksti i vargut) {Lista urlList = lista e re (); string urls = text. Split ('\ n'); foreach (rreshti i vargut në urls) {if (line. Përmban ("link")) {string url = line. Substring (12, line. Gength-13); // filtrimi me png ose jpg nuk duket se funksionon nga Google, kështu që ne e bëjmë këtu: nëse (url. Përmban (".jpg") || url. Përmban (".png")) {urlList. Add (url); }}} urlLista e kthimit; }}

Hapi 7: Krijoni Fabrikën Tonë të Fotografive

Krijoni fabrikën tonë të fotografive
Krijoni fabrikën tonë të fotografive

Brenda PictureFactory.cs vendosni këtë kod për të krijuar të gjitha fotografitë tona dhe ngarkon teksturat e tyre nga një URL.

duke përdorur System. Collection;

duke përdorur System. Collections. Generic; duke përdorur UnityEngine; klasë publike PictureFactory: MonoBehaviour {public GameObject picPrefab; publike GoogleService googleService; zbrazëti publike DeleteOldPictures () {if (transform.childCount> 0) {foreach (Transformo fëmijën në këtë.transformo) {Destroy (child.gameObject); }}} publiku i pavlefshëm CreateImages (ListurlList, int resultNum, Vector3 camForward) {int picNum = 1; Vector3 center = Camera.main.transform.position; foreach (url string në 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; nëse (picNum <= 5) {pos = camForward + vector i ri3 (picNum * -3, 0, rowNum * 3.5f); } else {pos = camForward + vector i ri3 ((picNum % 5) * 3, 0, rowNum * 3.5f); } kthimi pos; }}

Hapi 8: Ne jemi bërë

Ne kemi mbaruar!
Ne kemi mbaruar!
Ne kemi mbaruar!
Ne kemi mbaruar!

Krijoni objekt lojë të zbrazët të quajtur GoogleService dhe vendosni skriptin "GoogleSerivice" mbi të.

Tërhiqeni skenarin "PictureFactory" në skenën e rrafshit tokësor sepse të gjitha fotografitë tona do të krijohen si fëmijë të këtij objekti të lojës.

Zvarritni referencat e duhura në inspektor, bëni të njëjtën gjë për shërbimin google.

Gjëja e fundit që duhet të bëjmë është të sigurohemi që të thirret funksioni ynë "GetPictures". Pra, le të shkojmë në ngjarjen "onClick" të butonit tonë dhe ta thërrasim nga atje.

Tani mund të klikojmë në play dhe ta provojmë këtë. Sigurohuni që të aktivizoni fazën e rrafshit tokësor dhe butonin. Thuaj një fjalë dhe kliko butonin për të kryer kërkimin në atë tekst!

Tani për ta marrë këtë aplikacion në telefonin tuaj, lidheni atë dhe shkoni te Skedari-> Cilësimet e Ndërtimit. Goditi build and run!

Më tregoni në komente nëse keni ndonjë pyetje!

Recommended: