Innehållsförteckning:

Placera AR -objekt på GPS -koordinater i Augmented Reality: 8 steg (med bilder)
Placera AR -objekt på GPS -koordinater i Augmented Reality: 8 steg (med bilder)

Video: Placera AR -objekt på GPS -koordinater i Augmented Reality: 8 steg (med bilder)

Video: Placera AR -objekt på GPS -koordinater i Augmented Reality: 8 steg (med bilder)
Video: SlossTech Gary Vaynerchuk Fireside Chat | Alabama 2016 2024, Juli
Anonim
Placera AR -objekt på GPS -koordinater i Augmented Reality
Placera AR -objekt på GPS -koordinater i Augmented Reality

Denna instruerbara kommer att gå över att göra en mobilapp för att placera AR -objekt vid GPS -koordinater med ARkit och ARCore med Unity3D. Jag guidar dig genom att skapa ett projekt som jag gjorde med Mapbox som gör att vi kan märka meddelanden på särskilda GPS -platser och skriva dem till en GameSparks -databas.

All programvara och projekt vi kommer att använda här är gratis.

Ladda ner Unity 3D här om du inte redan har det:

unity3d.com/

Steg 1: Hinder …

Hinder …
Hinder …

Så det här är inte den enklaste appen att göra med de nuvarande begränsningarna för mobil GPS och mobil kompass.

För att vara ärlig visar objekten upp sig där de ska vara ungefär 50% av tiden. Så resultaten är inte bra, men de blir mer exakta ju närmare du kommer föremålen.

Hur som helst tror jag att ett bättre sätt att GPS -baserad AR vid denna tidpunkt skulle vara att använda en karta som pokemon go gör och när du kommer nära ett objekt öppnas kameran och du ser bara det objektet framför dig. I framtiden skulle jag vilja göra en fullständig handledning om en mer enkel implementering som den.

Hur som helst har jag använt Mapbox tidigare och jag vet att de har en konverteringsklass som har funktioner för att konvertera GPS -koordinater till Unity -världskoordinater. Jag trodde att jag bara kunde lämna in några GPS -koordinater och de skulle dyka upp där jag ville ha dem. Fungerade inte.

Objekten dyker upp korrekt i förhållande till varandra men de var aldrig på rätt plats. Så jag gjorde en del undersökningar och fann att min Unity -kamera måste anpassas till sant norr för att föremålen skulle dyka upp på rätt plats.

Problemet är att kompassen i din telefon aldrig är helt korrekt.

Steg 2: Dum kompass

Dum kompass
Dum kompass
Dum kompass
Dum kompass

Huvudproblemet är när du placerar föremål långt från kameran, om din telefons uppfattning om äkta norr är avstängd även några grader, kommer objekt på avstånd att visas väldigt långt borta.

Jag gav nästan upp på den här satsningen men en vän berättade om detta GitHub -projekt:

github.com/mapbox/mapbox-ar-unity

Detta är ett försök att göra "världsskala" AR från Mapbox där objekt är förankrade till GPS -koordinater så att Augmented Reality -upplevelser kan fungera utomhus över långa avstånd istället för bara inuti ett litet rum i ditt hus.

Deras projekt använder AR Position delta och GPS Position delta för att beräkna en vinkel som är förskjutningen från AR kameran till äkta norr. Så ta i princip en GPS -avläsning när användaren startar appen och låt dem gå i en rak linje och ta en annan GPS -avläsning. Sedan med dessa två punkter kan du se vilken riktning personen gick (förutsatt att kameran pekar i den riktning de går). De fann att detta var mer exakt än att använda kompassen på telefonen.

Den andra frågan de försöker lösa är driften med ARkit. Spårning är ok inne i ett litet rum, men när din utomhus går långa sträckor hamnar AR -objekt som driver långt från där de ska vara.

Steg 3: Äntligen en lösning

Äntligen en lösning!
Äntligen en lösning!

Så det här Mapbox -projektet erbjöd ett sätt att få en tillförlitlig riktning i riktning mot sant norr så det var bara att placera föremålen i världen.

Jag slutade med att utöka detta exempel lite så att jag kunde märka ett textmeddelande på en viss GPS -plats och sedan skriva den informationen till en GameSparks -databas. Det är vad jag ska visa dig hur du använder.

Det enda problemet med detta projekt är att du måste få en bra anpassning innan det kan användas.

Vad jag menar med inriktning är att eftersom Mapbox använder positionsdelar för att beräkna kurs, när du först öppnar appen och du måste se till att ett markplan upptäcks och sedan gå i en rak linje ett tag tills en korrekt inriktning har beräknats.

I denna mening är UX ett annat hinder, men i förbättringarna av projektet ger de ett exempel på att placera kuber framför användaren att gå igenom för att säkerställa en bra anpassning.

Så nu när du känner till begränsningarna för detta projekt, låt mig visa dig hur du använder det så att killar kan leka. Du kommer i slutändan att behöva skapa ett mapbox -konto och ett spelparks -konto som båda är gratis. Jag använde spelparks bara så att jag kunde spara GPS -koordinater någonstans eftersom du under testet kommer att starta om och bygga om appen ganska ofta.

Detta borde också fungera med både ARkit och ARcore men jag har bara en iPhone för tillfället så det var allt jag kunde testa.

Steg 4: Låt appen fungera

Låt oss få appen att fungera!
Låt oss få appen att fungera!

Först och främst ladda ner det här projektet från GitHub:

Spara filen på skrivbordet och öppna den i Unity.

Gå till filen, bygg inställningar och byt plattform till antingen Android eller IOS.

Gå nu till Mapbox.com och skapa ett konto om du inte redan har ett.

Ta din API -nyckel och gå tillbaka till Unity, klicka på fliken Mapbox högst upp och klicka på configure. Klistra in din API -nyckel där.

Skapa nu ett konto på GameSparks.com och klicka på knappen längst upp till höger för att skapa en ny app.

Kalla det vad du vill och kopiera din API -nyckel och apphemlighet. Gå tillbaka till Unity och hitta fliken GameSparks högst upp. Klicka på konfigurera och klistra in dina uppgifter även där.

Steg 5: Konfigurera GameSparks

Konfigurera GameSparks
Konfigurera GameSparks

Nu innan appen fungerar måste vi konfigurera vår databas.

GameSparks använder noSQL så vi måste först skapa en samling och lägga till de händelser som vår app använder för att läsa, skriva och ta bort från servern.

Skapa först en ny samling på GameSparks webbplats och kalla det vad du vill.

Nu måste vi skapa tre evenemang.

Det första appen behöver göra är att skriva meddelandeobjekt till databasen.

Ett meddelande har en latitud, longitud och sedan texten i meddelandet.

Så gå till konfiguratorn och lägg till en ny händelse. Ange den korta koden "SAVE_GEO_MESSAGE".

Lägg in vad du vill för namnet och beskrivningen.

Lägg till den korta koden för tre attribut:

"LAT" "LON"

"TEXT"

Ställ in varje datatyp på sträng och ställ in standardvärdet till 0. Gör standardtypen för aggregering för var och en till "används i skript".

Steg 6: Lägg till de sista händelserna …

Lägg till de sista evenemangen …
Lägg till de sista evenemangen …

Appen behöver också ladda alla meddelanden från databasen och läsa in dem i Unity när appen startar så att vi kan placera ett AR -meddelande som lagras i databasen.

Skapa en annan händelse och kalla den "LOAD_MESSAGE"

Denna händelse behöver inga attribut. Lägg igen vad du vill för namnet och beskrivningen.

Gör samma sak för en annan händelse och kalla det "REMOVE_MESSAGES"

Detta behöver inte ens några attribut heller.

Nu är det sista vi behöver göra att lägga till lite "molnkod" eller koder på serversidan som blir uppringd när varje händelse startas från vår app.

Steg 7: Lägg till molnkoden

I GameSparks går du till konfiguratorn och molnkoden.

Vi måste lägga till ett manus till varje händelse som vi just gjort.

Lägg till den här koden i LOAD_MESSAGE -händelsen och spara 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); // returnera all data

Lägg till denna kod i händelsen REMOVE_MESSAGES:

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

messageData.remove ({});

Slutligen i SAVE_MESSAGES -händelsen, lägg till detta:

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

Steg 8: VI ÄR KLARA

VI ÄR KLARA!
VI ÄR KLARA!

Detta projekt använder enhetens unika ID för att autentisera med GameSparks -servern så att du nu kan gå tillbaka till Unity och klicka på play, och du bör se på enheten "enhet autentiserad …"

Gå nu till filen, bygg inställningar och klicka på bygg. Om du aldrig har gjort en app för Android eller IOS kan du behöva skapa ett utvecklingskonto hos antingen Google eller Apple.

När appen finns på din telefon måste du först se till att ARKit eller ARCore upptäcker ett markplan. Klicka nu på loggknappen i nedre vänstra hörnet. Gå några steg framåt så ser du "beräknad inriktning" komma upp i ljusblått. Nu ska UI -knapparna visas och om några meddelanden laddas i din databas kommer de att placeras i världen.

För att märka ett nytt GPS AR -meddelande någonstans gå till den plats du vill att meddelandet ska vara och klicka på meddelandeikonen längst upp till höger på skärmen. Skriv in vilket meddelande du vill och klicka på knappen knappen!

Rekommenderad: