Innholdsfortegnelse:

Plassering av AR -objekter på GPS -koordinater i Augmented Reality: 8 trinn (med bilder)
Plassering av AR -objekter på GPS -koordinater i Augmented Reality: 8 trinn (med bilder)

Video: Plassering av AR -objekter på GPS -koordinater i Augmented Reality: 8 trinn (med bilder)

Video: Plassering av AR -objekter på GPS -koordinater i Augmented Reality: 8 trinn (med bilder)
Video: 🔵 Blackview Fane 16 - DETALJERET TABLETANMELDELSE 2024, Juli
Anonim
Plassering av AR -objekter på GPS -koordinater i Augmented Reality
Plassering av AR -objekter på GPS -koordinater i Augmented Reality

Denne instruksen kommer til å gå over å lage en mobilapp for å plassere AR -objekter på GPS -koordinater med ARkit og ARCore ved hjelp av Unity3D. Jeg vil lede deg gjennom å sette opp et prosjekt jeg laget med Mapbox som lar oss merke meldinger på bestemte GPS -steder og skrive dem til en GameSparks -database.

All programvare og prosjekter vi vil bruke her er gratis.

Last ned Unity 3D her hvis du ikke allerede har det:

unity3d.com/

Trinn 1: Hurdles …

Hekk …
Hekk …

Så dette er ikke den enkleste appen å lage med de nåværende begrensningene for mobil GPS og mobilkompass.

For å være ærlig, viser objektene seg der de skal omtrent 50% av tiden. Så resultatene er ikke gode, men de blir mer nøyaktige jo nærmere du kommer objektene.

Uansett tror jeg en bedre måte å GPS -basert AR på dette tidspunktet ville være å bruke et kart som pokemon go gjør, og når du kommer nær et objekt, åpnes kameraet, og du ser bare det objektet rett foran deg. I fremtiden vil jeg gjerne gjøre en fullstendig veiledning om en mer enkel implementering som den.

Uansett har jeg brukt Mapbox før, og jeg vet at de har en konverteringsklasse som har funksjoner for å konvertere GPS -koordinater til Unity -verdenskoordinater. Jeg trodde jeg bare kunne sende inn noen GPS -koordinater, og de ville vises der jeg ville ha dem. Virket ikke.

Objektene vises korrekt i forhold til hverandre, men de var aldri på rett sted. Så jeg gjorde noen undersøkelser og fant ut at Unity -kameraet mitt måtte justeres med ekte nord for at objektene skulle vises på rett sted.

Problemet er at kompasset i telefonen din aldri er helt nøyaktig.

Trinn 2: Dumt kompass

Dumt kompass
Dumt kompass
Dumt kompass
Dumt kompass

Hovedproblemet er når du plasserer objekter langt fra kameraet, hvis telefonens ide om ekte nord er avstengt enda noen få grader, vil objekter i avstanden vises veldig langt unna.

Jeg ga nesten opp på denne satsingen, men en venn fortalte meg om dette GitHub -prosjektet:

github.com/mapbox/mapbox-ar-unity

Dette er et forsøk på å gjøre "verdensskala" AR fra Mapbox hvor objekter er forankret til GPS -koordinater, slik at Augmented Reality -opplevelser kan fungere ute over lange avstander i stedet for bare inne i et lite rom i huset ditt.

Prosjektet deres bruker AR Position delta og GPS Position delta for å beregne en vinkel som er forskyvningen fra AR kameraet til ekte nord. Så i utgangspunktet ta en GPS -lesing når brukeren starter appen, og få dem til å gå i en rett linje og ta en ny GPS -avlesning. Med disse to punktene kan du fortelle hvilken retning personen gikk (forutsatt at kameraet peker i retningen de går). De fant ut at dette var mer nøyaktig enn å bruke kompasset på telefonen.

Det andre problemet de prøver å løse er driften med ARkit. Sporing er ok inne i et lite rom, men når du går utenfor lange avstander, kommer AR -objekter til å drive langt fra der de skal være.

Trinn 3: Endelig en løsning

Endelig en løsning!
Endelig en løsning!

Så dette Mapbox -prosjektet tilbød en måte å få en pålitelig venderetning i forhold til ekte nord, så alt som var igjen var å bare plassere objektene i verden.

Jeg endte med å utvide dette eksemplet litt, slik at jeg kunne merke en tekstmelding på et bestemt GPS -sted og deretter skrive denne informasjonen til en GameSparks -database. Det er det jeg skal vise deg hvordan du bruker.

Det eneste problemet med dette prosjektet er at du må få en god justering før det kan brukes.

Det jeg mener med justering er at siden Mapbox bruker posisjonsdeler for å beregne kurs, når du først åpner appen og du må sørge for at et bakkeplan blir oppdaget og deretter gå i en rett linje en stund til en riktig justering er beregnet.

I denne forstand er UX en annen hindring, men i forbedringene av prosjektet gir de et eksempel på å plassere terninger ned foran brukeren å gå gjennom for å sikre en god justering.

Så nå som du kjenner begrensningene i dette prosjektet, la meg vise deg hvordan du bruker det, slik at gutta kan leke. Du må til slutt opprette en mapbox -konto og en spillparkskonto som begge er gratis. Jeg brukte spillparker bare for at jeg kunne lagre GPS -koordinater et sted, fordi du under testingen starter og bygger appen ganske ofte.

Dette burde også fungere med både ARkit og ARcore, men jeg har bare en iPhone for øyeblikket, så det var alt jeg kunne teste.

Trinn 4: La oss få appen til å fungere

La oss få appen til å fungere!
La oss få appen til å fungere!

Første ting først last ned dette prosjektet fra GitHub:

Lagre filen på skrivebordet og åpne den i Unity.

Gå til filen, bygg innstillinger, og bytt plattformen til enten Android eller IOS.

Gå nå til Mapbox.com og opprett en konto hvis du ikke allerede har en.

Ta tak i API -nøkkelen din, og gå tilbake til Unity, klikk på kategorien Kartboks øverst, og klikk på konfigurer. Lim inn API -nøkkelen din der.

Opprett nå en konto på GameSparks.com og klikk på knappen øverst til høyre for å opprette en ny app.

Kall det hva du vil, og kopier API -nøkkelen og apphemmeligheten. Gå tilbake til Unity og finn GameSparks -fanen øverst. Klikk på konfigurer og lim inn legitimasjonen din der også.

Trinn 5: Konfigurer GameSparks

Konfigurer GameSparks
Konfigurer GameSparks

Nå før appen fungerer, må vi konfigurere databasen vår.

GameSparks bruker noSQL, så vi må først lage en samling og legge til hendelser som appen vår bruker til å lese, skrive og slette fra serveren.

Lag først en ny samling på GameSparks nettsted og kall den hva du vil.

Nå må vi lage 3 arrangementer.

Det første appen trenger å gjøre er å skrive meldingsobjekt til databasen.

En melding har en breddegrad, lengdegrad og deretter teksten i meldingen.

Så gå til konfiguratoren og legg til en ny hendelse. Lag den korte koden "SAVE_GEO_MESSAGE".

Legg inn hva du vil for navnet og beskrivelsen.

Legg til den korte koden for tre attributter:

"LAT" "LON"

"TEKST"

Sett hver datatype til streng og sett standardverdien til 0. Gjør standardaggregasjonstypen for hver til "brukt i skript".

Trinn 6: Legg til de siste hendelsene …

Legg til de siste hendelsene …
Legg til de siste hendelsene …

Appen må også laste inn alle meldingene fra databasen og lese dem inn i Unity når appen starter, slik at vi kan plassere en AR -melding som er lagret i databasen.

Lag en ny hendelse og kall den "LOAD_MESSAGE"

Denne hendelsen trenger ingen attributter. Sett igjen hva du vil for navnet og beskrivelsen.

Gjør det samme for et annet arrangement, og kall det "REMOVE_MESSAGES"

Dette trenger ikke engang noen attributter heller.

Nå er det siste vi må gjøre å legge til en "skykode" eller koder på serversiden som blir kalt når hver hendelse startes fra appen vår.

Trinn 7: Legg til skykoden

I GameSparks går du til konfigurator og skykode.

Vi må legge til et skript til hver hendelse vi nettopp har laget.

Legg til denne koden i LOAD_MESSAGE -hendelsen og lagre den:

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

var markør = messageData.find ();

var allMessages = ;

while (cursor.hasNext ()) {

var obj = cursor.next ();

delete (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // returner alle data

I REMOVE_MESSAGES -hendelsen, legg til denne koden:

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

messageData.remove ({});

Til slutt i SAVE_MESSAGES -hendelsen, legg til dette:

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

var messageLat = Spark.getData (). LAT;

var messageLon = Spark.getData (). LON;

var messageText = Spark.getData (). TEKST;

var currentMessage = {

"messLat": messageLat,

"messLon": messageLon,

"messText": messageText,

};

geoMessageList.insert (currentMessage);

Trinn 8: VI ER GJORT

VI ER FERDIGE!
VI ER FERDIGE!

Dette prosjektet bruker enhetens unike ID for å godkjenne med GameSparks -serveren, slik at du nå kan gå tilbake til Unity og klikke på spill, og du bør se "enhet godkjent i enheten"

Gå nå til filen, bygg innstillinger, og klikk på bygge. Hvis du aldri har laget en app for Android eller IOS, må du kanskje sette opp en utviklingskonto hos enten Google eller Apple.

Når appen er på telefonen, må du først kontrollere at ARKit eller ARCore oppdager et bakkeplan. Klikk nå på loggknappen i nedre venstre hjørne. Gå noen få skritt fremover, og du vil se "beregnet justering" komme opp i lyseblått. Nå skal brukergrensesnittknappene vises, og hvis noen meldinger er lastet inn i databasen din, blir de plassert i verden.

For å merke en ny GPS AR -melding et sted, gå til stedet du vil at meldingen skal være, og klikk på meldingsikonet øverst til høyre på skjermen. Skriv inn hvilken melding du vil, og klikk på knappenålen!

Anbefalt: