Բովանդակություն:

Թույլ տվեք կատարել հավելյալ իրականության ծրագիր MEMES- ի համար: 8 քայլ
Թույլ տվեք կատարել հավելյալ իրականության ծրագիր MEMES- ի համար: 8 քայլ

Video: Թույլ տվեք կատարել հավելյալ իրականության ծրագիր MEMES- ի համար: 8 քայլ

Video: Թույլ տվեք կատարել հավելյալ իրականության ծրագիր MEMES- ի համար: 8 քայլ
Video: 30 վերջնական հեռանկարային խորհուրդներ և հնարքներ 2020 թ 2024, Հուլիսի
Anonim
Թույլ տվեք կատարել ընդլայնված իրականության ծրագիր MEMES- ի համար
Թույլ տվեք կատարել ընդլայնված իրականության ծրագիր MEMES- ի համար

Այս Instructable- ում մենք պատրաստվում ենք ընդլայնված իրականության ծրագիր Android- ի և IOS- ի համար Unity3D- ում, որն օգտագործում է Google API- ը մեմեր որոնելու համար: Մենք կօգտագործենք Vuforia- ի ցամաքային ինքնաթիռի հայտնաբերումը Unity- ում, այնպես որ այս բջջային ծրագիրը կաշխատի Android և IOS օգտագործողների մեծ մասի համար: Vuforia- ի օգտագործումը թույլ կտա նաև, որ նկարները խարսխվեն մեկ վայրում, որպեսզի մենք կարողանանք քայլել նկարների այս դաշտով, և օբյեկտները կմնան այնտեղ, որտեղ կան:

Մենք նաև փորձարկելու ենք նոր IBM Watson API- ն, որպեսզի կարողանանք կատարել այս որոնումները մեր ձայնով և գործի դնել դրանց բնական լեզվի մշակումը:

Այսպիսով, վատ նորությունն այն է, որ այս API- ներից ոչ մեկը լիովին անվճար չէ, բայց լավ նորությունն այն է, որ երկուսն էլ ազատ են փորձել: Google- ի սովորական որոնման API- ն ձեզ տալիս է օրական 100 անվճար որոնում, իսկ IBM Watson API- ն ՝ առաջին ամիսն անվճար:

Մի խոսքով, այս ծրագիրը կստանա մեր խոսքը Unity- ի խոսափողից, այն կուղարկի IBM Watson սերվերներին, որոնք մեզ կվերադարձնեն տեքստը: Այնուհետև մենք կվերցնենք այդ տեքստը և կուղարկենք Google- ի սերվերներին, որոնք մեզ կվերադարձնեն պատկերի URL- ների ցանկը JSON տեսքով:

Քայլ 1. Ստեղծեք IBM Watson SDK- ը Unity- ում:

Ստեղծեք IBM Watson SDK- ը Unity- ում
Ստեղծեք IBM Watson SDK- ը Unity- ում

Watson API- ն գործարկելու համար հարկավոր է նախ ստանալ ձեր կայքի հավատարմագրերը: Գնացեք Console.bluemix.net, ստեղծեք և հաշիվ ստեղծեք և մուտք գործեք: Գնացեք ձեր IBM հաշիվ և նավարկեք դեպի ամպերի ձուլման օրգաններ և ստեղծեք նոր տարածք: Այժմ գնացեք ձեր վահանակ և կտտացրեք ՝ ծառայությունները դիտելու համար, խոսքը ավելացրեք տեքստային ծառայության մեջ, քանի որ դա այն է, ինչ մենք պատրաստվում ենք օգտագործել: Ընտրեք ձեր տարածաշրջանը, կազմակերպությունը և տարածքը և ստեղծեք նախագիծը: Այժմ դուք կտեսնեք ձեր API- ի հավատարմագրերը ներքևում:

Ներբեռնեք Unity, եթե այն արդեն չունեք և ներմուծեք IBM Watson SDK- ը Unity- ի ակտիվների խանութից: Մենք կարող ենք դա ստուգել ՝ ստեղծելով դատարկ խաղային օբյեկտ և այն անվանում ենք IBM Watson և ավելացնում հոսքային սցենարի օրինակ: Այս սցենարը արդեն տեղադրված է ձայնագրելու միասնությունից և ուղարկելու այն Watson- ի սերվերներին `մշակման համար:

Առայժմ մենք պարզապես կօգտագործենք այս սցենարի օրինակը, քանի որ շատ ավելին ունենք անելու, բայց գուցե հաջորդ անգամ կարող ենք ավելի խորանալ Ուոթսոնի իրերի մեջ, քանի որ ես կցանկանայի ինչ -որ բան անել Vision API- ի հետ:

Քայլ 2. Փորձարկեք IBM Watson Text to Speech:

Փորձարկեք IBM Watson Text to Speech
Փորձարկեք IBM Watson Text to Speech

Այս սցենարը փնտրում է UI տեքստային օբյեկտ, այնպես որ թույլ տվեք ստեղծել նոր UI կոճակ, որը մեզ կտա մեզ անհրաժեշտ տեքստը, և մենք այն հետագայում կօգտագործենք: Կտավը չափեք էկրանի չափսերով և մի փոքր չափափոխեք կոճակը: Խարսխեք այն ներքևի ձախ կողմում: Քաշեք այդ տեքստը դատարկ անցքի մեջ: Բացեք սցենարը և թույլ տվեք ավելացնել մեր IBM Watson- ի հավատարմագրերը, գտեք, թե որտեղ է օգտագործվում «resultsField» տեքստը և դրեք այն միայն «alt.transcript» - ի վրա, քանի որ մենք պատրաստվում ենք այս տեքստը օգտագործել Google- ում որոնման համար: Այժմ, նախքան դա ստուգելը, մենք պետք է դինամիկ դարձնենք տեքստի չափը, այնպես որ այն, ինչ մենք ասում ենք, տեղավորվի տուփի ներսում: Վերադարձեք տեքստին և տեղադրեք այն լավագույնս համապատասխան: Մուտքագրեք տեքստ ՝ այն ստուգելու համար: Այժմ, երբ կտտացնում ենք նվագել, մեր բառերը կփոխանցվեն տեքստին Watson Text to Speech API- ից:

Քայլ 3: Կարգավորեք Google- ի անհատական որոնման API- ն:

Կարգավորեք Google Custom Search API- ն
Կարգավորեք Google Custom Search API- ն

Հաջորդ կտորը, որ մենք պետք է անենք, այն է, որ Google- ի անհատական որոնման api- ն ստեղծվի Unity- ում օգտագործելու համար: Բարձր մակարդակով մենք Unity- ից HTTP հարցում ենք անելու Google- ի սերվերներին, ինչը մեզ կպատասխանի JSON ձևաչափով:

Այսպիսով, գնացեք Google Custom Search JSON API- ի կարգաբերման էջ, կտտացրեք ՝ API բանալին ստանալու և նոր ծրագիր ստեղծելու համար: Բաց պահեք սա: Այժմ մենք կարող ենք գնալ կառավարման վահանակ: Տեղադրեք որևէ կայքի որոնման համար, անվանեք այն ինչ էլ որ լինի և կտտացրեք Ստեղծել.

Կտտացրեք կառավարման վահանակին և թույլ տվեք կատարել որոշ փոփոխություններ. Մենք ցանկանում ենք հիմնականում որոնել մեմեր և միացնել պատկերների որոնումը: Որոնման կայքերի տակ այն փոխեք ամբողջ վեբի: Կտտացրեք թարմացում ՝ ամեն ինչ պահելու համար:

Այժմ գտեք google api Explorer- ը և անցեք սովորական որոնման API: Սա թույլ կտա մեզ ձևակերպել Google- ից ստացած JSON պատասխանը: Այսպիսով, ներկայումս տեղադրեք որևէ բան հարցման համար, տեղադրեք ձեր որոնման ID- ում, տեղադրեք 1 -ը ֆիլտրի մեջ, որպեսզի կրկնօրինակներ չստանանք, 10 -ը տեղադրեք համարի տակ, որովհետև դա առավելագույն արդյունքն է, որը մենք կարող ենք միանգամից վերադարձնել, որոնման տիպի համար տեղադրեք պատկեր, քանի որ դա այն ամենն է, ինչ մենք ցանկանում ենք վերադարձնել: Սկսելու համար տեղադրեք 1 -ը, իսկ վերջում «տարրեր/հղում» դաշտերի տակ, քանի որ վերադարձված յուրաքանչյուր նյութի համար մենք ցանկանում ենք միայն պատկերի հղումը: Այժմ, երբ կտտացնում եք կատարել, կտեսնեք, որ մենք ստանում ենք 10 գեղեցիկ պատկերի հղումներ:

Այժմ մենք պետք է այս նկարները մտնենք Unity:

Քայլ 4: Ստեղծեք Vuforia- ն Unity- ում:

Ստեղծեք Vuforia- ն Unity- ում
Ստեղծեք Vuforia- ն Unity- ում

Եկեք աշխատենք Vuforia- ի վրա, որպեսզի մենք կարողանանք օգտագործել նրանց ցամաքային ինքնաթիռների հայտնաբերումը: Պահպանեք ձեր ընթացիկ տեսարանը և անցեք կառուցման կարգավորումներ: Անցեք ձեր հարթակը Android- ի կամ IOS- ի, և եթե IOS- ում ինչ -որ բան տեղադրեք փաթեթի նույնացուցիչի համար, ավելացրեք տեսախցիկի և խոսափողի օգտագործման նկարագրությունը: XR- ի պարամետրերում ստուգեք Vuforia- ի ընդլայնված իրականության աջակցությունը:

Այժմ տեսարանում ջնջեք հիմնական տեսախցիկը և ավելացրեք Vuforia ARCamera: Գնացեք կազմաձևման բաժին և հետևման ռեժիմը փոխեք դիրքի: Հեռացրեք բոլոր տվյալների շտեմարանները, քանի որ դրանք մեզ պետք չեն:

Այժմ ավելացրեք ինքնաթիռի որոնիչ, և մենք պետք է անտեսենք դրա կանխադրված պահվածքը, քանի որ մենք ցանկանում ենք տեղակայել գետնի հարթության փուլը միայն մեկ անգամ, այնպես որ թույլ է տալիս գտնել Տեղակայման փուլը մեկ անգամ սցենարը Vuforia կայքում: Այդ սցենարը բերեք Unity և դրեք այն ինքնաթիռի որոնիչում ՝ հեռացնելով այնտեղ եղած հին գրությունը: Փոխեք ռեժիմը ինտերակտիվի և համոզվեք, որ «OnInteractiveHitTest» գործառույթը կանչվի այդ Միասնության իրադարձության ժամանակ: Մինչ մենք այստեղ ենք, եկեք ավելի ակտիվ դարձնենք այն կոճակը, որն ավելի վաղ արել էինք, երբ գտել էինք ստորգետնյա հարթությունը և դրա կանխադրված վիճակը դարձրել անգործուն: Այժմ դրեք ցամաքային ինքնաթիռը դեպքի վայր և փոխեք այն միջին օդի, քանի որ մենք ցանկանում ենք, որ բոլոր նկարները լողան օդում: Քաշեք այս ստորգետնյա ինքնաթիռը ինքնաթիռի որոնիչի դատարկ անցքի մեջ:

Քայլ 5: Ստեղծեք նկարի նախապատրաստում:

Ստեղծեք նկարի նախապատրաստում
Ստեղծեք նկարի նախապատրաստում

Նախքան այս բոլոր կտորները միասին հավաքելը մենք պետք է ստեղծենք հավաքովի խաղային օբյեկտ, որը կարող ենք հաստատել ամեն անգամ, երբ նկարը բեռնվում է: Այսպիսով, ստեղծեք դատարկ խաղային օբյեկտ գետնի հարթության տակ և անվանեք այն «picPrefab»: Որպես դրա երեխա ստեղծեք քառյակ և չափեք այն 2 -ով, պտտեք նրա y- ը 180 աստիճանով այնպես, որ ծնողները դեպի վեկտորը, որը ցույց է տրված որպես կապույտ սլաք, լինի քառանկյունի առջևը:

Ստեղծեք նոր սցենար, որը կոչվում է «PictureBeviori» և ավելացրեք այն մեր picPrefab- ին:

Այժմ քաշեք այս նկարի հավաքածուն ձեր ակտիվների թղթապանակում, և սա այն է, ինչ մենք պատրաստվում ենք տեղադրել յուրաքանչյուր նկար:

Մեր «PictureBeviorior» սցենարը պետք է ունենա այս տեսքը.

օգտագործելով System. Collections;

օգտագործելով System. Collections. Generic; օգտագործելով UnityEngine; հանրային դաս PictureBehavior: MonoBehaviour {public Renderer quadRenderer; մասնավոր Vector3 ցանկալի Դիրք; void Սկիզբ () {// նայեք տեսախցիկի transform. LookAt (Camera.main.transform); Vector3 სასურველიAngle = նոր Vector3 (0, transform.localEulerAngles.y, 0); transform.rotation = Quaternion. Euler (ցանկալի անկյուն); // ուժ օդում სასურველიPosition = transform.localPosition; transform.localPosition += նոր Vector3 (0, 20, 0); } void Update () {transform.localPosition = Vector3. Lerp (transform.localPosition, სასურველიPosition, Time.deltaTime * 4f); } public void LoadImage (տողի url) {StartCoroutine (LoadImageFromURL (url)); } IEnumerator LoadImageFromURL (տողի url) {WWW www = նոր WWW (url); եկամտաբերության վերադարձ www; quadRenderer.material.mainTexture = www.texture; }}

Քայլ 6. Ստեղծեք սցենար Google API- ի համար:

Ստեղծեք սցենար Google API- ի համար
Ստեղծեք սցենար Google API- ի համար

Այժմ եկեք մեր «picPrefab» - ից քաշենք չորս մատուցողի հղումը:

Մեզ մնում է միայն երկու սցենար պատրաստել, այնպես որ եկեք ստեղծենք C# սցենար, որը կոչվում է GoogleService.cs և PictureFactroy.cs:

«GoogleService» - ի ներսում տեղադրեք այս կոդը, որը ներկայացնում է մեր հարցումը.

օգտագործելով System. Collections;

օգտագործելով System. Collections. Generic; օգտագործելով UnityEngine; օգտագործելով UnityEngine. UI; հանրային դաս GoogleService: MonoBehaviour {public PictureFactory pictureFactory; հանրային տեքստ կոճակՏեքստ; private const string API_KEY = "PUT API KEY HERE !!!!!"; public void GetPictures () {StartCoroutine (PictureRoutine ()); } IEnumerator PictureRoutine () {buttonText.transform.parent.gameObject. SetActive (կեղծ); string query = buttonText.text; հարցում = WWW. EscapeURL (հարցում + «մեմեր»); // ջնջել հին պատկերները pictureFactory. DeleteOldPictures (); // պահպանել տեսախցիկի առաջ վեկտորը, որպեսզի մենք կարողանանք տեղաշարժվել, մինչ օբյեկտները տեղադրվում են Vector3 cameraForward = Camera.main.transform.forward; // մենք կարող ենք միաժամանակ ստանալ միայն 10 արդյունք, այնպես որ մենք պետք է շրջանցենք և պահպանենք մեր առաջընթացը ՝ փոխելով մեկնարկի թիվը յուրաքանչյուր 10 int տողից հետո = 1; համար (int i = 1; i <= 60; i + = 10) {string url = "https://www.googleapis.com/customsearch/v1?q=" + հարցում + "& cx = 011535004225295624669%3Afeb1gwic6bs & filter = 1 & num = 10 & searchType = image & start = " + i +" & դաշտերը = տարրեր%2Flink & key = " + API_KEY; WWW www = նոր WWW (url); եկամտաբերության վերադարձ www; pictureFactory. CreateImages (ParseResponse (www.text), rowNum, cameraForward); rowNum ++; } եկամտաբերության վերադարձ նոր WaitForSeconds (5f); buttonText.transform.parent.gameObject. SetActive (ճշմարիտ); } List ParseResponse (տողային տեքստ) {List urlList = new List (); տող urls = text. Split ('\ n'); foreach (տողի տող urls- ում) {if (line. Contains ("link")) {string url = line. Substring (12, line. Length-13); // png- ի կամ jpg- ի միջոցով զտելը Google- ից չի աշխատում, այնպես որ մենք դա անում ենք այստեղ. }}} վերադարձ urlList; }}

Քայլ 7: Ստեղծեք մեր նկարների գործարանը:

Ստեղծեք մեր նկարների գործարանը
Ստեղծեք մեր նկարների գործարանը

Inside PictureFactory.cs- ը տեղադրում է այս ծածկագիրը `ստեղծելու մեր բոլոր նկարները և բեռնում է դրանց հյուսվածքները URL- ից:

օգտագործելով System. Collections;

օգտագործելով System. Collections. Generic; օգտագործելով UnityEngine; հանրային դաս PictureFactory: MonoBehaviour {public GameObject picPrefab; հանրային GoogleService googleService; public void DeleteOldPictures () {if (transform.childCount> 0) {foreach (Transform child in this.transform) {Destroy (child.gameObject); }}} public void CreateImages (ListurlList, int resultNum, Vector3 camForward) {int picNum = 1; Vector3 կենտրոն = Camera.main.transform.position; foreach (string url urlList- ում) {Vector3 pos = GetPosition (picNum, resultNum, camForward); GameObject pic = Անմիջական (picPrefab, pos, Quaternion.identity, this.transform); նկար. GetComponent (). LoadImage (url); picNum ++; }} Vector3 GetPosition (int picNum, int rowNum, Vector3 camForward) {Vector3 pos = Vector3.zero; եթե (picNum <= 5) {pos = camForward + new Vector3 (picNum * -3, 0, rowNum * 3.5f); } else {pos = camForward + new Vector3 ((picNum % 5) * 3, 0, rowNum * 3.5f); } վերադարձի pos; }}

Քայլ 8: Մենք ավարտված ենք:

Մենք Կատարված ենք!
Մենք Կատարված ենք!
Մենք Կատարված ենք!
Մենք Կատարված ենք!

Ստեղծեք GoogleService կոչվող դատարկ խաղային օբյեկտ և դրա վրա դրեք «GoogleSerivice» սցենարը:

Քաշեք «PictureFactory» սցենարը գետնի հարթության վրա, քանի որ մեր բոլոր նկարները ստեղծվելու են որպես այս խաղային օբյեկտի երեխաներ:

Քաշեք տեսուչի համապատասխան հղումները, նույնը կատարեք google ծառայության համար:

Վերջին բանը, որ մենք պետք է անենք, համոզվելն է, որ մեր «GetPictures» գործառույթը կանչվի: Այսպիսով, եկեք գնանք մեր կոճակի «onClick» իրադարձությանը և զանգահարեք այն այնտեղից:

Այժմ մենք կարող ենք սեղմել play և ստուգել սա: Համոզվեք, որ միացրել եք ստորգետնյա հարթության փուլը և կոճակը: Մի բառ ասեք և կտտացրեք կոճակին ՝ այդ տեքստի որոնումը կատարելու համար:

Այժմ այս ծրագիրը ձեր հեռախոսում ներբեռնելու համար միացրեք այն և գնացեք Ֆայլ-> Կառավարման կարգավորումներ: Կտտացրեք կառուցել և գործարկել:

Հարցերի դեպքում տեղեկացրեք ինձ մեկնաբանություններում:

Խորհուրդ ենք տալիս: