Sadržaj:

Postavljanje AR objekata na GPS koordinate u proširenoj stvarnosti: 8 koraka (sa slikama)
Postavljanje AR objekata na GPS koordinate u proširenoj stvarnosti: 8 koraka (sa slikama)

Video: Postavljanje AR objekata na GPS koordinate u proširenoj stvarnosti: 8 koraka (sa slikama)

Video: Postavljanje AR objekata na GPS koordinate u proširenoj stvarnosti: 8 koraka (sa slikama)
Video: Extract GPS location in Arduino with NEO-6m or NEO-7M module 2024, Juli
Anonim
Postavljanje AR objekata na GPS koordinate u proširenoj stvarnosti
Postavljanje AR objekata na GPS koordinate u proširenoj stvarnosti

Ova instrukcija će preći na izradu mobilne aplikacije za postavljanje AR objekata na GPS koordinate s ARkit -om i ARCore -om koristeći Unity3D. Provest ću vas kroz postavljanje projekta koji sam napravio pomoću Mapbox -a koji nam omogućuje označavanje poruka na određenim GPS lokacijama i njihovo pisanje u bazu podataka GameSparks.

Sav softver i projekti koje ćemo ovdje koristiti su besplatni.

Preuzmite Unity 3D ovdje ako ga već nemate:

unity3d.com/

Korak 1: Prepreke …

Prepreke…
Prepreke…

Dakle, ovo nije najlakša aplikacija s trenutnim ograničenjima mobilnog GPS -a i mobilnog kompasa.

Iskreno, objekti se pojavljuju tamo gdje bi trebali biti otprilike 50% vremena. Dakle, rezultati nisu sjajni, ali postaju sve precizniji što se više približavate objektima.

U svakom slučaju, mislim da bi bolji način za AR zasnovan na GPS -u u ovom trenutku bio korištenje karte kao što to radi pokemon go, a kad se približite objektu, kamera se otvara i vidite samo taj objekt ispred sebe. U budućnosti bih želio napraviti potpuni vodič o jednostavnijoj implementaciji poput ove.

U svakom slučaju, ranije sam koristio Mapbox i znam da imaju klasu konverzije koja ima funkcije za pretvaranje GPS koordinata u Unity koordinate svijeta. Mislio sam da mogu samo unijeti neke GPS koordinate i one će se pojaviti tamo gdje ih želim. Nije uspjelo.

Objekti se međusobno ispravno prikazuju, ali nikada nisu bili na pravom mjestu. Pa sam malo istražio i otkrio da je moja Unity kamera potrebno poravnati sa pravim sjeverom kako bi se objekti prikazali na pravom mjestu.

Problem je u tome što kompas u vašem telefonu nikada nije potpuno tačan.

Korak 2: Glupi kompas

Glupi kompas
Glupi kompas
Glupi kompas
Glupi kompas

Glavni problem je kada postavljate objekte daleko od kamere, ako vam predodžba o pravom sjeveru na telefonima padne čak i za nekoliko stupnjeva, objekti u daljini će se pojaviti vrlo daleko.

Skoro sam odustao od ovog poduhvata, ali prijatelj mi je rekao za ovaj GitHub projekt:

github.com/mapbox/mapbox-ar-unity

Ovo je pokušaj izvođenja AR -a "svjetske razmjere" iz Mapbox -a gdje su objekti usidreni na GPS koordinate tako da iskustva proširene stvarnosti mogu raditi vani na velikim udaljenostima umjesto samo u maloj prostoriji u vašoj kući.

Njihov projekt koristi AR pozicije delte i GPS GPS delte za izračunavanje kuta koji je pomak od AR kamere prema pravom sjeveru. Dakle, u osnovi uzmite jedno očitanje GPS -a kada korisnik pokrene aplikaciju i neka hodaju ravnom linijom i ponovo čitaju GPS. Zatim pomoću ove dvije točke možete odrediti u kojem je smjeru ta osoba hodala (pod pretpostavkom da je kamera usmjerena u smjeru u kojem hodaju). Otkrili su da je to točnije od korištenja kompasa na telefonu.

Drugi problem koji pokušavaju riješiti je drift s ARkitom. Praćenje je u redu u maloj prostoriji, ali kad van hodate na velike udaljenosti AR objekti završavaju daleko od mjesta na kojem bi trebali biti.

Korak 3: Konačno rješenje

Konačno rešenje!
Konačno rešenje!

Stoga je ovaj Mapbox projekt ponudio način da se dobije pouzdan smjer okretanja u odnosu na pravi sjever, pa je preostalo samo postaviti objekte u svijet.

Na kraju sam malo proširio ovaj primjer kako bih mogao označiti tekstualnu poruku na određenoj GPS lokaciji, a zatim zapisati te podatke u bazu podataka GameSparksa. To ću vam pokazati kako se koristi.

Jedini problem s ovim projektom je taj što morate dobro uskladiti da biste ga mogli koristiti.

Pod poravnanjem želim reći da budući da Mapbox koristi delte položaja za izračunavanje zaglavlja, kada prvi put otvorite aplikaciju i morate se pobrinuti da se otkrije zemljana ravnina, a zatim neko vrijeme hodati ravno, dok se ne izračuna pravilno poravnanje.

U tom smislu UX je još jedna prepreka, ali u poboljšanjima projekta daju primjer postavljanja kockica ispred korisnika kroz koje se prolazi kako bi se osiguralo dobro poravnanje.

Sada kada znate ograničenja ovog projekta, dopustite mi da vam pokažem kako ga koristiti kako bi se momci mogli igrati. Na kraju ćete morati stvoriti račun za kartički okvir i račun za parke igara, a oba su besplatna. Koristio sam igre za igre samo da bih negdje mogao spremiti GPS koordinate jer ćete se tijekom testiranja često ponovno pokretati i obnavljati aplikaciju.

Također, ovo bi trebalo raditi i s ARkitom i s ARcore -om, ali trenutno imam samo iPhone, tako da je to bilo sve što sam mogao testirati.

Korak 4: Omogućimo da aplikacija radi

Omogućimo da aplikacija radi!
Omogućimo da aplikacija radi!

Najprije preuzmite ovaj projekt s GitHub -a:

Spremite datoteku na radnu površinu i otvorite je u programu Unity.

Idite na datoteku, napravite postavke i prebacite svoju platformu na Android ili IOS.

Sada idite na Mapbox.com i kreirajte račun ako ga već nemate.

Uzmite svoj API ključ i vratite se na Unity, kliknite karticu Mapbox pri vrhu i kliknite konfiguriraj. Tamo zalijepite svoj API ključ.

Sada stvorite račun na GameSparks.com i kliknite gumb u gornjem desnom kutu za kreiranje nove aplikacije.

Nazovite to kako god želite i kopirajte svoj API ključ i tajnu aplikacije. Vratite se na Unity i pronađite karticu GameSparks pri vrhu. Kliknite na Konfiguracija i zalijepite svoje vjerodajnice tamo.

Korak 5: Konfigurirajte GameSparks

Konfigurirajte GameSparks
Konfigurirajte GameSparks

Prije nego što aplikacija počne funkcionirati, moramo konfigurirati našu bazu podataka.

GameSparks koristi noSQL pa prvo moramo stvoriti zbirku i dodati događaje koje naša aplikacija koristi za čitanje, pisanje i brisanje s poslužitelja.

Prvo stvorite novu kolekciju na web stranici GameSparks i nazovite je kako god želite.

Sada moramo stvoriti 3 događaja.

Prva stvar koju aplikacija mora učiniti je zapisati objekt poruke u bazu podataka.

Poruka ima geografsku širinu, dužinu, a zatim i tekst poruke.

Zato idite na konfigurator i dodajte novi događaj. Napravite kratki kôd "SAVE_GEO_MESSAGE".

Unesite ime i opis šta god želite.

Dodajte kratki kôd za 3 atributa:

"LAT" "LON"

"TEKST"

Postavite svaki tip podataka na niz i postavite zadanu vrijednost na 0. Postavite zadanu vrstu agregacije svakog na "koristi se u skripti".

Korak 6: Dodajte završne događaje…

Dodajte završne događaje…
Dodajte završne događaje…

Aplikacija također mora učitati sve poruke iz baze podataka i pročitati ih u Unityju kada se aplikacija pokrene, tako da možemo postaviti AR poruke koje su pohranjene u bazi podataka.

Kreirajte drugi događaj i nazovite ga "LOAD_MESSAGE"

Ovaj događaj ne treba nikakve atribute. Opet stavite sve što želite za ime i opis.

Učinite isto za drugi događaj i nazovite ga "REMOVE_MESSAGES"

Ni ovo ne zahtijeva nikakve atribute.

Sada posljednja stvar koju trebamo učiniti je dodati neki "cloud kod" ili kod poslužitelja koji se poziva pri pokretanju svakog događaja iz naše aplikacije.

Korak 7: Dodajte kôd oblaka

U GameSparksu idite na konfigurator i kod u oblaku.

Moramo dodati skriptu svakom događaju koji smo upravo napravili.

U događaj LOAD_MESSAGE dodajte ovaj kôd i spremite ga:

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

var kursor = messageData.find ();

var allMessages = ;

while (kursor.hasNext ()) {

var obj = cursor.next ();

delete (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // vraća sve podatke

U događaj REMOVE_MESSAGES dodajte ovaj kôd:

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

messageData.remove ({});

Na kraju u događaju SAVE_MESSAGES dodajte ovo:

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

Korak 8: GOTOVI SMO

GOTOVI SMO!
GOTOVI SMO!

Ovaj projekt koristi jedinstveni ID vašeg uređaja za autentifikaciju s GameSparks poslužiteljem, tako da se sada možete vratiti na Unity i kliknuti play, a na konzoli biste trebali vidjeti "uređaj je autentificiran …"

Sada idite na datoteku, postavite postavke i kliknite na izgradnju. Ako nikada niste napravili aplikaciju za Android ili IOS, možda ćete morati postaviti razvojni račun s Googleom ili Appleom.

Nakon što je aplikacija na vašem telefonu, morate se prvo uvjeriti da ARKit ili ARCore detektira ravninu tla. Sada kliknite gumb za logovanje u donjem lijevom kutu. Idite nekoliko koraka naprijed i vidjet ćete da se "izračunato poravnanje" pojavljuje svijetlo plavo. Sada bi se trebali pojaviti gumbi korisničkog sučelja i ako se bilo koja poruka učita u vašu bazu podataka, bit će postavljene u svijet.

Da biste negdje označili novu GPS AR poruku, idite do lokacije na kojoj želite da poruka bude i kliknite ikonu poruke u gornjem desnom kutu zaslona. Upišite koju god poruku želite i kliknite na pin dugme!

Preporučuje se: