Taula de continguts:

Col·locació d'objectes de RA a coordenades GPS en realitat augmentada: 8 passos (amb imatges)
Col·locació d'objectes de RA a coordenades GPS en realitat augmentada: 8 passos (amb imatges)

Vídeo: Col·locació d'objectes de RA a coordenades GPS en realitat augmentada: 8 passos (amb imatges)

Vídeo: Col·locació d'objectes de RA a coordenades GPS en realitat augmentada: 8 passos (amb imatges)
Vídeo: 183 Сводные MCQ по почтовому отделению. РУКОВОДСТВО ЧАСТЬ 1: GDS TO MTS/POSTMAN PAPER-1: РУКОВОДСТВО ДЛЯ ПОЧТОВОГО ОТДЕЛЕНИЯ, ЧАСТЬ 1, КЛАСС 2024, Juliol
Anonim
Col·locació d'objectes de RA a coordenades GPS en realitat augmentada
Col·locació d'objectes de RA a coordenades GPS en realitat augmentada

Aquesta instrucció us servirà per crear una aplicació mòbil per col·locar objectes AR a coordenades GPS amb ARkit i ARCore mitjançant Unity3D. Us guiaré per configurar un projecte que he fet amb Mapbox que ens permet etiquetar missatges en determinades ubicacions GPS i escriure’ls a una base de dades de GameSparks.

Tot el programari i els projectes que farem servir aquí són gratuïts.

Descarregueu Unity 3D aquí si encara no el teniu:

unity3d.com/

Pas 1: obstacles …

Obstacles …
Obstacles …

Per tant, aquesta no és l’aplicació més fàcil de fer amb les limitacions actuals del GPS mòbil i la brúixola mòbil.

Per ser honest, els objectes apareixen allà on se suposa que pot ser aproximadament el 50% del temps. Per tant, els resultats no són excel·lents, però sí que són més precisos quan més us acosteu als objectes.

Sigui com sigui, crec que una millor manera d’utilitzar el RA basat en GPS en aquest punt seria fer servir un mapa com fa Pokémon Go i quan s’acosta a un objecte s’obre la càmera i només es veu aquest objecte just al davant. En el futur, voldria fer un tutorial complet sobre una implementació més senzilla com aquesta.

Sigui com sigui, he utilitzat Mapbox abans i sé que tenen una classe de conversió que té funcions per convertir les coordenades GPS a coordenades mundials d'Unity. Vaig pensar que podia passar algunes coordenades GPS i apareixerien allà on les volgués. No va funcionar.

Els objectes es mostren correctament els uns amb els altres, però mai van estar al lloc adequat. Per tant, vaig fer algunes investigacions i vaig trobar que la meva càmera Unity necessitava estar alineada amb el nord veritable perquè els objectes apareguin al lloc adequat.

El problema és que la brúixola del telèfon mai és totalment precisa.

Pas 2: brúixola estúpida

Brúixola estúpida
Brúixola estúpida
Brúixola estúpida
Brúixola estúpida

El principal problema és quan col·loqueu objectes lluny de la càmera, si la idea del nord veritable dels vostres telèfons està desactivada fins i tot uns quants graus, els objectes a la distància apareixeran molt lluny.

Gairebé vaig renunciar a aquesta aventura, però un amic em va parlar d’aquest projecte de GitHub:

github.com/mapbox/mapbox-ar-unity

Es tracta d’un intent de fer AR a escala mundial des de Mapbox on els objectes s’ancoren a les coordenades GPS de manera que les experiències de realitat augmentada puguin funcionar fora a llargues distàncies en lloc de només dins d’una petita habitació de casa vostra.

El seu projecte utilitza deltes de posició AR i delta GPS Position per calcular un angle que és el desplaçament des de la càmera AR fins al nord real. Per tant, bàsicament feu una lectura de GPS quan l’usuari inicia l’aplicació i feu que camini en línia recta i feu una altra lectura de GPS. A continuació, amb aquests dos punts es pot dir en quina direcció caminava aquella persona (suposant que la seva càmera apunta en la direcció en què camina). Van trobar que això era més precís que utilitzar la brúixola al telèfon.

L’altre problema que intenten resoldre és la deriva amb ARkit. El seguiment està bé dins d’una habitació petita, però quan camineu fora de distància, els objectes AR acaben allunyant-se d’allà on se suposa.

Pas 3: Finalment, una solució

Finalment una solució!
Finalment una solució!

Així doncs, aquest projecte Mapbox va oferir una manera d’obtenir una direcció d’orientació fiable respecte al nord veritable, de manera que només quedava col·locar els objectes al món.

Vaig acabar ampliant una mica aquest exemple per poder etiquetar un missatge de text en una ubicació GPS determinada i després escriure aquesta informació a una base de dades de GameSparks. Això és el que us mostraré com utilitzar.

L’únic problema d’aquest projecte és que heu d’aconseguir una bona alineació abans que es pugui utilitzar.

El que vull dir amb alineació és que, ja que Mapbox utilitza els deltes de posició per calcular l’encapçalament, quan obriu l’aplicació per primer cop, heu d’assegurar-vos que es detecta un pla de terra i després caminar en línia recta durant un temps fins que es calculi l’alineació adequada.

En aquest sentit, UX és un altre obstacle, però en les millores del projecte donen un exemple de col·locar cubs davant de l'usuari per passar per assegurar una bona alineació.

Ara que ja coneixeu les limitacions d’aquest projecte, deixeu-me mostrar-vos com utilitzar-lo perquè els nois puguin jugar. En última instància, haureu de crear un compte de mapbox i un compte de gamesparks, tots dos gratuïts. He utilitzat gamesparks per poder desar les coordenades GPS en algun lloc, perquè durant les proves reiniciarà i reconstruireu l'aplicació amb força freqüència.

A més, això hauria de funcionar tant amb ARkit com amb ARcore, però en aquest moment només tinc un iPhone, de manera que era tot el que podia provar.

Pas 4: permet que l'aplicació funcioni

Permet que l'aplicació funcioni
Permet que l'aplicació funcioni

Primer de tot, primer heu de descarregar aquest projecte de GitHub:

Deseu el fitxer al vostre escriptori i obriu-lo a Unity.

Aneu al fitxer, creeu la configuració i canvieu la vostra plataforma a Android o IOS.

Ara aneu a Mapbox.com i creeu un compte si encara no en teniu cap.

Agafeu la vostra clau API i torneu a Unity, feu clic a la pestanya Mapbox a la part superior i feu clic a configurar. Enganxeu-hi la clau API.

Ara creeu un compte a GameSparks.com i feu clic al botó de la part superior dreta per crear una nova aplicació.

Truqueu-lo com vulgueu i copieu la clau de l'API i el secret de l'aplicació. Torneu a Unity i cerqueu la pestanya GameSparks a la part superior. Feu clic a configurar i enganxeu també les vostres credencials.

Pas 5: configureu GameSparks

Configureu GameSparks
Configureu GameSparks

Ara, abans que l’aplicació funcioni, hem de configurar la nostra base de dades.

GameSparks utilitza noSQL, de manera que primer hem de crear una col·lecció i afegir els esdeveniments que utilitza la nostra aplicació per llegir, escriure i suprimir del servidor.

Primer, creeu una nova col·lecció al lloc web de GameSparks i anomeneu-la com vulgueu.

Ara hem de crear 3 esdeveniments.

El primer que ha de fer l’aplicació és escriure un objecte de missatge a la base de dades.

Un missatge té una latitud, longitud i, a continuació, el text del missatge.

Aneu al configurador i afegiu un esdeveniment nou. Feu el codi curt "SAVE_GEO_MESSAGE".

Posa el que vulguis pel nom i la descripció.

Afegiu el codi curt de 3 atributs:

"LAT" "LON"

"TEXT"

Establiu cada tipus de dades a cadena i definiu el valor per defecte a 0. Feu que el tipus d'agregació predeterminat de cadascun sigui "utilitzat en script".

Pas 6: afegiu els esdeveniments finals …

Afegiu els esdeveniments finals …
Afegiu els esdeveniments finals …

L'aplicació també ha de carregar tots els missatges de la base de dades i llegir-los a Unity quan s'iniciï l'aplicació, de manera que puguem col·locar els missatges de RA que s'emmagatzemen a la base de dades.

Creeu un altre esdeveniment i anomeneu-lo "LOAD_MESSAGE"

Aquest esdeveniment no necessita cap atribut. Torneu a posar el que vulgueu pel nom i la descripció.

Feu el mateix per a un altre esdeveniment i anomeneu-lo "REMOVE_MESSAGES"

Tampoc no necessita cap atribut.

Ara l'últim que hem de fer és afegir algun "codi de núvol" o codi de servidor que es cridi quan s'inicia cada esdeveniment des de la nostra aplicació.

Pas 7: afegiu el codi del núvol

A GameSparks, aneu al configurador i al codi del núvol.

Hem d’afegir un guió a cada esdeveniment que acabem de fer.

A l'esdeveniment LOAD_MESSAGE, afegiu aquest codi i deseu-lo:

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

var cursor = messageData.find ();

var allMessages = ;

while (cursor.hasNext ()) {

var obj = cursor.next ();

delete (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("tots_Messatges", totsMessatges); // torna totes les dades

Afegiu aquest codi a l'esdeveniment REMOVE_MESSAGES:

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

messageData.remove ({});

Finalment, a l'esdeveniment SAVE_MESSAGES, afegiu-ho:

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": missatgeText,

};

geoMessageList.insert (currentMessage);

Pas 8: HEM FET

HEM ACABAT!
HEM ACABAT!

Aquest projecte utilitza l'identificador únic del dispositiu per autenticar-se amb el servidor GameSparks, de manera que ara podeu tornar a Unity i fer clic a Reprodueix i hauríeu de veure a la consola "dispositiu autenticat …"

Ara aneu al fitxer, configureu la configuració i feu clic a Compila. Si mai no heu creat cap aplicació per a Android o iOS, és possible que hàgiu de configurar un compte de desenvolupament amb Google o Apple.

Un cop l’aplicació estigui al telèfon, primer heu d’assegurar-vos que ARKit o ARCore detecten un pla terrestre. Ara feu clic al botó de registre a l'extrem inferior esquerre. Avanceu uns quants passos i veureu que "l'alineació computada" apareix de color blau clar. Ara haurien d'aparèixer els botons de la IU i, si es carreguen missatges a la base de dades, es col·locaran al món.

Per etiquetar un missatge AR nou GPS, en algun lloc, aneu a la ubicació que vulgueu i feu clic a la icona del missatge a la part superior dreta de la pantalla. Escriviu el missatge que vulgueu i feu clic al botó de fixar.

Recomanat: