Obsah:

Umiestnenie objektov AR na súradnice GPS v rozšírenej realite: 8 krokov (s obrázkami)
Umiestnenie objektov AR na súradnice GPS v rozšírenej realite: 8 krokov (s obrázkami)

Video: Umiestnenie objektov AR na súradnice GPS v rozšírenej realite: 8 krokov (s obrázkami)

Video: Umiestnenie objektov AR na súradnice GPS v rozšírenej realite: 8 krokov (s obrázkami)
Video: Квантовая запутанность: Объяснено НАСТОЛЬКО ПРОСТЫМИ СЛОВАМИ 2024, November
Anonim
Umiestňovanie objektov AR na súradnice GPS v rozšírenej realite
Umiestňovanie objektov AR na súradnice GPS v rozšírenej realite

Tento návod sa chystá vytvoriť mobilnú aplikáciu na umiestnenie objektov AR na súradnice GPS pomocou ARkit a ARCore pomocou Unity3D. Prevediem vás nastavením projektu, ktorý som vytvoril pomocou programu Mapbox, ktorý nám umožňuje označovať správy na konkrétnych miestach GPS a zapisovať ich do databázy GameSparks.

Všetok softvér a projekty, ktoré tu použijeme, sú bezplatné.

Unity 3D si stiahnite tu, ak ho ešte nemáte:

unity3d.com/

Krok 1: Prekážky…

Prekážky…
Prekážky…

S aktuálnymi obmedzeniami mobilného GPS a mobilného kompasu to teda nie je najľahšia aplikácia.

Aby som bol úprimný, objekty sa ukazujú tam, kde by mali byť asi 50% času. Výsledky teda nie sú skvelé, ale stanú sa presnejšími, čím bližšie sa k objektom dostanete.

V každom prípade si myslím, že lepšou cestou k AR založenému na GPS by bolo v tomto prípade použiť mapu, ako to robí pokemon go, a keď sa priblížite k objektu, kamera sa otvorí a pred sebou vidíte iba tento objekt. V budúcnosti by som chcel urobiť kompletný návod na jednoduchšiu implementáciu, ako je táto.

Tak či tak som už predtým používal Mapbox a viem, že majú triedu prevodu, ktorá má funkcie na prevod súradníc GPS na svetové súradnice Unity. Myslel som si, že môžem zadať iba niektoré súradnice GPS a objavia sa tam, kde som ich chcel. Nefungovalo

Objekty sa vzájomne zobrazujú správne, ale nikdy neboli na správnom mieste. Urobil som malý prieskum a zistil som, že moja kamera Unity Camera musí byť zarovnaná so skutočným severom, aby sa objekty objavili na správnom mieste.

Problém je v tom, že kompas vo vašom telefóne nie je nikdy úplne presný.

Krok 2: Hlúpe kompas

Hlúpe kompasy
Hlúpe kompasy
Hlúpe kompasy
Hlúpe kompasy

Hlavným problémom je, keď umiestnite objekty ďaleko od fotoaparátu, ak je predstava vášho telefónu o skutočnom severe ešte o niekoľko stupňov vypnutá, objekty v diaľke sa budú javiť veľmi ďaleko.

Od tohto podniku som takmer upustil, ale priateľ mi povedal o tomto projekte GitHub:

github.com/mapbox/mapbox-ar-unity

Toto je pokus urobiť AR „vo svetovom meradle“z Mapboxu, kde sú objekty ukotvené na súradniciach GPS, aby zážitky z rozšírenej reality mohli fungovať vonku na dlhé vzdialenosti, a nie iba v malej miestnosti vo vašom dome.

Ich projekt používa delty polohy AR a delty polohy GPS na výpočet uhla, ktorý je posunutý od kamery AR k pravému severu. V zásade teda urobte jedno čítanie GPS, keď používateľ spustí aplikáciu, a nechajte ich kráčať po priamke a urobte ďalšie čítanie GPS. Potom pomocou týchto dvoch bodov môžete zistiť, ktorým smerom tá osoba kráčala (za predpokladu, že ich kamera ukazuje v smere, ktorým kráča). Zistili, že je to presnejšie ako používanie kompasu v telefóne.

Ďalším problémom, ktorý sa pokúšajú vyriešiť, je drift s ARkitom. Sledovanie je v poriadku v malej miestnosti, ale keď sa vonku pohybujete na dlhé vzdialenosti, objekty AR sa unášajú ďaleko od miesta, kde by mali byť.

Krok 3: Konečne riešenie

Konečne riešenie!
Konečne riešenie!

Tento projekt Mapbox teda ponúkol spôsob, ako získať spoľahlivý smer obrátenia vzhľadom na skutočný sever, takže zostalo iba umiestniť objekty na svete.

Nakoniec som tento príklad trochu rozšíril, aby som mohol označiť textovú správu na konkrétnom mieste GPS a potom tieto informácie zapísať do databázy GameSparks. Práve to vám ukážem, ako ich používať.

Jediným problémom tohto projektu je, že skôr, ako ho budete môcť použiť, musíte ho dobre zarovnať.

Zarovnaním mám na mysli to, že keďže Mapbox na výpočet smeru používa delty polohy, pri prvom otvorení aplikácie a uistení sa, že je detekovaná zemská rovina, a potom chvíľu kráčajte v priamke, kým sa nevypočíta správne zarovnanie.

V tomto zmysle je UX ďalšou prekážkou, ale vo vylepšeniach projektu uvádzajú príklad umiestnenia kociek pred užívateľa, ktorým majú prejsť, aby sa zaistilo dobré zarovnanie.

Teraz, keď poznáte obmedzenia tohto projektu, dovoľte mi ukázať vám, ako ho používať, aby sa chlapci mohli hrať. Nakoniec si budete musieť vytvoriť účet mapbox a účet gamesparks, pričom oba budú bezplatné. Použil som gamespark, aby som mohol niekde uložiť súradnice GPS, pretože počas testovania budete aplikáciu často reštartovať a znova vytvárať.

Tiež by to malo fungovať s ARkit aj ARcore, ale momentálne mám iba iPhone, takže to bolo všetko, čo som mohol otestovať.

Krok 4: Nechajte aplikáciu fungovať

Nechajte aplikáciu fungovať!
Nechajte aplikáciu fungovať!

Najprv si najskôr stiahnite tento projekt z GitHub:

Uložte súbor na plochu a otvorte ho v Unity.

Prejdite na súbor, vytvorte nastavenia a prepnite platformu na Android alebo IOS.

Teraz choďte na Mapbox.com a vytvorte si účet, ak ho ešte nemáte.

Vezmite si kľúč API a vráťte sa do Unity, kliknite na kartu Mapbox v hornej časti a kliknite na konfigurovať. Vložte tam svoj kľúč API.

Teraz si vytvorte účet na GameSparks.com a kliknutím na tlačidlo vpravo hore vytvorte novú aplikáciu.

Nazvite to, čo chcete, a skopírujte si kľúč API a tajomstvo aplikácie. Vráťte sa do Unity a v hornej časti nájdite kartu GameSparks. Kliknite tiež na konfiguráciu a prilepte tam svoje prihlasovacie údaje.

Krok 5: Konfigurujte GameSparks

Konfigurujte GameSparks
Konfigurujte GameSparks

Teraz, než bude aplikácia fungovať, musíme nakonfigurovať našu databázu.

GameSparks používa NoSQL, takže musíme najskôr vytvoriť kolekciu a pridať udalosti, ktoré naša aplikácia používa na čítanie, zápis a odstraňovanie zo servera.

Najprv vytvorte novú kolekciu na webových stránkach GameSparks a nazvite ju, ako chcete.

Teraz musíme vytvoriť 3 udalosti.

Prvá vec, ktorú musí aplikácia urobiť, je zapísať objekt správy do databázy.

Správa má zemepisnú šírku, dĺžku a potom text správy.

Choďte teda do konfigurátora a pridajte novú udalosť. Vytvorte krátky kód „SAVE_GEO_MESSAGE“.

Do názvu a popisu zadajte čo chcete.

Pridajte krátky kód pre 3 atribúty:

"LAT" "LON"

"TEXT"

Nastavte každý typ údajov na reťazec a predvolenú hodnotu na 0. Nastavte predvolený typ agregácie každého z nich na „použitý v skripte“.

Krok 6: Pridajte záverečné udalosti …

Pridajte záverečné udalosti…
Pridajte záverečné udalosti…

Aplikácia tiež musí načítať všetky správy z databázy a prečítať ich do Unity pri spustení aplikácie, aby sme mohli umiestniť správy AR, ktoré sú uložené v databáze.

Vytvorte ďalšiu udalosť a nazvite ju „LOAD_MESSAGE“

Táto udalosť nepotrebuje žiadne atribúty. Do názvu a popisu znova zadajte, čo chcete.

To isté urobte pre inú udalosť a nazvite ju „REMOVE_MESSAGES“

Ani to nepotrebuje žiadne atribúty.

Posledná vec, ktorú musíme urobiť, je pridať nejaký „cloudový kód“alebo kód na strane servera, ktorý sa zavolá pri spustení každej udalosti z našej aplikácie.

Krok 7: Pridajte cloudový kód

V GameSparks prejdite na konfigurátor a cloudový kód.

Ku každej udalosti, ktorú sme práve urobili, musíme pridať skript.

V prípade LOAD_MESSAGE pridajte tento kód a uložte ho:

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

var kurzor = messageData.find ();

var allMessages = ;

while (cursor.hasNext ()) {

var obj = cursor.next ();

vymazať (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // vráti všetky údaje

V prípade REMOVE_MESSAGES pridajte tento kód:

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

messageData.remove ({});

Nakoniec v udalosti SAVE_MESSAGES pridajte toto:

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

Krok 8: SME HOTOVO

SME HOTOVÍ!
SME HOTOVÍ!

Tento projekt používa jedinečný identifikátor vášho zariadenia na autentifikáciu na serveri GameSparks, takže sa teraz môžete vrátiť späť do Unity a kliknúť na tlačidlo Prehrať a v konzole by ste mali vidieť „zariadenie overené …“

Teraz prejdite na súbor, nastavenia zostavy a kliknite na položku zostaviť. Ak ste nikdy nevytvorili aplikáciu pre Android alebo IOS, možno si budete musieť vytvoriť vývojársky účet na Googli alebo na Apple.

Keď je aplikácia v telefóne, musíte sa najskôr uistiť, že ARKit alebo ARCore detekuje pozemnú rovinu. Teraz kliknite na tlačidlo denníka v ľavom dolnom rohu. Prejdite pár krokov vpred a uvidíte, že „vypočítané zarovnanie“sa zobrazí vo svetlo modrej farbe. Teraz by sa mali objaviť tlačidlá používateľského rozhrania a ak sú do vašej databázy načítané akékoľvek správy, budú umiestnené na svete.

Ak chcete niekde označiť novú správu GPS AR, prejdite na požadované miesto a kliknite na ikonu správy v pravom hornom rohu obrazovky. Napíšte akúkoľvek požadovanú správu a kliknite na tlačidlo pripináčika!

Odporúča: