Sisukord:
- Samm: seadistage IBM Watsoni SDK Unity'is
- 2. samm. Testige IBM Watsoni tekst kõneks
- 3. toiming: seadistage Google'i kohandatud otsingu API
- Samm: seadistage Vuforia Unity'is
- Samm: looge pildi eelmoodul
- 6. toiming: looge Google'i API jaoks skript
- Samm: looge meie pilditehas
- 8. samm: oleme valmis
Video: Teeme MEMESile liitreaalsuse rakenduse !: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Selles juhendis teeme Unity3D -s Androidi ja IOS -i jaoks liitreaalsuse rakenduse, mis kasutab meemide otsimiseks Google'i API -d. Kasutame Unity'is Vuforia maapinna tuvastamist, nii et see mobiilirakendus töötab enamiku Androidi ja IOS -i kasutajate jaoks. Vuforia kasutamine võimaldab meil ka pildid ühte kohta ankurdada, et saaksime sellest pildiväljast läbi käia ja objektid jääksid oma kohale.
Katsetame ka uut IBM Watsoni API -d, et saaksime neid otsinguid teha oma häälega ja kasutada nende loomuliku keele töötlemist.
Nii et halb uudis pole see, et kumbki neist API -dest pole täiesti tasuta, kuid hea uudis on see, et mõlemad on vabalt proovitavad. Google'i kohandatud otsingu API pakub teile 100 tasuta otsingut päevas ja IBM Watsoni API annab teile esimese kuu tasuta.
Lühidalt, see rakendus saab meie kõne Unity mikrofonist, saatke see IBM Watsoni serveritele, kes saadavad meile teksti tagasi. Seejärel võtame selle teksti ja saadame selle Google'i serveritesse, mis saadab meile JSON -vormingus piltide URL -ide loendi.
Samm: seadistage IBM Watsoni SDK Unity'is
Watsoni API käivitamiseks peate esmalt oma mandaadi nende saidilt hankima. Minge saidile Console.bluemix.net, looge ja logige sisse ning logige sisse. Minge oma IBM -i kontole ja navigeerige pilvavalukohaorgani ja looge uus ruum. Nüüd minge oma armatuurlauale ja klõpsake teenuste sirvimiseks, lisage kõne tekstiteenusele, sest seda me kasutame. Valige oma piirkond, organisatsioon ja ruum ning looge projekt. Nüüd näete oma API mandaati allosas.
Laadige Unity alla, kui teil seda veel pole, ja importige IBM Watsoni SDK Unity varalaost. Saame seda testida, luues tühja mänguobjekti ja nimetades selle IBM Watsoniks ning lisades voogesituse skripti näite. See skript on juba seadistatud salvestama heli ühtsusest ja saatma selle töötlemiseks Watsoni serveritesse.
Praegu kasutame seda näidiskripti, sest meil on veel palju teha, kuid võib -olla saame järgmisel korral Watsoni asjadesse sügavamale minna, sest tahaksin Vision API -ga midagi ette võtta.
2. samm. Testige IBM Watsoni tekst kõneks
See skript otsib kasutajaliidese tekstiobjekti, nii et saate luua uue kasutajaliidese nupu, mis annab meile vajaliku teksti ja me kasutame seda nuppu hiljem. Seadistage lõuend ekraani suurusega ja skaleerige nuppu veidi. Kinnitage see vasakusse alumisse serva. Lohistage see tekst tühja pesasse. Avage skript ja lisage meie IBM Watsoni mandaat, leidke, kus kasutatakse teksti "resultsField", ja määrake sellele ainult "alt.transcript", kuna kasutame seda teksti google'is otsimiseks. Nüüd, enne kui saame seda testida, peame teksti dünaamiliselt muutma, nii et kõik, mida ütleme, mahub kasti. Minge tagasi teksti juurde ja seadke see kõige sobivamaks. Selle testimiseks sisestage mõni tekst. Nüüd, kui klõpsame nupul Esita, transkribeeritakse meie sõnad tekstiks Watsoni tekst kõneks API -st.
3. toiming: seadistage Google'i kohandatud otsingu API
Järgmine asi, mida peame tegema, on seadistada Google'i kohandatud otsingu api seadistamiseks kasutamiseks Unity'is. Kõrgetasemel esitame Unitylt HTTP -päringu Google'i serveritele, mis saadab meile vastuse JSON -vormingus.
Nii et minge Google'i kohandatud otsingu JSON API seadistuslehele, klõpsake API võtme hankimiseks ja uue rakenduse loomiseks. Hoidke see lahti. Nüüd võime minna juhtpaneelile. Sisestage saidi otsimiseks kõik, pange sellele nimi ja klõpsake nuppu Loo.
Klõpsake juhtpaneelil ja lubage teha mõningaid muudatusi: tahame peamiselt meeme otsida ja pildiotsingu sisse lülitada. Otsingusaitide all lülitage see kogu veebile. Kõigi salvestamiseks klõpsake nuppu Värskenda.
Leidke nüüd Google'i api explorer ja minge kohandatud otsingu API -le. See võimaldab meil Google'ilt saadud JSON -vastuse vormindada. Nii et sisestage päringu jaoks praegu kõik, kleepige oma otsingumootori ID, sisestage filtrisse 1, et me ei saaks duplikaate, sisestage 10 numbri alla, sest see on maksimaalne tulemuste arv, mida saame korraga tagastada, sisestage otsingutüübiks pilt, sest see on kõik, mida me tahame tagastada. Alustuseks sisestage 1 ja lõpuks väljade alla „üksused/link”, sest iga tagastatava kauba puhul soovime ainult pildilinki. Nüüd, kui klõpsate käsku Käivita, näete, et saame tagasi 10 kena pildilinki.
Nüüd peame need pildid Unity'i viima.
Samm: seadistage Vuforia Unity'is
Laseme Vuforial töötada, et saaksime kasutada nende maapinna tuvastamist. Salvestage oma praegune stseen ja minge koostamise seadetele. Lülitage oma platvorm Androidile või IOS -ile ja kui teie IOS -is on kimpude identifikaatoriks midagi lisatud, lisage kaamera ja mikrofoni kasutamise kirjeldus. Kontrollige XR seadete alt Vuforia liitreaalsuse toetust.
Nüüd kustutage stseenis põhikaamera ja lisage Vuforia ARCamera. Minge konfiguratsiooniosasse ja muutke jälgimisrežiim positsiooniliseks. Tühjendage kõik andmebaasid, sest me ei vaja neid.
Nüüd lisage tasapinna leidja ja peame selle vaikekäitumise alistama, kuna soovime põhitasandi etappi juurutada ainult üks kord, nii et leiame Vuforia veebisaidilt skripti Deploy kord. Tooge see skript Unity'i ja pange see lennukileidjale, eemaldades seal olnud vana skripti. Muutke režiim interaktiivseks ja veenduge, et sellel Unity Sündmusel kutsutakse sisse funktsioon "OnInteractiveHitTest". Olles siin, seadistame varem tehtud nupu aktiivseks, kui oleme leidnud tasapinna, seadke selle vaikeseisund mitteaktiivseks. Nüüd pange sündmuspinnale lennuk ja muutke see õhu keskele, sest me tahame, et kõik pildid hõljuksid õhus. Lohistage see tasapind tasapinnaotsija tühja pilusse.
Samm: looge pildi eelmoodul
Enne kui hakkame kõiki neid tükke kokku panema, peame looma kokkupandava mänguobjekti, mida saame iga kord pildi laadimisel kohe tuvastada. Nii et looge alusplaadi alla tühi mänguobjekt ja nimetage see "picPrefab". Looge selle lapsena quad ja skaleerige seda 2 -ga, pöörake selle y -d 180 kraadi võrra nii, et vanemate edasiviiv vektor, mis on näidatud sinise noolena, on quad ees.
Looge uus skript nimega "PictureBehavior" ja lisage see meie picPrefab -i.
Nüüd lohistage see piltmoodul oma varade kausta ja see on see, mida me igale pildile paneme.
Meie skript "PictureBehavior" peaks välja nägema selline:
kasutades System. Collections;
kasutades System. Collections. Generic; UnityEngine'i kasutamine; avalik klass PictureBehavior: MonoBehaviour {public Renderer quadRenderer; privaatne Vector3 soovitud positsioon; void Start () {// pilk kaamera transform. LookAt (Camera.main.transform); Vector3 soovitudAngle = uus Vector3 (0, transform.localEulerAngles.y, 0); transform.rotation = Quaternion. Euler (soovitudNurk); // jõuga õhku soovitudPosition = transform.localPosition; transform.localPosition += uus Vector3 (0, 20, 0); } tühine Värskendus () {transform.localPosition = Vector3. Lerp (transform.localPosition, wishPosition, Time.deltaTime * 4f); } public void LoadImage (stringi URL) {StartCoroutine (LoadImageFromURL (url)); } IEnumerator LoadImageFromURL (stringi URL) {WWW www = uus WWW (url); tootlus tootlus www; quadRenderer.material.mainTexture = www.texture; }}
6. toiming: looge Google'i API jaoks skript
Nüüd lohistame viite quad renderdajale meie "picPrefabist".
Meil on veel teha ainult kaks skripti, nii et loome C# skripti nimega GoogleService.cs ja PictureFactroy.cs.
Kleepige teenusesse „GoogleService” see kood, mis esitab meie taotluse:
kasutades System. Collections;
kasutades System. Collections. Generic; UnityEngine'i kasutamine; kasutades UnityEngine. UI; avalik klass GoogleService: MonoBehaviour {public PictureFactory pictureFactory; public Text buttonText; private const string API_KEY = "PANE API VÕTME SIIA !!!!!"; public void GetPictures () {StartCoroutine (PictureRoutine ()); } IEnumerator PictureRoutine () {buttonText.transform.parent.gameObject. SetActive (false); stringipäring = buttonText.text; päring = WWW. EscapeURL (päring + "meemid"); // kustuta vanad pildid pictureFactory. DeleteOldPictures (); // salvesta kaamera edasi vektor, et saaksime objektide paigutamise ajal ringi liikuda Vector3 cameraForward = Camera.main.transform.forward; // saame korraga ainult 10 tulemust, nii et peame kordama ja salvestama oma edusamme, muutes stardinumbrit pärast iga 10 int ridaNum = 1; (int i = 1; i <= 60; i + = 10) {string url = "https://www.googleapis.com/customsearch/v1?q=" + query + "& cx = 011535004225295624669%3Afeb1gwic6bs & filter = 1 & number = 10 & searchType = image & start = " + i +" & fields = items%2Flink & key = " + API_KEY; WWW www = uus WWW (url); tootlus tootlus www; pictureFactory. CreateImages (ParseResponse (www.text), rowNum, cameraForward); rowNum ++; } tootlus tagastab uue WaitForSeconds (5f); buttonText.transform.parent.gameObject. SetActive (tõene); } Loend ParseResponse (stringi tekst) {List urlList = new List (); string URL -id = tekst. Lõhe ('\ n'); foreach (stringirida urlides) {if (line. Contains ("link")) {string url = line. Substring (12, line. Length-13); // filtreerimine png või jpg järgi Google'ilt ei tööta, seega teeme seda siin: if (url. Contains (".jpg") || url. Contains (".png")) {urlList. Add (url); }}} return urlList; }}
Samm: looge meie pilditehas
Inside PictureFactory.cs paneb selle koodi kõigi meie piltide loomiseks ja laadib nende tekstuurid URL -ist.
kasutades System. Collections;
kasutades System. Collections. Generic; UnityEngine'i kasutamine; avalik klass PictureFactory: MonoBehaviour {public GameObject picPrefab; avalik GoogleService googleService; public void DeleteOldPictures () {if (transform.childCount> 0) {foreach (Teisenda laps selles.transform) {Destroy (child.gameObject); }}} public void CreateImages (ListurlList, int resultNum, Vector3 camForward) {int picNum = 1; Vector3 keskus = Camera.main.transform.position; foreach (stringi URL urlListis) {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 + uus vektor3 ((picNum % 5) * 3, 0, rowNum * 3.5f); } return pos; }}
8. samm: oleme valmis
Looge tühi mänguobjekt nimega GoogleService ja pange sellele skript "GoogleSerivice".
Lohistage skript "PictureFactory" aluspinnale, sest kõik meie pildid luuakse selle mänguobjekti lastena.
Lohistage inspektorisse vastavad viited, tehke sama Google'i teenusega.
Viimane asi, mida me peaksime tegema, on veenduda, et meie "GetPictures" funktsiooni kutsutakse. Nii et lähme meie nupu sündmusele "onClick" ja helistame sellele sealt.
Nüüd saame klõpsata nuppu Esita ja seda testida. Lülitage kindlasti sisse tasapind ja nupp. Öelge sõna ja klõpsake selle teksti otsimiseks nuppu!
Selle rakenduse telefoni hankimiseks ühendage see ja minge jaotisse Fail-> Koosta seaded. Löö ehitada ja joosta!
Küsimuste korral andke mulle kommentaarides teada!
Soovitan:
Teeme plaksutuslüliti ahela: 5 sammu
Teeme plaksutuslülituse ahela: plaksutuslüliti ahel või klapp (kommertsversioon) on heli aktiveeritav lüliti, mis lülitab lambi, valguse sisse ja välja käed plaksutades või sõrmi klõpsates
Teeme taaskasutatavate materjalidega minisegisti: 6 sammu
Teeme ümbertöödeldavatest materjalidest minisegisti: Tere, mina olen Hilal. Selles projektis valmistame oma mikseri ümbertöödeldud materjalidest. Saate hõlpsalt kloppida muna, piima, jogurti ja kõik pähe tulevad vedelikud. Saate oma kooki isegi oma mikseriga teha! :) Tegime videos puuviljase jogurti:
Teeme kodus kõnniroboti Coca-Cola plekiga: 6 sammu (piltidega)
Teeme kodus kõnniroboti Coca-Cola plekiga: Tere kõigile, mina olen Merve! Sel nädalal hakkame tegema robotit, mis kõnnib Coca-Cola purgiga. *_*Alustame! ** PALUN HÄÄLISTAGE SEE PROJEKTI KONKURSIL
Teeme digitaaltelevisiooni videosalvesti: 4 sammu
Teeme digitaaltelevisiooni videosalvesti: tegin selle ja kasutasin seda mõnikord tagasi, kõik osad on korduvkasutatavad osad seni, kuni see veel töötab, karbis on mitu osa, mis moodustavad salvesti, vana arvuti toiteallika, USB IDE liidese pistik, 80 GB IDE kõvaketas, 5 V relee ja
Teeme maagiliste loitsudega maagilise kristallpalli! ~ Arduino ~: 9 sammu
Teeme maagiliste loitsudega maagilise kristallpalli! ~ Arduino ~: Selles teeme maagilise palli, mis kasutab liikumisandurit ja RFID -skannerit, et juhtida sees olevate LED -tulede animatsioone