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, Srpanj
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 ARkitom i ARCoreom pomoću Unity3D. Provest ću vas kroz postavljanje projekta koji sam napravio koristeći Mapbox 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 besplatni su.

Ovdje preuzmite Unity 3D ako ga već nemate:

unity3d.com/

Korak 1: Prepreke …

Prepreke…
Prepreke…

Dakle, ovo nije najlakša aplikacija s trenutačnim 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 točniji što ste bliže 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 otvori i vidite samo taj objekt ispred sebe. U budućnosti bih želio napraviti potpuni vodič o jednostavnijoj implementaciji poput te.

U svakom slučaju ranije sam koristio Mapbox i znam da imaju klasu pretvorbe koja ima funkcije za pretvaranje GPS koordinata u koordinate svijeta Unity. 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 s pravim sjeverom kako bi se objekti prikazali na pravom mjestu.

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

Korak 2: Glupi kompas

Glupi kompas
Glupi kompas
Glupi kompas
Glupi kompas

Glavni je problem kada postavljate objekte daleko od fotoaparata, ako vam ideja o pravom sjeveru na vašim telefonima padne čak i za nekoliko stupnjeva, objekti u daljini pojavit će se vrlo daleko.

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

github.com/mapbox/mapbox-ar-unity

Ovo je pokušaj izrade AR -a svjetske razmjere iz Mapbox -a gdje su objekti usidreni na GPS koordinate, tako da iskustva proširene stvarnosti mogu djelovati 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 uzmu još jedno očitanje GPS -a. Zatim pomoću ove dvije točke možete reći u kojem je smjeru ta osoba hodala (pod pretpostavkom da kamera pokazuje u smjeru u kojem hodaju). Utvrdili 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 rješenje!
Konačno rješ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 ovaj primjer malo proširio 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.

Sad kad znate ograničenja ovog projekta, dopustite mi da vam pokažem kako ga koristiti kako bi se momci mogli igrati. U konačnici ćete morati stvoriti račun za kartični 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 tijekom testiranja često ponovno pokretati i obnavljati aplikaciju.

Također, ovo bi trebalo funkcionirati 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!

Prvo preuzmite ovaj projekt s GitHub -a:

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

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

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

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

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

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

Korak 5: Konfigurirajte GameSparks

Konfigurirajte GameSparks
Konfigurirajte GameSparks

Sada prije nego što će aplikacija raditi, 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 zemljopisnu širinu, dužinu, a zatim i tekst poruke.

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

Unesite ime i opis kako god želite.

Dodajte kratki kôd za 3 atributa:

"LAT" "LON"

"TEKST"

Svaku vrstu podataka postavite na niz, a zadanu vrijednost postavite na 0. Neka zadanu vrstu agregacije svake od njih postavite 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 kako bismo mogli postaviti AR poruke koje su pohranjene u bazi podataka.

Izradite drugi događaj i nazovite ga "LOAD_MESSAGE"

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

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

Ni ovo ne treba nikakve atribute.

Sada posljednja stvar koju moramo učiniti je dodati neki "cloud kod" ili kod poslužitelja koji se poziva kada se svaki događaj pokrene 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 kurzor = messageData.find ();

var allMessages = ;

while (kursor.ima slijedeće ()) {

var obj = kursor.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

MI SMO GOTOVI!
MI SMO GOTOVI!

Ovaj projekt koristi jedinstveni ID vašeg uređaja za autentifikaciju s GameSparks poslužiteljem pa 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 zapisnika 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 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 mjesta na kojem želite da poruka bude i kliknite ikonu poruke u gornjem desnom kutu zaslona. Upišite koju god poruku želite i kliknite gumb pribadače!

Preporučeni: