Sisukord:

AR -objektide paigutamine GPS -koordinaatidele liitreaalsuses: 8 sammu (piltidega)
AR -objektide paigutamine GPS -koordinaatidele liitreaalsuses: 8 sammu (piltidega)

Video: AR -objektide paigutamine GPS -koordinaatidele liitreaalsuses: 8 sammu (piltidega)

Video: AR -objektide paigutamine GPS -koordinaatidele liitreaalsuses: 8 sammu (piltidega)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
AR -objektide paigutamine liitreaalsuse GPS -koordinaatidele
AR -objektide paigutamine liitreaalsuse GPS -koordinaatidele

See juhend annab ülevaate mobiilirakenduse loomisest AR -objektide paigutamiseks GPS -i koordinaatidele ARkit ja ARCore abil, kasutades Unity3D -d. Ma juhendan teid Mapboxi abil tehtud projekti seadistamisel, mis võimaldab meil sõnumeid teatud GPS -asukohtades sildistada ja GameSparksi andmebaasi kirjutada.

Kõik tarkvara ja projektid, mida me siin kasutame, on tasuta.

Lae Unity 3D alla siit, kui sul seda veel pole:

unity3d.com/

Samm: takistused…

Tõkked…
Tõkked…

Seega pole see mobiilse GPS -i ja mobiilse kompassi praeguste piirangutega kõige lihtsam rakendus.

Ausalt öeldes ilmuvad objektid umbes 50% ajast sinna, kus nad peaksid olema. Nii et tulemused ei ole suurepärased, kuid seda täpsemad, mida lähemale objektidele jõuate.

Mõlemal juhul arvan, et praegusel hetkel oleks parem viis GPS -põhise AR -i jaoks kasutada kaarti nagu pokemon go teeb. Kui jõuate objekti lähedale, avaneb kaamera ja näete ainult seda objekti teie ees. Tulevikus tahaksin teha täieliku õpetuse sellise lihtsama rakendamise kohta.

Mõlemal juhul olen varem Mapboxi kasutanud ja tean, et neil on teisendusklass, millel on funktsioonid GPS -koordinaatide teisendamiseks Unity maailma koordinaatideks. Arvasin, et võin lihtsalt mõne GPS -koordinaadi sisestada ja need ilmuvad sinna, kuhu ma tahan. Ei töötanud.

Objektid kuvatakse üksteise suhtes õigesti, kuid need ei olnud kunagi õiges kohas. Nii et ma tegin mõningaid uuringuid ja leidsin, et minu Unity kaamera peab olema joondatud tõelise põhjaga, et objektid saaksid õigesse kohta ilmuda.

Probleem on selles, et teie telefoni kompass pole kunagi täiesti täpne.

2. samm: rumal kompass

Loll kompass
Loll kompass
Loll kompass
Loll kompass

Põhiprobleem seisneb selles, et kui asetate objekte kaamerast kaugele, kui teie telefonide ettekujutus tõelisest põhjast on isegi mõne kraadi kaugusel, paistavad kauguses olevad objektid väga kaugele.

Ma peaaegu loobusin sellest ettevõtmisest, kuid sõber rääkis mulle sellest GitHubi projektist:

github.com/mapbox/mapbox-ar-unity

See on katse teha Mapboxist "maailmatasemel" AR -i, kus objektid on ankurdatud GPS -koordinaatidele, nii et liitreaalsuse kogemused saaksid toimida väljaspool pikki vahemaid väljaspool teie maja väikest ruumi.

Nende projekt kasutab AR -positsiooni deltasid ja GPS -positsiooni deltasid, et arvutada nurk, mis on nihkes AR -kaamerast tõelise põhja poole. Nii et põhimõtteliselt võtke üks GPS -lugemine, kui kasutaja rakenduse käivitab, ja laske neil sirgjooneliselt kõndida ning võtta veel üks GPS -i näit. Seejärel saate nende kahe punktiga öelda, millises suunas see inimene kõndis (eeldades, et tema kaamera näitab suunda, kus ta kõnnib). Nad leidsid, et see oli täpsem kui kompassi kasutamine telefonis.

Teine probleem, mida nad püüavad lahendada, on triivimine ARkiti abil. Jälgimine on väikeses ruumis korras, kuid kui teie väljas kõnnite pikki vahemaid, triivivad AR -objektid kaugele sellest, kus nad peaksid olema.

Samm: lõpuks lahendus

Lõpuks lahendus!
Lõpuks lahendus!

Nii pakkus see Mapboxi projekt viisi, kuidas saada usaldusväärse näo suund tõelise põhja poole, nii et kõik, mis jäi, oli lihtsalt objektide paigutamine maailma.

Lõpuks laiendasin seda näidet veidi, et saaksin teatud GPS -asukohas tekstisõnumi sildistada ja seejärel selle teabe GameSparksi andmebaasi kirjutada. Seda näitan teile, kuidas seda kasutada.

Selle projekti ainus probleem on see, et enne selle kasutamist tuleb teil hästi joondada.

Joondamise all pean silmas seda, et kuna Mapbox kasutab positsiooni deltasid pealkirja arvutamiseks, peate rakenduse esmakordsel avamisel veenduma, et tuvastatakse maapind ja seejärel kõndige mõnda aega sirgjooneliselt, kuni arvutatakse õige joondus.

Selles mõttes on UX veel üks takistus, kuid projekti täiustustes annavad nad näite kuubikute paigutamisest kasutaja ette, et kõndida, et tagada hea joondamine.

Nüüd, kui teate selle projekti piiranguid, lubage mul näidata teile, kuidas seda kasutada, et poisid saaksid ringi mängida. Lõppkokkuvõttes peate looma kaardikasti konto ja mängupargi konto, mis mõlemad on tasuta. Ma kasutasin mänguparke lihtsalt selleks, et saaksin GPS -koordinaadid kuhugi salvestada, sest testimise ajal taaskäivitate ja ehitate rakenduse üsna sageli.

Samuti peaks see töötama nii ARkiti kui ka ARcore'iga, kuid mul on praegu ainult iPhone, nii et see oli kõik, mida ma sain testida.

Samm: laske rakendusel tööle saada

Lase rakendusel tööle!
Lase rakendusel tööle!

Kõigepealt laadige see projekt GitHubist alla:

Salvestage fail töölauale ja avage see Unity'is.

Minge faili, looge seaded ja lülitage oma platvorm Androidile või IOS -ile.

Nüüd minge saidile Mapbox.com ja looge konto, kui teil seda veel pole.

Haarake oma API -võti ja minge tagasi Unity'i, klõpsake ülaosas vahekaarti Mapbox ja klõpsake käsku Seadista. Kleepige sinna oma API võti.

Nüüd looge konto saidil GameSparks.com ja klõpsake uue rakenduse loomiseks paremas ülanurgas olevat nuppu.

Helistage sellele, kuidas soovite, ja kopeerige oma API -võti ja rakenduse saladus. Minge tagasi Unity'i ja leidke ülaosas vahekaart GameSparks. Klõpsake seadistage ja kleepige oma mandaat ka sinna.

Samm: seadistage GameSparks

Seadistage GameSparks
Seadistage GameSparks

Nüüd, enne kui rakendus töötab, peame oma andmebaasi seadistama.

GameSparks kasutab noSQL -i, nii et peame esmalt looma kogu ja lisama sündmused, mida meie rakendus kasutab serverist lugemiseks, kirjutamiseks ja kustutamiseks.

Esmalt looge GameSparksi veebisaidil uus kollektsioon ja nimetage seda kuidas soovite.

Nüüd peame looma 3 sündmust.

Esimene asi, mida rakendus peab tegema, on kirjutada andmebaasi sõnumi objekt.

Sõnumil on laius- ja pikkuskraadid ning seejärel sõnumi tekst.

Nii et minge konfiguraatorisse ja lisage uus sündmus. Tehke lühikood "SAVE_GEO_MESSAGE".

Sisestage nimi ja kirjeldus, mida soovite.

Lisage kolme atribuudi lühikood:

"LAT" "LON"

"TEXT"

Määrake iga andmetüübiks string ja määrake vaikeväärtuseks 0. Määrake iga üksuse vaiketüübiks „skriptis kasutatud”.

Samm: lisage viimased sündmused…

Lisage viimased sündmused…
Lisage viimased sündmused…

Samuti peab rakendus laadima kõik sõnumid andmebaasist ja lugema need rakenduse käivitamisel Unity'i, et saaksime andmebaasi salvestatud AR -sõnumid paigutada.

Looge teine sündmus ja nimetage see "LOAD_MESSAGE"

See sündmus ei vaja atribuute. Jällegi pange nime ja kirjelduse juurde kõik, mida soovite.

Tehke sama teise sündmuse puhul ja nimetage see "REMOVE_MESSAGES"

See ei vaja isegi atribuute.

Viimane asi, mida peame tegema, on lisada mõni "pilvkood" või serveripoolne kood, millele helistatakse iga sündmuse käivitamisel meie rakendusest.

Samm: lisage pilvekood

Mänguparkides minge konfiguraatorisse ja pilvekoodi.

Peame igale äsja tehtud sündmusele stsenaariumi lisama.

Lisage sündmusele LOAD_MESSAGE see kood ja salvestage see:

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

var kursor = messageData.find ();

var allMessages = ;

while (cursor.hasNext ()) {

var obj = kursor.next ();

kustuta (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // tagastab kõik andmed

Lisage sündmusele REMOVE_MESSAGES see kood:

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

messageData.remove ({});

Lõpuks lisage sündmusele SAVE_MESSAGES see:

var geoMessageList = Säde.runtimeCollection ("GeoMessage");

var messageLat = Spark.getData (). LAT;

var messageLon = Säde.getData (). LON;

var messageText = Spark.getData (). TEXT;

var currentMessage = {

"messLat": messageLat,

"messLon": messageLon,

"messText": messageText,

};

geoMessageList.insert (currentMessage);

8. samm: OLEME VALMIS

ME SAIME VALMIS!
ME SAIME VALMIS!

See projekt kasutab teie seadme unikaalset ID -d, et autentida GameSparksi serveriga, nii et saate nüüd minna tagasi Unity'i ja klõpsata esitusel ning konsoolis peaksite nägema "seade autentitud …"

Nüüd minge faili, looge seaded ja klõpsake nuppu Ehita. Kui te pole kunagi Androidi või IOS -i jaoks rakendust loonud, peate võib -olla seadistama arenduskonto kas Google'is või Apple'is.

Kui rakendus on teie telefonis, peate esmalt veenduma, et ARKit või ARCore tuvastab maapinna. Nüüd klõpsake vasakus alanurgas logi nuppu. Kõndige paar sammu edasi ja näete heledas sinist värvi "arvutatud joondus". Nüüd peaksid ilmuma kasutajaliidese nupud ja kui teie andmebaasi laaditakse sõnumeid, paigutatakse need maailma.

Uue GPS -i AR -teate sildistamiseks kõndige soovitud kohta ja klõpsake ekraani paremas ülanurgas sõnumiikoonil. Sisestage soovitud sõnum ja klõpsake kinnitusnupul!

Soovitan: