Satura rādītājs:

AR objektu ievietošana GPS koordinātās paplašinātajā realitātē: 8 soļi (ar attēliem)
AR objektu ievietošana GPS koordinātās paplašinātajā realitātē: 8 soļi (ar attēliem)

Video: AR objektu ievietošana GPS koordinātās paplašinātajā realitātē: 8 soļi (ar attēliem)

Video: AR objektu ievietošana GPS koordinātās paplašinātajā realitātē: 8 soļi (ar attēliem)
Video: A-GEO Darbnīca. GeoMax Zenith 60 GNSS iestatījumi. 2024, Jūlijs
Anonim
AR objektu ievietošana GPS koordinātās paplašinātajā realitātē
AR objektu ievietošana GPS koordinātās paplašinātajā realitātē

Šajā pamācībā tiks izstrādāta mobilā lietotne AR objektu novietošanai GPS koordinātās, izmantojot ARkit un ARCore, izmantojot Unity3D. Es jums pastāstīšu, kā izveidot projektu, ko izveidoju, izmantojot Mapbox, kas ļauj mums atzīmēt ziņojumus noteiktās GPS vietās un ierakstīt tos GameSparks datu bāzē.

Visa programmatūra un projekti, kurus mēs šeit izmantosim, ir bezmaksas.

Lejupielādējiet Unity 3D šeit, ja jums tas vēl nav:

unity3d.com/

Solis: šķēršļi…

Šķēršļi…
Šķēršļi…

Tātad šī nav vienkāršākā lietotne, ko var izveidot, ņemot vērā pašreizējos mobilā GPS un mobilā kompasa ierobežojumus.

Godīgi sakot, objekti parādās tur, kur tie ir paredzēti, apmēram 50% laika. Tātad rezultāti nav lieliski, bet tie kļūst precīzāki, jo tuvāk objektiem.

Jebkurā gadījumā, manuprāt, šajā brīdī labāks veids, kā izmantot AR balstītu AR, būtu izmantot karti, piemēram, pokemon go, un, kad jūs tuvojaties kādam objektam, kamera atveras un jūs redzat tikai šo objektu tieši sev priekšā. Nākotnē es vēlētos veikt pilnu apmācību par vienkāršāku ieviešanu.

Jebkurā gadījumā es iepriekš esmu izmantojis Mapbox, un es zinu, ka viņiem ir konvertēšanas klase, kurai ir funkcijas GPS koordinātu pārvēršanai par Unity pasaules koordinātām. Es domāju, ka varētu vienkārši ievadīt dažas GPS koordinātas, un tās parādīsies tur, kur es tās vēlos. Nestrādāja.

Objekti tiek parādīti pareizi attiecībā pret otru, taču tie nekad nav bijuši pareizajā vietā. Tāpēc es veicu dažus pētījumus un atklāju, ka mana Vienotības kamera ir jāsaskaņo ar patieso ziemeļu daļu, lai objekti tiktu parādīti pareizajā vietā.

Problēma ir tā, ka tālruņa kompass nekad nav pilnīgi precīzs.

2. solis: stulbais kompass

Stulbais kompass
Stulbais kompass
Stulbais kompass
Stulbais kompass

Galvenā problēma ir tā, ka, novietojot objektus tālu no kameras, ja jūsu tālruņa priekšstati par patieso ziemeļu virzienu ir pat par dažiem grādiem, tālumā esošie objekti parādīsies ļoti tālu.

Es gandrīz atteicos no šī pasākuma, bet draugs man pastāstīja par šo GitHub projektu:

github.com/mapbox/mapbox-ar-unity

Tas ir mēģinājums veikt “pasaules mēroga” AR no Mapbox, kur objekti ir piestiprināti pie GPS koordinātām, lai paplašinātās realitātes pieredze varētu darboties ārpus telpām lielos attālumos, nevis tikai nelielā jūsu mājas telpā.

Viņu projektā tiek izmantotas AR Position delta un GPS Position delta, lai aprēķinātu leņķi, kas ir nobīde no AR kameras uz patieso ziemeļu daļu. Tātad būtībā ņemiet vienu GPS nolasījumu, kad lietotājs sāk lietotni, un ļaujiet viņiem staigāt taisnā līnijā un nolasīt citu GPS. Tad ar šiem diviem punktiem jūs varat noteikt, kurā virzienā šī persona gāja (pieņemot, ka viņa kamera ir vērsta virzienā, kurā viņi iet). Viņi atklāja, ka tas ir precīzāk nekā kompasa izmantošana tālrunī.

Otra problēma, ko viņi cenšas atrisināt, ir novirze ar ARkit. Izsekošana ir piemērota nelielā telpā, bet, ejot lielos attālumos, AR objekti nonāk tālu no vietas, kur tiem vajadzētu būt.

3. solis: beidzot risinājums

Beidzot risinājums!
Beidzot risinājums!

Tātad šis Mapbox projekts piedāvāja veidu, kā iegūt uzticamu virzienu attiecībā pret patieso ziemeļu daļu, tāpēc atlika tikai novietot objektus pasaulē.

Es galu galā nedaudz paplašināju šo piemēru, lai es varētu atzīmēt īsziņu noteiktā GPS vietā un pēc tam ierakstīt šo informāciju GameSparks datu bāzē. Tas ir tas, ko es jums parādīšu, kā lietot.

Vienīgā šī projekta problēma ir tā, ka pirms tā izmantošanas jums ir jāizveido laba izlīdzināšana.

Ar izlīdzināšanu es domāju to, ka, tā kā Mapbox izmanto pozīcijas deltas, lai aprēķinātu virzienu, tad, pirmo reizi atverot lietotni, jums jāpārliecinās, ka ir konstatēta iezemētā plakne, un pēc tam kādu laiku staigājiet pa taisnu līniju, līdz tiek aprēķināta pareiza izlīdzināšana.

Šajā ziņā UX ir vēl viens šķērslis, bet projekta uzlabojumos tie sniedz piemēru, kā novietot kubus lietotāja priekšā, lai izietu, lai nodrošinātu labu izlīdzināšanu.

Tagad, kad jūs zināt šī projekta ierobežojumus, ļaujiet man parādīt, kā to izmantot, lai puiši varētu spēlēties. Galu galā jums būs jāizveido kartes kastes konts un spēļu parka konts, kas abi ir bezmaksas. Es izmantoju spēļu parkus tikai tāpēc, lai varētu kaut kur saglabāt GPS koordinātas, jo testēšanas laikā jūs diezgan bieži restartēsit un atjaunosit lietotni.

Turklāt tam vajadzētu darboties gan ar ARkit, gan ARcore, taču man šobrīd ir tikai iPhone, tāpēc tas bija viss, ko es varēju pārbaudīt.

4. darbība. Ļaujiet lietotnei darboties

Ļaujiet lietotnei darboties!
Ļaujiet lietotnei darboties!

Vispirms vispirms lejupielādējiet šo projektu no GitHub:

Saglabājiet failu savā darbvirsmā un atveriet to programmā Unity.

Dodieties uz failu, izveidojiet iestatījumus un pārslēdziet savu platformu uz Android vai IOS.

Tagad dodieties uz Mapbox.com un izveidojiet kontu, ja jums tāda vēl nav.

Paņemiet savu API atslēgu un atgriezieties Unity, augšpusē noklikšķiniet uz cilnes Mapbox un noklikšķiniet uz konfigurēt. Ielīmējiet tur savu API atslēgu.

Tagad izveidojiet kontu vietnē GameSparks.com un noklikšķiniet uz pogas augšējā labajā stūrī, lai izveidotu jaunu lietotni.

Sauciet to, kā vēlaties, un nokopējiet savu API atslēgu un lietotnes noslēpumu. Atgriezieties Unity un augšpusē atrodiet cilni GameSparks. Noklikšķiniet uz Konfigurēt un ielīmējiet tur arī savus akreditācijas datus.

5. darbība: konfigurējiet GameSparks

Konfigurējiet GameSparks
Konfigurējiet GameSparks

Tagad, pirms lietotne darbosies, mums ir jākonfigurē mūsu datu bāze.

GameSparks izmanto noSQL, tāpēc mums vispirms ir jāizveido kolekcija un jāpievieno notikumi, kurus mūsu lietotne izmanto lasīšanai, rakstīšanai un dzēšanai no servera.

Vispirms izveidojiet jaunu kolekciju vietnē GameSparks un nosauciet to, kā vēlaties.

Tagad mums ir jāizveido 3 notikumi.

Pirmā lieta, kas lietotnei jādara, ir rakstīt ziņojuma objektu datu bāzē.

Ziņojumam ir platums, garums un pēc tam ziņojuma teksts.

Tāpēc dodieties uz konfigurētāju un pievienojiet jaunu notikumu. Ievadiet īso kodu “SAVE_GEO_MESSAGE”.

Ierakstiet nosaukumu un aprakstu, ko vēlaties.

Pievienojiet īsu kodu 3 atribūtiem:

"LAT" "LON"

"TEXT"

Iestatiet katram datu tipam virkni un noklusējuma vērtību uz 0. Iestatiet katra noklusējuma apkopojuma veidu uz "lietots skriptā".

6. darbība: pievienojiet pēdējos notikumus…

Pievienojiet pēdējos notikumus…
Pievienojiet pēdējos notikumus…

Lietotnei ir arī jāielādē visi ziņojumi no datu bāzes un jālasa tie programmā Unity, kad tiek palaista lietotne, lai mēs varētu ievietot datubāzē saglabātos AR ziņojumus.

Izveidojiet citu notikumu un nosauciet to par “LOAD_MESSAGE”

Šim notikumam nav nepieciešami atribūti. Atkal ievietojiet nosaukumā un aprakstā visu, ko vēlaties.

Dariet to pašu citam pasākumam un nosauciet to par “REMOVE_MESSAGES”

Tam pat nav nepieciešami nekādi atribūti.

Tagad pēdējais, kas mums jādara, ir jāpievieno kāds “mākoņa kods” vai servera puses kods, kas tiek izsaukts, kad katrs notikums tiek sākts no mūsu lietotnes.

7. darbība: pievienojiet mākoņa kodu

Programmā GameSparks dodieties uz konfigurētāju un mākoņa kodu.

Mums jāpievieno skripts katram notikumam, ko tikko izveidojām.

Pasākumā LOAD_MESSAGE pievienojiet šo kodu un saglabājiet to:

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

var kursors = messageData.find ();

var allMessages = ;

while (cursor.hasNext ()) {

var obj = kursors.nākamais ();

dzēst (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // atgriezt visus datus

Pasākumā REMOVE_MESSAGES pievienojiet šo kodu:

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

messageData.remove ({});

Visbeidzot notikumā SAVE_MESSAGES pievienojiet šo:

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. solis: MĒS GATAVS

MĒS ESAM PABEIGUŠI!
MĒS ESAM PABEIGUŠI!

Šis projekts izmanto jūsu ierīces unikālo ID, lai autentificētos ar GameSparks serveri, lai jūs tagad varētu atgriezties Unity un noklikšķināt uz atskaņot, un konsolē vajadzētu redzēt "ierīce ir autentificēta …"

Tagad dodieties uz failu, izveidojiet iestatījumus un noklikšķiniet uz veidot. Ja nekad neesat izveidojis lietotni operētājsistēmai Android vai IOS, iespējams, jums būs jāizveido attīstības konts Google vai Apple.

Kad lietotne ir tālrunī, jums vispirms jāpārliecinās, vai ARKit vai ARCore nosaka iezemēto plakni. Tagad noklikšķiniet uz žurnāla pogas apakšējā kreisajā stūrī. Ejiet dažus soļus uz priekšu, un jūs redzēsit, ka gaiši zilā krāsā parādās “aprēķinātā izlīdzināšana”. Tagad vajadzētu parādīties UI pogām, un, ja jūsu datu bāzē tiek ielādēti ziņojumi, tie tiks ievietoti pasaulē.

Lai kaut kur atzīmētu jaunu GPS AR ziņojumu, dodieties uz vēlamo atrašanās vietu un noklikšķiniet uz ziņojuma ikonas ekrāna augšējā labajā stūrī. Ierakstiet vēlamo ziņojumu un noklikšķiniet uz piespraudes pogas!

Ieteicams: