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

AR օբյեկտների տեղադրում GPS- ի կոորդինատների մեջ `ընդլայնված իրականության մեջ. 8 քայլ (նկարներով)
AR օբյեկտների տեղադրում GPS- ի կոորդինատների մեջ `ընդլայնված իրականության մեջ. 8 քայլ (նկարներով)

Video: AR օբյեկտների տեղադրում GPS- ի կոորդինատների մեջ `ընդլայնված իրականության մեջ. 8 քայլ (նկարներով)

Video: AR օբյեկտների տեղադրում GPS- ի կոորդինատների մեջ `ընդլայնված իրականության մեջ. 8 քայլ (նկարներով)
Video: Data Science with Python! Extracting Metadata from Images 2024, Նոյեմբեր
Anonim
AR օբյեկտների տեղադրում ավելացված իրականության GPS կոորդինատներում
AR օբյեկտների տեղադրում ավելացված իրականության GPS կոորդինատներում

Այս հրահանգը կանցնի բջջային հավելվածի ստեղծման համար AR- ի և ARCore- ի հետ AR- ի և ARCore- ի GPS կոորդինատներում տեղադրելու համար բջջային հավելված ստեղծելու համար `օգտագործելով Unity3D- ը: Ես ձեզ կներկայացնեմ Mapbox- ի միջոցով իմ պատրաստած նախագիծը ստեղծելու միջոցով, որը թույլ է տալիս մեզ ուղարկել GPS- ի որոշակի վայրերում հաղորդագրություններ և գրել դրանք GameSparks տվյալների բազայում:

Բոլոր ծրագրերը և նախագծերը, որոնք մենք կօգտագործենք այստեղ, անվճար են:

Ներբեռնեք Unity 3D- ն այստեղ, եթե այն արդեն չունեք.

unity3d.com/

Քայլ 1: Խոչընդոտներ…

Խոչընդոտներ…
Խոչընդոտներ…

Այսպիսով, սա ամենահեշտ ծրագիրը չէ, որը կարելի է անել բջջային GPS- ի և բջջային կողմնացույցի ներկայիս սահմանափակումներով:

Անկեղծ ասած, օբյեկտները հայտնվում են այնտեղ, որտեղ ենթադրվում է, որ ժամանակի մոտ 50% -ը: Այսպիսով, արդյունքները հիանալի չեն, բայց դրանք ավելի ճշգրիտ են դառնում, երբ մոտենում եք օբյեկտներին:

Ամեն դեպքում, ես կարծում եմ, որ GPS- ի վրա հիմնված AR- ի ավելի լավ միջոց կլինի օգտագործել քարտեզը, ինչպիսին է pokemon go- ը, և երբ մոտենում ես օբյեկտի, տեսախցիկը բացվում է, և տեսնում ես միայն այդ օբյեկտը քո առջև: Ապագայում ես կցանկանայի կատարել ամբողջական ձեռնարկ ՝ նման ավելի պարզ իրականացման վերաբերյալ:

Ամեն դեպքում, ես նախկինում օգտագործել եմ Mapbox- ը և գիտեմ, որ նրանք ունեն փոխակերպման դաս, որն ունի GPS կոորդինատները Unity համաշխարհային կոորդինատներ փոխարկելու գործառույթներ: Ես մտածեցի, որ կարող եմ պարզապես փոխանցել որոշ GPS կոորդինատներ, և դրանք կհայտնվեն այնտեղ, որտեղ ես ուզում էի: Չի աշխատել:

Օբյեկտները ճիշտ են երևում միմյանց համեմատ, բայց դրանք երբեք ճիշտ տեղում չեն եղել: Այսպիսով, ես որոշ հետազոտություններ կատարեցի և պարզեցի, որ իմ Unity Camera- ն պետք է համապատասխանեցվեր իրական հյուսիսին, որպեսզի օբյեկտները հայտնվեին ճիշտ տեղում:

Խնդիրն այն է, որ ձեր հեռախոսի կողմնացույցը երբեք ամբողջովին ճշգրիտ չէ:

Քայլ 2: Հիմար կողմնացույց:

Հիմար կողմնացույց
Հիմար կողմնացույց
Հիմար կողմնացույց
Հիմար կողմնացույց

Հիմնական խնդիրն այն է, երբ օբյեկտները դնում եք տեսախցիկից, եթե ձեր հեռախոսի պատկերացումն իրական հյուսիսի մասին նույնիսկ մի քանի աստիճանով անջատված է, հեռվում գտնվող օբյեկտները կհայտնվեն շատ հեռու:

Ես գրեթե հրաժարվեցի այս ձեռնարկումից, բայց ընկերս ինձ պատմեց այս GitHub ծրագրի մասին.

github.com/mapbox/mapbox-ar-unity

Սա «համաշխարհային մասշտաբով» AR կատարելու փորձ է Mapbox- ից, որտեղ օբյեկտները խարսխված են GPS կոորդինատներին, որպեսզի հավելյալ իրականության փորձը կարողանա աշխատել երկար հեռավորությունների սահմաններից դուրս ՝ ձեր տան փոքրիկ սենյակի ներսում:

Նրանց նախագիծը օգտագործում է AR դիրքորոշման դելտաները և GPS դիրքի դելտաները `անկյունը հաշվարկելու համար, որը փոխված է AR տեսախցիկից դեպի իսկական հյուսիս: Այսպիսով, հիմնականում վերցրեք մեկ GPS ընթերցում, երբ օգտվողը սկսում է ծրագիրը և հանձնարարեք նրան քայլել ուղիղ գծով և վերցնել մեկ այլ GPS ընթերցում: Հետո այս երկու կետերով դուք կարող եք ասել, թե որ ուղղությամբ էր այդ մարդը քայլում (ենթադրելով, որ իր տեսախցիկը ցույց է տալիս այն քայլը, որով քայլում է): Նրանք պարզել են, որ սա ավելի ճշգրիտ է, քան հեռախոսում կողմնացույցի օգտագործումը:

Մյուս հարցը, որը նրանք փորձում են լուծել, ARkit- ի հետ շեղումն է: Հետևելը նորմալ է փոքր սենյակի ներսում, բայց երբ ձեր դրսից երկար հեռավորության վրա քայլող AR առարկաները հայտնվում են այն վայրից, որտեղ պետք է լինեին:

Քայլ 3: Վերջապես լուծում:

Վերջապես լուծում!
Վերջապես լուծում!

Այսպիսով, Mapbox- ի այս նախագիծը առաջարկեց մի ուղի ՝ դեպի ճշմարիտ հյուսիսը երեսապատման հուսալի ուղղություն ստանալու համար, այնպես որ մնում էր միայն օբյեկտները տեղադրել աշխարհում:

Ավարտեցի այս օրինակի փոքր -ինչ ընդլայնումը, որպեսզի կարողանամ տեքստային հաղորդագրություն նշել GPS- ի որոշակի վայրում, այնուհետև գրել այդ տեղեկատվությունը GameSparks տվյալների բազայում: Դա այն է, ինչ ես պատրաստվում եմ ցույց տալ ձեզ, թե ինչպես օգտագործել:

Այս նախագծի միակ խնդիրն այն է, որ այն օգտագործելուց առաջ պետք է լավ հավասարեցում ստանալ:

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

Այս իմաստով, UX- ը ևս մեկ խոչընդոտ է, սակայն նախագծի կատարելագործման մեջ նրանք տալիս են օրինակ ՝ օգտվողների առջև խորանարդներ տեղադրելու համար, որպեսզի նրանք անցնեն ՝ լավ հավասարեցում ապահովելու համար:

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

Բացի այդ, սա պետք է աշխատի ինչպես ARkit- ի, այնպես էլ ARcore- ի հետ, բայց ես այս պահին միայն iPhone ունեմ, այնպես որ դա այն ամենն էր, ինչ կարող էի ստուգել:

Քայլ 4: Թող ծրագիրը աշխատի:

Թող ծրագիրը աշխատի
Թող ծրագիրը աշխատի

Առաջին բանը, առաջին հերթին, ներբեռնեք այս նախագիծը GitHub- ից ՝

Պահեք ֆայլը ձեր աշխատասեղանին և բացեք այն Unity- ում:

Գնացեք ֆայլ, ստեղծեք կարգավորումներ և փոխեք ձեր հարթակը կամ Android- ի կամ IOS- ի:

Այժմ գնացեք Mapbox.com և հաշիվ ստեղծեք, եթե արդեն չունեք:

Բռնեք ձեր API ստեղնը և վերադառնաք Unity, կտտացրեք Mapbox ներդիրին վերևում և կտտացրեք կազմաձևել: Տեղադրեք ձեր API բանալին այնտեղ:

Այժմ ստեղծեք հաշիվ GameSparks.com կայքում և կտտացրեք վերևի աջ կոճակին ՝ նոր ծրագիր ստեղծելու համար:

Անվանեք այն, ինչպես ցանկանում եք և պատճենեք ձեր API բանալին և ծրագրի գաղտնիքը: Վերադարձեք Unity և վերևում գտեք GameSparks ներդիրը: Կտտացրեք կազմաձևել և այնտեղ տեղադրեք նաև ձեր հավատարմագրերը:

Քայլ 5. Կարգավորեք GameSparks- ը:

Կարգավորեք GameSparks- ը
Կարգավորեք GameSparks- ը

Այժմ, մինչև ծրագիրը կաշխատի, մենք պետք է կազմաձևենք մեր տվյալների բազան:

GameSparks- ը օգտագործում է noSQL, այնպես որ մենք պետք է նախ հավաքածու ստեղծենք և ավելացնենք այն իրադարձությունները, որոնք մեր ծրագիրը օգտագործում է սերվերից կարդալու, գրելու և ջնջելու համար:

Սկզբում ստեղծեք նոր հավաքածու GameSparks կայքում և անվանեք այն ինչպես ցանկանում եք:

Այժմ մենք պետք է ստեղծենք 3 իրադարձություն:

Առաջին բանը, որ ծրագիրը պետք է անի, տվյալների բազայում հաղորդագրության օբյեկտ գրելն է:

Հաղորդագրությունն ունի լայնություն, երկայնություն, այնուհետև հաղորդագրության տեքստ:

Այսպիսով, գնացեք կազմաձևիչ և ավելացրեք նոր իրադարձություն: Կազմեք «SAVE_GEO_MESSAGE» կարճ կոդը:

Տեղադրեք այն, ինչ ցանկանում եք անվան և նկարագրության համար:

Ավելացրեք կարճ ծածկագիր 3 հատկանիշների համար.

«ՎԱAT» «ԼՈՆ»

«ՏԵՔՍՏ»

Տվյալների յուրաքանչյուր տիպ սահմանեք տողի վրա և կանխադրված արժեքը `0: Դարձրեք յուրաքանչյուրի կանխադրված համախմբման տեսակը« օգտագործված սցենարում »:

Քայլ 6: Ավելացրեք վերջին իրադարձությունները…

Ավելացնել վերջին իրադարձությունները…
Ավելացնել վերջին իրադարձությունները…

Հավելվածը նաև պետք է բեռնվի տվյալների բազայից բոլոր հաղորդագրությունները և դրանք կարդա Unity- ում, երբ ծրագիրը գործարկվի, որպեսզի մենք կարողանանք տեղադրել տվյալների բազայում պահվող AR հաղորդագրություններ:

Ստեղծեք այլ իրադարձություն և անվանեք այն «LOAD_MESSAGE»

Այս իրադարձությունը որևէ հատկանիշի կարիք չունի: Անվան և նկարագրության համար նորից դրեք այն, ինչ ցանկանում եք:

Նույնը կատարեք մեկ այլ իրադարձության դեպքում և անվանեք այն «REMOVE_MESSAGES»

Սա նույնիսկ ատրիբուտների կարիք չունի:

Այժմ վերջին բանը, որ մենք պետք է անենք, ավելացնել «ամպային ծածկագիր» կամ սերվերի կողային ծածկագիր, որը կոչվում է, երբ յուրաքանչյուր իրադարձություն սկսվում է մեր ծրագրից:

Քայլ 7: Ավելացրեք ամպի ծածկագիրը:

GameSparks- ում անցեք կազմաձևիչ և ամպի կոդ:

Մենք պետք է սցենար ավելացնենք մեր պատրաստած յուրաքանչյուր իրադարձության:

LOAD_MESSAGE իրադարձության մեջ ավելացրեք այս ծածկագիրը և պահեք այն.

var messageData = Spark.runtimeCollection («GeoMessage»);

var կուրսորը = messageData.find ();

var allMessages = ;

while (cursor.hasNext ()) {

var obj = cursor.next ();

ջնջել (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // վերադարձնել բոլոր տվյալները

REMOVE_MESSAGES իրադարձության մեջ ավելացրեք այս ծածկագիրը.

var messageData = Spark.runtimeCollection («GeoMessage»);

messageData.remove ({});

Վերջապես SAVE_MESSAGES միջոցառմանը ավելացրեք սա.

var geoMessageList = Spark.runtimeCollection («GeoMessage»);

var messageLat = Spark.getData (). LAT;

var messageLon = Spark.getData (). LON;

var messageText = Spark.getData (). TEXT;

var currentMessage = {

"messLat": messageLat,

"messLon": messageLon,

"messText": messageText,

};

geoMessageList.insert (ընթացիկ հաղորդագրություն);

Քայլ 8: ՄԵՆՔ ԿԱՏԱՐԵԼ ԵՆՔ:

ՄԵՆՔ ԿԱՏԱՐՎԵԼ ԵՆՔ
ՄԵՆՔ ԿԱՏԱՐՎԵԼ ԵՆՔ

Այս նախագիծը օգտագործում է ձեր սարքի եզակի ID- ն ՝ GameSparks սերվերի միջոցով նույնականացնելու համար, որպեսզի այժմ կարողանաք վերադառնալ Unity և սեղմել play- ը, և վահանակում պետք է տեսնեք «վավերացված սարքը …»:

Այժմ գնացեք ֆայլ, կառուցեք կարգավորումներ և կտտացրեք կառուցել: Եթե դուք երբևէ ծրագիր չեք պատրաստել Android- ի կամ IOS- ի համար, գուցե անհրաժեշտ լինի զարգացման հաշիվ ստեղծել Google- ում կամ Apple- ում:

Երբ ծրագիրը ձեր հեռախոսում է, նախ պետք է համոզվեք, որ ARKit- ը կամ ARCore- ը հայտնաբերում են գրունտային հարթություն: Այժմ կտտացրեք ներքևի ձախ անկյունում գրանցամատյանի կոճակին: Քայլեք մի քանի քայլ առաջ և կտեսնեք, որ «հաշվարկված հավասարեցումը» հայտնվում է բաց կապույտ գույնով: Այժմ UI կոճակները պետք է հայտնվեն, և եթե որևէ հաղորդագրություն բեռնվի ձեր տվյալների բազայում, դրանք կտեղադրվեն աշխարհում:

Նոր GPS AR հաղորդագրությունը ինչ -որ տեղ նշելու համար գնացեք այն վայրը, որտեղ ցանկանում եք լինել հաղորդագրությունը և կտտացրեք հաղորդագրության պատկերակին էկրանի վերին աջ մասում: Մուտքագրեք ցանկացած հաղորդագրություն, որը ցանկանում եք և կտտացրեք կոճակը:

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