Mundarija:

Kengaytirilgan haqiqatda AR ob'ektlarini GPS koordinatalariga joylashtirish: 8 qadam (rasmlar bilan)
Kengaytirilgan haqiqatda AR ob'ektlarini GPS koordinatalariga joylashtirish: 8 qadam (rasmlar bilan)

Video: Kengaytirilgan haqiqatda AR ob'ektlarini GPS koordinatalariga joylashtirish: 8 qadam (rasmlar bilan)

Video: Kengaytirilgan haqiqatda AR ob'ektlarini GPS koordinatalariga joylashtirish: 8 qadam (rasmlar bilan)
Video: Muammolarning oddiy yechimi (Bir maktubga javob) | @AbdukarimMirzayev2002 2024, Noyabr
Anonim
Kengaytirilgan haqiqatda AR ob'ektlarini GPS koordinatalariga joylashtirish
Kengaytirilgan haqiqatda AR ob'ektlarini GPS koordinatalariga joylashtirish

Unity3D yordamida ARkit va ARCore yordamida AR ob'ektlarini GPS koordinatalarida joylashtirish uchun mobil ilova yaratishni o'rgatadi. Men sizga Mapbox -dan foydalanib, ma'lum bir GPS joylarida xabarlarni belgilash va ularni GameSparks ma'lumotlar bazasiga yozish imkonini beradigan loyihani o'rnatish bo'yicha maslahat beraman.

Bu erda foydalanadigan barcha dasturlar va loyihalar bepul.

Unity 3D -ni yuklab oling, agar sizda yo'q bo'lsa:

unity3d.com/

1 -qadam: to'siqlar …

To'siqlar…
To'siqlar…

Bu mobil GPS va mobil kompas cheklovlari bilan amalga oshirishning eng oson dasturi emas.

Rostini aytsam, ob'ektlar taxminan 50% vaqt kerak bo'lgan joyda paydo bo'ladi. Shunday qilib, natijalar unchalik yaxshi emas, lekin ular ob'ektlarga yaqinlashganda aniqroq bo'ladi.

Qanday bo'lmasin, menimcha, GPS -ga asoslangan AR -ni tanlashning eng yaxshi usuli bu pokemon go kabi xaritadan foydalanishdir va siz ob'ektga yaqinlashganda kamera ochiladi va siz faqat shu ob'ektni oldingizda ko'rasiz. Kelgusida men shunga o'xshash oddiy dastur bo'yicha to'liq darslik qilmoqchiman.

Qanday bo'lmasin, men ilgari Mapbox -dan foydalanganman va bilaman, ularda GPS koordinatalarini Unity dunyo koordinatalariga aylantirish funktsiyalari mavjud. Men GPS koordinatalarini kiritishim mumkin deb o'yladim va ular men xohlagan joyda paydo bo'ladi. Ishlamadi.

Ob'ektlar bir -biriga nisbatan to'g'ri ko'rinadi, lekin ular hech qachon to'g'ri joyda bo'lmagan. Shunday qilib, men tadqiqot olib bordim va ob'ektlar to'g'ri joyda ko'rsatilishi uchun mening Unity Kameramni haqiqiy shimolga moslashtirish kerakligini aniqladim.

Muammo shundaki, telefoningizdagi kompas hech qachon aniq bo'lmaydi.

2 -qadam: Aqlsiz kompas

Aqlsiz kompas
Aqlsiz kompas
Aqlsiz kompas
Aqlsiz kompas

Asosiy muammo shundaki, siz ob'ektlarni kameradan uzoqda joylashtirganingizda, agar telefoningizda haqiqiy shimol haqidagi tasavvur bir necha daraja o'chirilgan bo'lsa, masofadagi ob'ektlar juda uzoqda paydo bo'ladi.

Men deyarli bu tashabbusdan voz kechdim, lekin bir do'stim menga GitHub loyihasi haqida gapirib berdi:

github.com/mapbox/mapbox-ar-unity

Bu Mapbox -dan ob'ektlarni GPS koordinatalariga bog'lab qo'yilgan "dunyo miqyosidagi" ARni bajarishga urinish, shuning uchun kengaytirilgan haqiqat tajribasi sizning uyingizdagi kichkina xonada emas, balki uzoq masofalarda ham ishlashi mumkin.

Ularning loyihasi AR pozitsiyasi deltalari va GPS pozitsiyasi deltalaridan foydalanadi, ular AR kamerasidan haqiqiy shimolga siljigan burchakni hisoblab chiqadi. Shunday qilib, foydalanuvchi dasturni ishga tushirganda, bitta GPS o'qishni oling va ularni to'g'ri chiziqda yurishga va boshqa GPS o'qishni qabul qilishga majburlang. Keyin, bu ikki nuqta yordamida siz qaysi tomon yurganini aniqlay olasiz (agar ularning kamerasi yurgan tomonga ishora qilsa). Ular bu telefon kompasidan ko'ra aniqroq ekanligini aniqladilar.

Ular hal qilmoqchi bo'lgan boshqa masala - bu ARkit bilan drift. Kichkina xonada kuzatish yaxshi, lekin tashqaridan uzoq masofalarga yurganingizda, AR moslamalari kerakli joydan uzoqlasha boshlaydi.

3 -qadam: Nihoyat, yechim

Nihoyat, yechim!
Nihoyat, yechim!

Shunday qilib, bu Mapbox loyihasi haqiqiy shimolga nisbatan ishonchli qarama -qarshi yo'nalishni olish yo'lini taklif qildi, shuning uchun qolgan narsalar faqat dunyodagi narsalarni joylashtirish edi.

Men bu misolni biroz kengaytirdim, shunda ma'lum bir GPS manzilida matnli xabarni belgilashim va keyin bu ma'lumotlarni GameSparks ma'lumotlar bazasiga yozishim mumkin edi. Men sizga buni qanday ishlatishni ko'rsataman.

Loyihaning yagona muammosi shundaki, siz uni ishlatishdan oldin yaxshi hizalanishingiz kerak.

Hizalanishni nazarda tutganim, Mapbox sarlavhani hisoblash uchun pozitsiya deltalaridan foydalanganligi sababli, siz birinchi marta dasturni ochganingizda, er tekisligi aniqlanganligiga ishonch hosil qilishingiz va keyin to'g'ri hizalanmaguncha bir muddat to'g'ri chiziqda yurishingiz kerak.

Shu ma'noda UX - bu boshqa to'siq, lekin loyihani takomillashtirishda ular yaxshi hizalanishni ta'minlash uchun foydalanuvchining oldiga kublarni qo'yib qo'yishga misol keltiradi.

Endi siz ushbu loyihaning cheklovlarini bilsangiz, men sizga undan qanday foydalanishni ko'rsataman, shunda yigitlar o'ynashi mumkin. Oxir -oqibat, siz xaritalar qutisi va gameparks hisobini yaratishingiz kerak, ikkalasi ham bepul. Men GPS -koordinatalarini qayerdadir saqlash uchun o'yin parki ishlatardim, chunki test paytida siz tez -tez dasturni qayta ishga tushirasiz va qayta tiklaysiz.

Bundan tashqari, bu ARkit va ARcore bilan ham ishlashi kerak, lekin menda hozircha faqat iPhone bor, shuning uchun men sinab ko'rishim mumkin edi.

4 -qadam: Ilovani ishga tushiramiz

Ilovani ishga tushirishga ruxsat bering!
Ilovani ishga tushirishga ruxsat bering!

Birinchi navbatda bu loyihani GitHub -dan yuklab oling:

Faylni ish stoliga saqlang va Unity -da oching.

Faylga o'ting, sozlamalarni yarating va platformangizni Android yoki IOS -ga o'tkazing.

Endi Mapbox.com saytiga o'ting va agar sizda hisob qaydnomasi bo'lmasa.

API kalitini oling va Unity -ga qayting, yuqoridagi Mapbox yorlig'ini bosing va sozlash -ni bosing. U erda API kalitini joylashtiring.

Endi GameSparks.com saytida hisob qaydnomasini yarating va yangi dastur yaratish uchun yuqori o'ng burchakdagi tugmani bosing.

Siz xohlagan narsaga qo'ng'iroq qiling va API kalitingiz va ilovangiz sirini nusxalash. Unity -ga qayting va yuqori qismdagi GameSparks yorlig'ini toping. Konfiguratsiyani bosing va hisob ma'lumotlarini u erga joylashtiring.

5 -qadam: GameSparks -ni sozlang

GameSparks -ni sozlash
GameSparks -ni sozlash

Endi ilova ishlamasdan oldin biz ma'lumotlar bazasini sozlashimiz kerak.

GameSparks noSQL -dan foydalanadi, shuning uchun biz avval kollektsiyani yaratishimiz va serverdan o'qish, yozish va o'chirish uchun ilovamiz ishlatadigan voqealarni qo'shishimiz kerak.

Avval GameSparks veb -saytida yangi to'plam yarating va uni xohlagan narsangizga chaqiring.

Endi biz 3 ta voqeani yaratishimiz kerak.

Dastur qilish kerak bo'lgan birinchi narsa - ma'lumotlar bazasiga xabar ob'ektini yozish.

Xabarda kenglik, uzunlik, keyin esa xabar matni mavjud.

Shunday qilib, konfiguratorga o'ting va yangi hodisani qo'shing. "SAVE_GEO_MESSAGE" qisqa kodini yarating.

Ism va tavsif uchun xohlagan narsani qo'ying.

3 ta atribut uchun qisqa kodni qo'shing:

"Kech" "LON"

"MATN"

Har bir ma'lumot turini mag'lubiyatga o'rnating va standart qiymatni 0 ga qo'ying. Har birining birlashma turini "skriptda ishlatilgan" qilib belgilang.

6 -qadam: Yakuniy voqealarni qo'shing …

Yakuniy voqealarni qo'shing …
Yakuniy voqealarni qo'shing …

Shuningdek, ilova ma'lumotlar bazasidan barcha xabarlarni yuklashi va dastur ishga tushganda ularni Unity -da o'qishi kerak, shunda biz ma'lumotlar bazasida saqlanadigan AR xabarlarini joylashtirishimiz mumkin.

Boshqa tadbir yarating va uni "LOAD_MESSAGE" deb nomlang

Bu hodisa hech qanday atributlarga muhtoj emas. Yana ism va tavsif uchun xohlagan narsani qo'ying.

Boshqa tadbir uchun ham xuddi shunday qiling va uni "REMOVE_MESSAGES" deb nomlang

Bu hatto hech qanday atributlarga muhtoj emas.

Endi biz qilishimiz kerak bo'lgan oxirgi narsa - har bir voqea bizning ilovamizdan boshlanganida chaqiriladigan "bulutli kod" yoki server tomoni kodini qo'shish.

7 -qadam: Bulut kodini qo'shing

GameSparks -da konfigurator va bulut kodiga o'ting.

Biz hozir qilgan har bir hodisaga skript qo'shishimiz kerak.

LOAD_MESSAGE hodisasida ushbu kodni qo'shing va saqlang:

var messageData = Spark.runtimeCollection ("GeoMessage");

var kursor = messageData.find ();

var allMessages = ;

while (cursor.hasNext ()) {

var obj = cursor.next ();

o'chirish (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // barcha ma'lumotlarni qaytarish

REMOVE_MESSAGES hodisasida ushbu kodni qo'shing:

var messageData = Spark.runtimeCollection ("GeoMessage");

messageData.remove ({});

Nihoyat, SAVE_MESSAGES tadbirida buni qo'shing:

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 (currentMessage);

8 -qadam: BIZ BILDIK

BIZ BILDIK!
BIZ BILDIK!

Ushbu loyiha GameSparks serverida autentifikatsiya qilish uchun qurilmangizning yagona identifikatoridan foydalanadi, shuning uchun siz endi Unity -ga qaytishingiz va o'ynashni bosishingiz mumkin va siz konsolda "qurilma tasdiqlanganini" ko'rasiz.

Endi faylga o'ting, sozlamalarni yarating va yaratish -ni bosing. Agar siz hech qachon Android yoki IOS uchun ilova qilmagan bo'lsangiz, Google yoki Apple bilan ishlab chiqish hisobini o'rnatishingiz kerak bo'ladi.

Ilova sizning telefoningizga kirgandan so'ng, avval ARKit yoki ARCore er usti samolyotini aniqlaganiga ishonch hosil qilishingiz kerak. Endi chap pastki burchakdagi jurnal tugmachasini bosing. Bir necha qadam oldinga yuring, shunda siz "hisoblangan hizalanish" ochiq ko'k rangda paydo bo'lishini ko'rasiz. Endi UI tugmalari paydo bo'lishi kerak va agar ma'lumotlar bazasiga biron bir xabar yuklansa, ular dunyoda joylashadi.

Yangi GPS AR -xabarini belgilash uchun, kerakli joyga boring va ekranning o'ng yuqori qismidagi xabar belgisini bosing. Istalgan xabarni kiriting va pin tugmasini bosing!

Tavsiya: