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

Ընդլայնված իրականության վեբ զննարկիչ. 9 քայլ
Ընդլայնված իրականության վեբ զննարկիչ. 9 քայլ

Video: Ընդլայնված իրականության վեբ զննարկիչ. 9 քայլ

Video: Ընդլայնված իրականության վեբ զննարկիչ. 9 քայլ
Video: ԺԱԿ ՖՐԵՍԿՈ - Պատմություն Աշխարհի Վերափոխման Մասին 2024, Նոյեմբեր
Anonim
Ընդլայնված իրականության վեբ դիտարկիչ
Ընդլայնված իրականության վեբ դիտարկիչ
Ընդլայնված իրականության վեբ դիտարկիչ
Ընդլայնված իրականության վեբ դիտարկիչ

Այսօր մենք պատրաստվում ենք Android- ի համար ընդլայնված իրականության զննարկիչ պատրաստել:

Այս գաղափարը սկսվեց այն ժամանակ, երբ ExpressVPN- ն ինձ խնդրեց հովանավորվող YouTube տեսանյութ պատրաստել: Քանի որ սա իմ առաջինն է, ես ուզում էի անել մի բան, որը համապատասխան էր նրանց արտադրանքին: Բավականին անմիջապես մտածեցի, ախ, ես պարզապես կդարձնեմ ընդլայնված իրականության վեբ զննարկիչ, որպեսզի կարողանանք AR- ով համացանցը դիտել VPN- ով: Չի կարող այդքան դժվար լինել, այնպես չէ՞: Սխալ. Ես ինքս ինձ համար որոշ սահմանափակումներ դրեցի այս նախագծի համար, քանի որ ցանկանում էի այն օգտագործել նոր բաներ սովորելու համար:

Թիվ մեկ, ես ուզում էի, որ այն Android- ի համար լիներ, քանի որ ես միշտ իրեր եմ անում IOS- ով:

Թիվ երկու, ես չէի ուզում օգտագործել որևէ վճարովի API, ես ուզում էի, որ բոլորը կարողանային պարզապես ներբեռնել այս նախագիծը և գործարկել այն ՝ առանց որևէ նյութի առցանց վճարելու: Այսպիսով, ոչ IBM Watson, ոչ Google API և ոչինչ Unity Asset խանութից:

ԵԿԵՔ ՍԿՍԵՆՔ!

Քայլ 1: Առաջին բանը `առաջինը:

Առաջին բանը `առաջինը
Առաջին բանը `առաջինը

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

Ես առաջին անգամ հանդիպեցի այս plugin- ի ՝ միասնության համար.

www.google.com/search?rlz=1C5CHFA_enUS816U…

Ես փորձեցի սա, և այն հիանալի աշխատեց: Միակ խնդիրն այն էր, որ երբ այն օգտագործում եք ARCore- ի հետ, այն ստեղծում է հայրենի թռուցիկ տուփ և, կարծես, հետին պլան է մղում Unity- ը, և դուք ի վերջո կորցնում եք հետևելը:

Սա պակաս քան իդեալական էր:

Քայլ 2. Խոսքի տեքստին աշխատելը Android- ի համար:

Android- ի համար խոսքի տեքստին աշխատելը
Android- ի համար խոսքի տեքստին աշխատելը

Այսպիսով, ես սկսեցի որոնել մի քանի կոնտակտներ, որոնք չէին բերում հայրենի թռուցիկ տուփը և շատ բան չէին գտնում, բայց ես ի վերջո գտա այս android գրադարանը.

github.com/maxwellobi/Android-Speech-Recog…

Այժմ ես բառացիորեն ոչինչ չգիտեմ Android- ի զարգացման մասին, բայց ես ուզում էի ինքս ինձ մարտահրավեր նետել, այնպես որ ես մտածեցի, որ ես պարզապես կփորձեմ գրել այս գրադարանի կամուրջի ծածկագիրը և այն դարձնել Android plugin ՝ Unity- ում օգտագործելու համար: Կրկին, սա սխալ էր և առաջատար ժամեր շարունակ հիասթափություն:

Հետո վերջապես աշխատեց…

Քայլ 3: Սովորած դասեր:

Քաղված դասերը
Քաղված դասերը

Այսպիսով, կա երկու բան, որ ես սովորեցի այս գործընթացում, որոնք ակնհայտորեն ակնհայտ չեն Google- ի միջոցով, թե ինչպես պատրաստել Android plugin- ի միասնության համար:

Թիվ մեկ ՝ ձեզ հավանաբար անհրաժեշտ կլինի հղում ստանալ Android հավելվածի համատեքստին, եթե ձեր plugin- ը հետաքրքիր բան անի: Դուք կարող եք դա անել ՝ ձեր Unity install- ից class.jar ֆայլը ավելացնելով ձեր Android նախագծին որպես գրադարան: Այսպիսով, գնացեք ֆայլի նախագծի կառուցվածքը և այնուհետև ընտրեք հավելվածի մոդուլի կախվածության ներդիրը: Այստեղ դուք կարող եք սեղմել գումարած կոճակը `բանկա ֆայլ ավելացնելու համար: Գնացեք ձեր Unity build, նվագարկիչ շարժիչներ, androidplayer, տատանումներ, մոնո, զարգացում, դասեր և վերջապես դասեր: jjar: Փոխեք շրջանակը միայն կազմելու համար: Այժմ, նոր java ֆայլում կարող եք անել.

UnityPlayer.currentActivity.getApplicationContext ();

և օգտագործիր այդ տեղեկանքը այնտեղ, որտեղ երբևէ դրա կարիքը ունես:

Հաջորդ տարօրինակ խնդիրն այն է, որ ձայնի այս գործառույթը կարող է գործարկվել միայն հիմնական թելի վրա, այլապես սխալներ կստանաք: Unity- ում դա անելու համար դուք պետք է ասեք գործառույթներն ու plugin- ը ՝ UI Thread- ի վրա աշխատելու համար ՝ որպես AndroidJavaRunnable, ինչպես վերը նկարը:

Քայլ 4: Պայքար:

Պայքարներ
Պայքարներ

Այս պահին ես մտածում եմ, որ Android- ի փորձագետ եմ, Ես առցանց դիմում եմ android dev աշխատանքի համար, պատվիրում եմ android կպչուն պիտակներ և շապիկներ: Կյանքը լավ է. Այժմ ես պատրաստ եմ անցնել ՝ պարզելու, թե ինչպես կայք պատրաստել Unity- ում: Մի փոքր հետազոտություն կատարելուց հետո ես տեսնում եմ, որ ընդունված լուծումը Android WebView- ի օգտագործումն է: Սա պարզապես Android դաս է, որը թույլ է տալիս մատուցել վեբ կայքեր, որոնք փոխգործունակ են Android հավելվածի ներսում ՝ առանց բրաուզերում ամեն ինչ բեռնելու: Հիմնականում դա այնպես է, որ դուք կարողանաք օգտվողներին պահել ձեր հավելվածում: Բիզնեսի առաջին կարգը պետք է տեսնել, թե արդյոք որևէ մեկը դրա համար բաց կոդով ստեղծել է միասնության հավելում: Ես առաջին հերթին փորձեցի այս հավելումը.

github.com/gree/unity-webview

բայց դա միայն WebView է տալիս Unity GUI շերտին, այնպես որ դա չի աշխատի: Այնուհետև ես գտնում եմ այս plugin- ը VR- ի համար.

github.com/IanPhilips/UnityAndroidVR Թերթել…

սա թույլ է տալիս WebView- ը մատուցել հյուսվածքի և նույնիսկ փոխազդեցության, ինչը հիանալի է: Կարծում էի, որ սա պատասխանն էր, մինչև որ փորձեցի և պարզեցի, որ դա արգելափակում է իմ բոլոր կտտոցները միասնությունից:

Քայլ 5: Վերադառնալ գծանկար:

Վերադարձ դեպի Գծագրական տախտակ։
Վերադարձ դեպի Գծագրական տախտակ։

Ես պարզապես կփորձեմ ստեղծել իմ plugin- ը դրա համար, քանի որ այն, ինչ ինձ իսկապես անհրաժեշտ է, կայքի պատկերը միասնության ուղարկելն է: Որոշակի հետազոտություններ կատարելով ՝ ես պարզում եմ, որ կարող եմ android կտավը պահել bitmap- ում, այնուհետև կոդավորել այն png- ում և պարզապես ուղարկել այդ բայթերը Unity, այնտեղ ստեղծվում է նոր հյուսվածք այդ զանգվածների բայթերի հետ և ես լավ եմ: Հերթական հիասթափությունից և իմ գոյությունը կասկածի տակ դնելուց հետո…

Վերջապես ստացվեց:

Այսպիսով, այժմ ես կարող եմ սքրինշոթ վերցնել վեբ կայքից, այնպես որ եկեք տեսնենք, թե ինչպես է այն աշխատում arcore- ի հետ…

Դա չի անում:

Նկատի ունեմ, որ ես օգտագործում եմ galaxy s7- ը, որն ամենաթարմ հեռախոսը չէ, բայց այս WebView- ի իրերը դեռ սառեցնում են ամբողջ ծրագիրը և հիմնականում անօգտագործելի են: Ենթադրում եմ, որ դա այն պատճառով է, որ WebView- ը և ARCore- ը երկուսն էլ ծանրաբեռնում են հիմնական շարանը, բայց ես իսկապես չգիտեմ: Վերադառնալ գծագրին: Եթե մենք ուզում ենք դա անել, մենք ստիպված կլինենք ծանրաբեռնված բեռը բեռնել ինչ -որ սերվերի վրա: Google- ի որոնումներից հետո պարզվում է, որ կարող եք վերցնել Node.js- ի համար գրադարան ունեցող վեբ կայքի սքրինշոթ, որը կոչվում է WebShot, որն օգտագործում է Phantom JS- ը, որը սկրիպտվող անգլուխ զննարկիչ է:

Քայլ 6: Վերջապես մենք ինչ -որ տեղ ենք հասնում:

Վերջապես մենք ինչ -որ տեղ ենք հասնում
Վերջապես մենք ինչ -որ տեղ ենք հասնում

Այժմ ես պետք է պարզեմ, թե ինչ դժոխք է օգտագործել Node.js- ը …:

Պարզվում է, որ կարող եք կատարել Node.js սցենար, որը լսում է որոշակի նավահանգստի համարը, և երբ հարված է ստանում այդ նավահանգստում, կարող է վերադարձնել որոշ տեղեկություններ: Մենք կարող ենք դա ստուգել ՝ ստեղծելով մի փոքրիկ բարև, աշխարհի 3000 սցենար, որը լսում է 3000 պորտին: Եթե մենք նավարկենք դեպի մեր IP հասցեն և այնուհետև 3000 -ը նավարկենք մեր դիտարկիչում, ապա կտեսնենք, որ այն վերադարձնում է բարև աշխարհ: Այժմ, երբ ես մի փոքր տիրապետում եմ հանգույցին, կարող եմ այն աշխատել իմ սերվերի վրա, որտեղ ես հյուրընկալում եմ իմ կայքերը, որոնցում կա hawkhost.com: Ես SSH եմ մտնում իմ սերվերի մեջ և փորձում եմ մի քանի բարև աշխարհի node.js սցենարներ գործարկել … և ոչինչ չի աշխատում: Շուրջ մի քանի ժամ խառնվելուց հետո ես պարզում եմ, որ իմ հատուկ հոստինգ սերվերը օգտագործման համար բաց է միայն երկու նավահանգիստ ՝ 3000 և 12001:

Այսպիսով, օգտագործելով այդ նավահանգիստները և իմ հոսթինգ սերվերների IP- ն, ես կարող եմ ստանալ ողջույնի համաշխարհային օրինակ: Հաջորդը ես տեղադրում եմ WebShot մոդուլը և ստեղծում եմ մի փոքր սցենար, որը կարող եմ փոխանցել URL, և այն ինձ կվերադարձնի այդ վեբ հասցեի վեբ կայքի պատկերը: Այժմ ես կարող եմ սկսել այդ հանգույցի սցենարը և ուղարկել http POST հարցում Unity- ից ՝ իմ սերվերի հատուկ IP- ի և պորտի համարին, որն ինձ կվերադարձնի այդ կայքի պատկերի բայթ զանգվածը: Շնորհակալություն Աստծուն: Այժմ մեկ այլ խնդիր է այն, երբ ես փակում եմ իմ տերմինալը, գործընթացը ավարտվում է և դադարում է լսելուց: Ես ևս մի քանի հետազոտություն եմ կատարում և գտնում եմ մոդուլ, որը կոչվում է հավերժ: NPM- ը տեղադրվում է ընդմիշտ, և այժմ ես կարող եմ նավարկել ընդմիշտ և ընդմիշտ սկսել սցենարը, և այն կշարունակի գործել, քանի դեռ մուտք չեմ գործել և նորից դադարեցնել այն:

Քայլ 7: Այն աշխատում է:

Աշխատում է!
Աշխատում է!

Հոյակապ Բայց դա բավական թույն չէ:

Երբ մտածում եմ AR- ում վեբ զննարկման արժեքի մասին, դա գալիս է տարածքի ավելացումից: Մենք այլևս մեկ էկրանով չենք սահմանափակվում, ուստի ես ուզում եմ այնպիսի բան պատրաստել, որը թույլ կտա պատկերացնել իմ որոնման ուղին հենց իմ առջև: Այսպիսով, եկեք բեռնենք առաջին որոնման էջը, այնուհետև սողանք այդ էջը և հանենք որոնման յուրաքանչյուր արդյունք որպես հղում, որը մենք կարող ենք այնուհետև բեռնել որպես հիմնական պատկերից վերև գտնվող պատկեր: Մենք կարող ենք դա անել մեկ այլ Node.js սցենարով, որը քերծում է Google- ի արդյունքների առաջին էջը և այն անընդհատ գործարկում: Դա կարող էր շատ ավելի արդյունավետ կատարվել Google- ի որոնման API- ի միջոցով, սակայն այս նախագծի թիվ 2 կանոնը վճարովի API- ներ չէր, ուստի մենք հիմա դա կանենք այսպես: Այժմ, երբ մենք ունենք պատկերներ յուրաքանչյուր հղման համար, կարող ենք դրանք բեռնել ավելի մեծ էկրանին ամեն անգամ, երբ կտտացնում ենք դրանք և բում, այստեղ մենք ունենք մի գեղեցիկ փոքրիկ զննարկիչ: Այն լիովին ֆունկցիոնալ չէ, բայց ես կվերցնեմ այն: Լավ, եթե ուզում եք ինքներդ գործարկել այս նախագիծը, գնացեք իմ Github և ներբեռնեք expressVPN նախագիծը.

github.com/MatthewHallberg/ARBrowserExpres…

Քայլ 8: Ամեն ինչ աշխատեցնելը:

Ստանալով ամեն ինչ աշխատող
Ստանալով ամեն ինչ աշխատող

Բացեք այն Unity- ում և թույլ տվեք, որ ամեն ինչ աշխատի ձեր համակարգչի վրա: Նախ անհրաժեշտ է գտնել ձեր մեքենայի IP հասցեն, այնպես որ, եթե Mac- ում եք, պարզապես պահեք տարբերակը և կտտացրեք wifi խորհրդանիշին ՝ ձեր IP- ն բացահայտելու համար:

Վերադարձեք միասնություն և բացեք զննարկչի վերահսկիչի սցենարը և այնտեղ տեղադրեք ձեր IP հասցեն և պատճենեք այն ձեր սեղմատախտակին: Գտեք nodeScripts թղթապանակը և դրեք այն աշխատասեղանին, բացեք թղթապանակը և երկու ընդարձակումները փոխեք.js- ի: Բացեք յուրաքանչյուր սցենար և փոխեք IP հասցեն ձեր IP- ին: Այժմ բացեք տերմինալը, և մենք պետք է որոշ բաներ տեղադրենք: Տեղադրեք HomeBrew- ը, եթե այն արդեն չունեք:

-Brew տեղադրման հանգույց

-npm տեղադրել վեբ նկարը

-npm տեղադրել flatiron

-npm տեղադրման միություն

-npm տեղադրել cheerio

Այժմ մենք կարող ենք երկու սցենարներն այնպես սկավառակի մեջ դնել nodescripts թղթապանակում և անել node getimage.js Եվ այնուհետև բացել նոր տերմինալի պատուհան և կատարել հանգույց getlinks.js Թողնել երկու տերմինալային պատուհանները գործարկված և վերադառնալ խմբագրին: Եթե մենք սեղմում ենք play- ին, ամեն ինչ պետք է լավ աշխատի: Մենք կարող ենք նաև գնալ ֆայլ, կառուցել կարգավորումներ և սեղմել build և վազել ՝ այն մեր հեռախոսում ստանալու համար: Եթե ցանկանում եք կանգնեցնել սերվերները, պարզապես սեղմեք հսկողության գ կամ հրամանը q ՝ փակելու ամբողջ տերմինալը:

ԱՅՍ Է!

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