Мазмұны:

АР объектілерін GPS координаттарына кеңейтілген нақтылықта орналастыру: 8 қадам (суреттермен)
АР объектілерін GPS координаттарына кеңейтілген нақтылықта орналастыру: 8 қадам (суреттермен)

Бейне: АР объектілерін GPS координаттарына кеңейтілген нақтылықта орналастыру: 8 қадам (суреттермен)

Бейне: АР объектілерін GPS координаттарына кеңейтілген нақтылықта орналастыру: 8 қадам (суреттермен)
Бейне: Extract GPS location in Arduino with NEO-6m or NEO-7M module 2024, Қараша
Anonim
АР объектілерін кеңейтілген нақтылықта GPS координаттарына орналастыру
АР объектілерін кеңейтілген нақтылықта GPS координаттарына орналастыру

Бұл нұсқаулық Unity3D көмегімен AR объектілерін ARkit және ARCore көмегімен GPS объектілерін GPS координаттарына орналастыруға арналған мобильді қосымша жасауды қарастырады. Мен сізге GPS -тің белгілі бір жерлерінде хабарларды белгілеуге және оларды GameSparks дерекқорына жазуға мүмкіндік беретін Mapbox көмегімен жасаған жобаны құруға көмектесемін.

Біз қолданатын барлық бағдарламалық қамтамасыз ету мен жобалар ақысыз.

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

Бұл кеңейтілген шындық тәжірибесі сіздің үйіңіздегі кішкене бөлмеде емес, алыс қашықтықта жұмыс істей алатындай етіп GPS координаттарына бекітілген Mapbox -тен «әлемдік масштабты» АР жасауға тырысады.

Олардың жобасы AR Position дельталары мен GPS Position дельталарын пайдаланады, олар AR камерасынан шынайы солтүстікке қарай ығысқан бұрышты есептейді. Қолданушы қосымшаны іске қосқанда, GPS -тің бір оқуын алыңыз және оларды түзу жүруге және басқа GPS оқуын қабылдауға шақырыңыз. Содан кейін осы екі нүктемен сіз бұл адамның қай бағытта жүргенін біле аласыз (егер олардың камерасы олар жүрген бағытты көрсетсе). Олар бұл телефондағы компасты қолданғаннан гөрі дәлірек екенін анықтады.

Олар шешуге тырысатын басқа мәселе - ARkit -пен дрейф. Кішкене бөлмеде бақылау жақсы, бірақ егер сіз алыс қашықтыққа жаяу жүрсеңіз, AR объектілері қажет жерден алыстап кетеді.

3 -қадам: Ақырында шешім

Ақырында шешім!
Ақырында шешім!

Бұл Mapbox жобасы шынайы солтүстікке қатысты сенімді бағытты алудың жолын ұсынды, сондықтан әлемдегі заттарды орналастыру ғана қалды.

Мен GPS -тің белгілі бір жерінде мәтіндік хабарды белгілеп, содан кейін бұл ақпаратты GameSparks дерекқорына жаза алатындай етіп осы мысалды біршама кеңейте бастадым. Міне мен сізге қалай қолдану керектігін көрсетемін.

Бұл жобаның жалғыз мәселесі - оны қолданар алдында жақсы туралау қажет.

Тегістеу дегенім - Mapbox бағытты есептеу үшін позицияның дельтасын қолданатындықтан, қолданбаны бірінші рет ашқанда, сіз жердегі жазықтықтың анықталғанына көз жеткізіп, содан кейін дұрыс туралау есептелгенше түзу сызықпен жүруіңіз керек.

Бұл мағынада UX - бұл тағы бір кедергі, бірақ жобаны жақсартуда олар жақсы туралауды қамтамасыз ету үшін текшелерді пайдаланушының алдына қоюға мысал келтіреді.

Енді сіз бұл жобаның шектеулерін білсеңіз, мен сізге оны қалай пайдалану керектігін көрсетуге рұқсат етемін, осылайша балалар ойнай алады. Ақырында сізге mapbox есептік жазбасы мен gameparks тіркелгісін жасау қажет болады, екеуі де ақысыз. Мен 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 атрибут үшін қысқа кодты қосыңыз:

«КЕШ» «ЛОН»

«МӘТІН»

Әр деректер түрін жолға орнатыңыз және әдепкі мәнді 0 -ге орнатыңыз. Әрқайсысының әдепкі жинақтау түрін «сценарийде пайдаланылатын» етіп жасаңыз.

6 -қадам: Қорытынды оқиғаларды қосыңыз …

Қорытынды оқиғаларды қосыңыз…
Қорытынды оқиғаларды қосыңыз…

Қолданба сонымен қатар дерекқордан барлық хабарларды жүктеуі керек және бағдарлама іске қосылған кезде оларды Unity -де оқуы керек, осылайша біз дерекқорда сақталатын AR хабарларын орналастыра аламыз.

Басқа оқиға жасаңыз және оны «LOAD_MESSAGE» деп атаңыз

Бұл оқиға ешқандай атрибуттарды қажет етпейді. Тағы да аты мен сипаттамасы үшін қалағаныңызды қойыңыз.

Басқа оқиға үшін де дәл солай жасаңыз және оны «ЖОЮ_МЕССЕГТЕРІ» деп атаңыз

Бұл тіпті ешқандай атрибуттарды қажет етпейді.

Енді біз істеуіміз керек соңғы нәрсе - бұл «бұлтты кодты» немесе сервер жағындағы кодты қосу, ол әр оқиға біздің қосымшадан басталған кезде шақырылады.

7 -қадам: Бұлтты кодты қосыңыз

GameSparks -те конфигуратор мен бұлтты кодқа өтіңіз.

Біз жаңа жасаған әрбір оқиғаға сценарий қосуымыз керек.

LOAD_MESSAGE оқиғасында осы кодты қосыңыз және сақтаңыз:

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

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

8 -қадам: БІЗ ДАЙЫМЫЗ

БІЗ БІТІРДІК!
БІЗ БІТІРДІК!

Бұл жоба GameSparks серверінде түпнұсқалығын растау үшін құрылғының бірегей идентификаторын пайдаланады, сондықтан сіз енді Unity -ге оралып, ойнатуды нұқыңыз және консольде «құрылғы түпнұсқалығы расталғанын» көресіз.

Енді файлға өтіңіз, параметрлерді құрыңыз және «Құру» түймесін басыңыз. Егер сіз ешқашан Android немесе IOS үшін қолданба жасамаған болсаңыз, Google немесе Apple -де даму есептік жазбасын орнату қажет болуы мүмкін.

Қолданба телефонда болғаннан кейін алдымен ARKit немесе ARCore жердегі ұшақты анықтайтынына көз жеткізу керек. Енді төменгі сол жақ бұрыштағы журнал түймесін басыңыз. Бірнеше қадам алға қарай жүріңіз, сонда сіз ашық көк түспен «есептелген туралау» пайда болатынын көресіз. Енді UI түймелері пайда болуы керек және егер сіздің деректер базаңызға хабарламалар жүктелсе, олар әлемде орналасады.

Жаңа GPS AR хабарын белгілеу үшін бір жерде хабар қажет болған жерге барыңыз және экранның жоғарғы оң жағындағы хабар белгісін басыңыз. Қажетті хабарламаны енгізіңіз және түйреу түймесін басыңыз!

Ұсынылған: