Mündəricat:

Artırılmış Reallıqda AR Obyektlərini GPS Koordinatlarına Yerləşdirmək: 8 Addım (Şəkillərlə)
Artırılmış Reallıqda AR Obyektlərini GPS Koordinatlarına Yerləşdirmək: 8 Addım (Şəkillərlə)

Video: Artırılmış Reallıqda AR Obyektlərini GPS Koordinatlarına Yerləşdirmək: 8 Addım (Şəkillərlə)

Video: Artırılmış Reallıqda AR Obyektlərini GPS Koordinatlarına Yerləşdirmək: 8 Addım (Şəkillərlə)
Video: 4 D Uzay Kartları( Arttırılmış Gerçeklik) 2024, Noyabr
Anonim
Artırılmış Reallıqda AR Obyektlərinin GPS Koordinatlarına yerləşdirilməsi
Artırılmış Reallıqda AR Obyektlərinin GPS Koordinatlarına yerləşdirilməsi

Bu təlimat, Unity3D istifadə edərək ARkit və ARCore ilə AR cisimlərini GPS koordinatlarına yerləşdirmək üçün bir mobil tətbiq hazırlamağı planlaşdırır. Xüsusi GPS yerlərində mesajları etiketləməyimizə və GameSparks verilənlər bazasına yazmağımıza imkan verən Mapbox -dan istifadə edərək hazırladığım bir layihəni qurmaqda sizə yol göstərəcəyəm.

Burada istifadə edəcəyimiz bütün proqram və layihələr pulsuzdur.

Əgər sizdə hələ yoxdursa, Unity 3D -ni buradan yükləyin:

unity3d.com/

Addım 1: maneələr…

Maneələr…
Maneələr…

Bu, mobil GPS və mobil kompasın mövcud məhdudiyyətləri ilə etmək üçün ən asan tətbiq deyil.

Düzünü desəm, cisimlər vaxtın təxminən 50% -nin lazım olduğu yerdə görünür. Nəticələr böyük deyil, ancaq obyektlərə yaxınlaşdıqca daha dəqiq olur.

Hər halda, düşünürəm ki, bu nöqtədə GPS əsaslı AR üçün daha yaxşı bir yol, pokemon go kimi bir xəritədən istifadə etmək olar və bir obyektə yaxınlaşanda kamera açılır və qarşınızda yalnız o obyekti görürsünüz. Gələcəkdə bunun kimi daha sadə bir tətbiq haqqında tam bir təlimat vermək istərdim.

Hər halda, əvvəllər Mapbox -dan istifadə etmişəm və GPS koordinatlarını Unity dünya koordinatlarına çevirmək üçün funksiyaları olan bir dönüşüm sinifinə sahib olduqlarını bilirəm. Bəzi GPS koordinatlarını keçə biləcəyimi düşündüm və istədiyim yerdə görünəcəklər. İşləmədi.

Cisimlər bir -birinə nisbətən düzgün görünür, lakin heç vaxt doğru yerdə deyildilər. Bir az araşdırma apardım və obyektlərin doğru yerdə görünməsi üçün Birlik Kameramın əsl şimala uyğunlaşdırılması lazım olduğunu gördüm.

Problem telefonunuzdakı pusulanın heç vaxt tam dəqiq olmamasıdır.

Addım 2: Axmaq Pusula

Axmaq kompas
Axmaq kompas
Axmaq kompas
Axmaq kompas

Əsas problem, obyektləri kameradan çox uzaqda yerləşdirdiyinizdə, telefonlarınızın əsl şimal düşüncəsi bir neçə dərəcə də olsa, uzaqdakı obyektlər çox uzaqda görünəcək.

Demək olar ki, bu işdən vaz keçdim, amma bir dostum bu GitHub layihəsi haqqında mənə dedi:

github.com/mapbox/mapbox-ar-unity

Bu, genişlənmiş reallıq təcrübələrinin evinizdəki kiçik bir otaqda deyil, uzaq məsafələrdə işləyə bilməsi üçün obyektlərin GPS koordinatlarına bağlandığı Mapbox -dan "dünya miqyasında" AR etmək cəhdidir.

Layihələri, AR kamerasından əsl şimala doğru olan bir açı hesablamaq üçün AR Position deltaları və GPS Position deltalarından istifadə edir. İstifadəçi tətbiqi başlatdıqda və bir düz yolda gəzib başqa bir GPS oxumasını götürəndə əsas etibarilə bir GPS oxu edin. Sonra bu iki nöqtə ilə həmin şəxsin hansı istiqamətdə getdiyini (kamerasının getdiyi istiqamətə işarə etdiyini düşünərək) deyə bilərsiniz. Bunun telefondakı kompas istifadə etməkdən daha doğru olduğunu tapdılar.

Həll etməyə çalışdıqları digər problem, ARkit ilə olan sürüşmələrdir. Kiçik bir otaqda izləmə qaydasındadır, ancaq xaricdən uzun məsafələrə gedərkən AR obyektləri lazım olduğu yerdən uzaqlaşır.

Addım 3: Nəhayət bir həll

Nəhayət bir həll!
Nəhayət bir həll!

Beləliklə, bu Mapbox layihəsi həqiqi şimala nisbətən etibarlı bir üzləşmə istiqaməti əldə etmək üçün bir yol təqdim etdi, buna görə qalanları yalnız dünyadakı obyektləri yerləşdirmək idi.

Müəyyən bir GPS yerində mətn mesajını etiketləmək və sonra bu məlumatı GameSparks verilənlər bazasına yazmaq üçün bu nümunəni bir qədər genişləndirdim. Necə istifadə edəcəyimi sizə göstərəcəyəm.

Bu layihənin yeganə problemi, istifadə edilməzdən əvvəl yaxşı bir uyğunlaşma əldə etməyinizdir.

Hizalamaqla demək istədiyim odur ki, Mapbox başlığı hesablamaq üçün mövqe deltalarından istifadə etdiyindən, proqramı ilk dəfə açdığınızda və yer səthinin aşkarlandığından əmin olmalısınız və sonra düzgün uyğunlaşma hesablanana qədər bir müddət düz bir xəttdə gəzməlisiniz.

Bu mənada UX başqa bir maneədir, lakin layihənin təkmilləşdirmələrində yaxşı bir uyğunlaşma təmin etmək üçün istifadəçinin qarşısına keçmək üçün kubların qoyulmasına nümunə verirlər.

İndi bu layihənin məhdudiyyətlərini bildiyiniz üçün uşaqların oynaya bilməsi üçün bundan necə istifadə edəcəyinizi sizə göstərim. Nəticədə, hər ikisi də pulsuz olan bir mapbox hesabı və bir gamesparks hesabı yaratmalısınız. GPS koordinatlarını bir yerdə saxlaya biləcəyim üçün oyun parklarından istifadə etdim, çünki test zamanı proqramı tez -tez yenidən başladıb yenidən quracaqsınız.

Ayrıca, bu həm ARkit, həm də ARcore ilə işləməlidir, amma bu anda yalnız bir iPhone var, buna görə sınaya bildim.

Addım 4: Tətbiqi işə salaq

Gəlin Tətbiqi Çalışdıraq!
Gəlin Tətbiqi Çalışdıraq!

İlk olaraq bu layihəni GitHub -dan yükləyin:

Faylı masaüstünüzdə saxlayın və Unity -də açın.

Dosyaya gedin, parametrlər qurun və platformanızı ya Android, ya da IOS -a keçirin.

İndi Mapbox.com saytına gedin və hesabınız yoxdursa hesab yaradın.

API açarınızı götürün və Birliyə qayıdın, yuxarıdakı Mapbox sekmesini basın və konfiqurasiya et düyməsini basın. Orada API açarınızı yapışdırın.

İndi GameSparks.com saytında bir hesab yaradın və yeni bir tətbiq yaratmaq üçün sağ üstdəki düyməni basın.

İstədiyinizə zəng edin və API açarınızı və tətbiq sirrinizi kopyalayın. Birliyə qayıdın və yuxarıdakı GameSparks sekmesini tapın. Konfiqurasiya et və etimadnamənizi ora yapışdırın.

Addım 5: GameSparks -ı konfiqurasiya edin

GameSparks -ı konfiqurasiya edin
GameSparks -ı konfiqurasiya edin

İndi tətbiq işləməzdən əvvəl verilənlər bazamızı konfiqurasiya etməliyik.

GameSparks noSQL istifadə edir, buna görə əvvəlcə bir kolleksiya yaratmalı və tətbiqimizin serverdən oxumaq, yazmaq və silmək üçün istifadə etdiyi hadisələri əlavə etməliyik.

Əvvəlcə GameSparks saytında yeni bir kolleksiya yaradın və istədiyinizə zəng edin.

İndi 3 hadisə yaratmalıyıq.

Tətbiqin etməli olduğu ilk şey verilənlər bazasına mesaj obyekti yazmaqdır.

Mesajda bir enlem, uzunluq və sonra mesajın mətni var.

Beləliklə, konfiquratora gedin və yeni bir hadisə əlavə edin. "SAVE_GEO_MESSAGE" qısa kodunu yaradın.

Adı və təsviri üçün istədiyinizi qoyun.

3 xüsusiyyət üçün qısa kodu əlavə edin:

"LAT" "LON"

"Mətn"

Hər bir məlumat növünü simli olaraq təyin edin və default dəyərini 0 olaraq təyin edin. Hər birinin standart yığma növünü "skriptdə istifadə etmək" olaraq təyin edin.

Addım 6: Son Hadisələri əlavə edin…

Son Hadisələri əlavə edin…
Son Hadisələri əlavə edin…

Tətbiq eyni zamanda verilənlər bazasında olan bütün mesajları yükləməli və tətbiq başladıqda onları Birliyə oxumalıdır ki, verilənlər bazasında saxlanılan AR mesajlarını yerləşdirə bilək.

Başqa bir hadisə yaradın və ona "LOAD_MESSAGE" deyin

Bu hadisənin heç bir atributa ehtiyacı yoxdur. Yenə ad və təsvir üçün istədiyinizi qoyun.

Başqa bir hadisə üçün də eyni şeyi edin və "REMOVE_MESSAGES" adlandırın

Bunun hətta heç bir atributa ehtiyacı yoxdur.

İndi etməyimiz lazım olan son şey, hər bir hadisə tətbiqimizdən başlayanda çağırılan bir "bulud kodu" və ya server tərəfi kodu əlavə etməkdir.

Addım 7: Bulud Kodunu əlavə edin

GameSparks -da konfiquratora və bulud koduna keçin.

Yeni hazırladığımız hər bir hadisəyə bir skript əlavə etməliyik.

LOAD_MESSAGE tədbirində bu kodu əlavə edin və qeyd edin:

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

var imleci = messageData.find ();

var allMessages = ;

while (cursor.hasNext ()) {

var obj = cursor.next ();

sil (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // bütün məlumatları qaytarın

REMOVE_MESSAGES hadisəsinə bu kodu əlavə edin:

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

messageData.remove ({});

Nəhayət SAVE_MESSAGES tədbirində bunu əlavə edin:

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": mesajLon,

"messText": messageText,

};

geoMessageList.insert (currentMessage);

Addım 8: BİZ BİZDİR

BİZ QURTARDIQ!
BİZ QURTARDIQ!

Bu layihə, GameSparks serverində identifikasiya etmək üçün cihazınızın bənzərsiz identifikatorundan istifadə edir, buna görə də indi Unity -ə qayıda və oyuna klikləyə bilərsiniz və konsolda "cihazın təsdiqləndiyini…" görürsünüz.

İndi fayla gedin, parametrləri qurun və qurmağı basın. Heç vaxt Android və ya IOS üçün bir tətbiq etməmisinizsə, Google və ya Apple ilə bir inkişaf hesabı qurmalısınız.

Tətbiq telefonunuzda olduqdan sonra əvvəlcə ARKit və ya ARCore -un yerüstü təyyarə algıladığından əmin olmalısınız. İndi sol alt küncdəki qeyd düyməsini basın. Bir neçə addım irəli gedin və açıq mavi rəngdə "hesablanmış hizalanmanın" gəldiyini görəcəksiniz. İndi UI düymələri görünməlidir və verilənlər bazanıza hər hansı bir mesaj yüklənərsə, dünyada yerləşdiriləcəklər.

Yeni bir GPS AR mesajını etiketləmək üçün mesajın olmasını istədiyiniz yerə gedin və ekranın sağ üst hissəsindəki mesaj simgesini vurun. İstədiyiniz mesajı yazın və pin düyməsini basın!

Tövsiyə: