Taula de continguts:
- Pas 1: obstacles …
- Pas 2: brúixola estúpida
- Pas 3: Finalment, una solució
- Pas 4: permet que l'aplicació funcioni
- Pas 5: configureu GameSparks
- Pas 6: afegiu els esdeveniments finals …
- Pas 7: afegiu el codi del núvol
- Pas 8: HEM FET
Vídeo: Col·locació d'objectes de RA a coordenades GPS en realitat augmentada: 8 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
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 …
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
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ó
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
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
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 …
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
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:
Consells sobre tècnica i col·locació de micròfons per al vocalista: 5 passos
Consells sobre tècnica i ubicació del micròfon per al vocalista: per als inexperts, utilitzar un micròfon pot semblar inicialment una operació bastant fàcil. Simplement parleu o canteu al bit rodó de la part superior i un so molt clar i equilibrat s’emetrà des dels altaveus per a una àmplia aclamació de l’a
Arduino Glass: auriculars de realitat augmentada de codi obert: 9 passos (amb imatges)
Arduino Glass: auriculars de realitat augmentada de codi obert: Alguna vegada us heu plantejat aconseguir auriculars de realitat augmentada? També us va sorprendre la possibilitat de la realitat augmentada i vau mirar el preu amb el cor trencat? Sí, jo també! Però això no em va aturar aquí. Vaig construir el meu coratge i, en canvi
Ulleres de realitat augmentada intel·ligents de bricolatge amb Arduino: 7 passos
Ulleres de realitat augmentada intel·ligents de bricolatge que fan servir Arduino: a mesura que la tecnologia creix ràpidament i s’integra a tots els aspectes de la vida de les persones, els dissenyadors i desenvolupadors van intentar proporcionar una experiència de tecnologia més agradable a les persones. Una de les tendències tecnològiques que té com a objectiu facilitar la vida és el desgast
CityCoaster: creeu la vostra pròpia posadora de realitat augmentada per al vostre negoci (TfCD): 6 passos (amb imatges)
CityCoaster: crea la teva pròpia posadora de realitat augmentada per al teu negoci (TfCD): una ciutat sota la teva tassa. CityCoaster és un projecte que neix pensant en un producte per a l'aeroport de Rotterdam l'Haia, que pugui expressar la identitat de la ciutat, entretenint els clients de la zona de saló amb realitat augmentada. En un entorn com
Aparador de producte de realitat augmentada (TfCD): 11 passos (amb imatges)
Aparador de productes de realitat augmentada (TfCD): la venda de productes durant el vol és cada vegada més popular avui en dia. No obstant això, a l'avió la primera i gairebé única informació que veu el passatger (possible comprador) és un fulletó imprès. Aquest instructiu mostrarà una manera d’innovar en airp