Obsah:

Umístění objektů AR na souřadnice GPS v rozšířené realitě: 8 kroků (s obrázky)
Umístění objektů AR na souřadnice GPS v rozšířené realitě: 8 kroků (s obrázky)

Video: Umístění objektů AR na souřadnice GPS v rozšířené realitě: 8 kroků (s obrázky)

Video: Umístění objektů AR na souřadnice GPS v rozšířené realitě: 8 kroků (s obrázky)
Video: Adding Augmented Reality to your Typescript Project 2024, Červenec
Anonim
Umístění objektů AR na souřadnice GPS v rozšířené realitě
Umístění objektů AR na souřadnice GPS v rozšířené realitě

Tento instruktáž se chystá vytvořit mobilní aplikaci pro umístění objektů AR na souřadnice GPS pomocí ARkit a ARCore pomocí Unity3D. Provedu vás nastavením projektu, který jsem vytvořil pomocí Mapboxu, který nám umožňuje označovat zprávy na konkrétních místech GPS a zapisovat je do databáze GameSparks.

Veškerý software a projekty, které zde použijeme, jsou zdarma.

Stáhněte si Unity 3D zde, pokud jej již nemáte:

unity3d.com/

Krok 1: Překážky…

Překážky…
Překážky…

Nejde tedy o nejjednodušší aplikaci, kterou lze při současných omezeních pro mobilní GPS a mobilní kompas dělat.

Abych byl upřímný, objekty se objeví tam, kde mají být, asi 50% času. Výsledky tedy nejsou skvělé, ale stanou se přesnějšími, čím blíže se k objektům dostanete.

Ať tak či onak, myslím si, že lepší způsob, jak v tomto okamžiku využívat AR založené na GPS, by bylo použít mapu jako pokemon go a když se přiblížíte k nějakému objektu, kamera se otevře a uvidíte jen ten předmět přímo před vámi. V budoucnu bych chtěl udělat úplný návod na jednodušší implementaci, jako je tato.

Ať tak či onak, dříve jsem používal Mapbox a vím, že mají třídu převodu, která má funkce pro převod souřadnic GPS na světové souřadnice Unity. Myslel jsem si, že bych mohl jen předat nějaké GPS souřadnice a objevily by se tam, kde jsem je chtěl. Nefungovalo

Objekty se vůči sobě zobrazují správně, ale nikdy nebyly na správném místě. Provedl jsem tedy malý průzkum a zjistil jsem, že moje kamera Unity Camera musí být zarovnána se skutečným severem, aby se objekty zobrazily na správném místě.

Problém je v tom, že kompas v telefonu není nikdy zcela přesný.

Krok 2: Hloupý kompas

Hloupý kompas
Hloupý kompas
Hloupý kompas
Hloupý kompas

Hlavním problémem je, když umístíte předměty daleko od fotoaparátu, pokud je vaše představa telefonu o pravém severu vypnutá dokonce o několik stupňů, objekty v dálce se budou zdát velmi daleko.

Na tento podnik jsem téměř rezignoval, ale přítel mi řekl o tomto projektu GitHub:

github.com/mapbox/mapbox-ar-unity

Toto je pokus o AR ve „světovém měřítku“z Mapboxu, kde jsou objekty ukotveny k souřadnicím GPS, aby zážitky rozšířené reality mohly fungovat venku na dlouhé vzdálenosti místo jen uvnitř malé místnosti ve vašem domě.

Jejich projekt využívá delty polohy AR a polohy GPS k výpočtu úhlu, který je posunutím od kamery AR ke skutečnému severu. V zásadě tedy proveďte jedno načtení GPS, když uživatel spustí aplikaci, a nechte je jít po přímce a proveďte další čtení GPS. Pak pomocí těchto dvou bodů můžete zjistit, kterým směrem ta osoba šla (za předpokladu, že jejich kamera ukazuje ve směru, kterým kráčí). Zjistili, že to bylo přesnější než používání kompasu v telefonu.

Dalším problémem, který se snaží vyřešit, je drift s ARkitem. Sledování je v pořádku v malé místnosti, ale když se venku procházíte na dlouhé vzdálenosti, objekty AR skončí unášeny daleko od místa, kde by měly být.

Krok 3: Konečně řešení

Konečně řešení!
Konečně řešení!

Tento projekt Mapbox tedy nabídl způsob, jak získat spolehlivý směr obrácení vzhledem k pravému severu, takže nezbylo než objekty umístit na svět.

Nakonec jsem tento příklad trochu rozšířil, abych mohl označit textovou zprávu na konkrétním místě GPS a poté tyto informace zapsat do databáze GameSparks. To je to, co vám ukážu, jak používat.

Jediným problémem tohoto projektu je, že před jeho použitím musíte získat dobré zarovnání.

Zarovnáním mám na mysli to, že vzhledem k tomu, že Mapbox k výpočtu směru používá delty polohy, při prvním otevření aplikace a musíte se ujistit, že je detekována pozemní rovina a pak chvíli chodit v přímce, dokud není vypočítáno správné zarovnání.

V tomto smyslu je UX další překážkou, ale v vylepšeních projektu dávají příklad umístění kostek dolů před uživatele, aby prošli, aby zajistili dobré zarovnání.

Takže teď, když znáte omezení tohoto projektu, ukážu vám, jak ho používat, aby si kluci mohli hrát. Nakonec budete muset vytvořit účet mapbox a účet gamesparks, oba jsou zdarma. Hry jsem používal jen proto, abych mohl někde uložit souřadnice GPS, protože během testování budete aplikaci často restartovat a znovu sestavovat.

Také by to mělo fungovat jak s ARkitem, tak s ARcore, ale v tuto chvíli mám pouze iPhone, takže to bylo vše, co jsem mohl vyzkoušet.

Krok 4: Nechte aplikaci fungovat

Nechte aplikaci fungovat!
Nechte aplikaci fungovat!

Nejprve si nejprve stáhněte tento projekt z GitHub:

Uložte soubor na plochu a otevřete jej v Unity.

Přejděte na soubor, vytvořte nastavení a přepněte platformu na Android nebo IOS.

Nyní přejděte na Mapbox.com a vytvořte si účet, pokud ho ještě nemáte.

Popadněte klíč API a vraťte se zpět do Unity, klikněte na kartu Mapbox v horní části a klikněte na konfigurovat. Vložte tam klíč API.

Nyní si vytvořte účet na GameSparks.com a kliknutím na tlačítko vpravo nahoře vytvořte novou aplikaci.

Říkejte tomu jak chcete a zkopírujte si klíč API a tajný klíč aplikace. Vraťte se zpět do Unity a v horní části vyhledejte kartu GameSparks. Klikněte také na konfiguraci a vložte své přihlašovací údaje.

Krok 5: Konfigurace GameSparks

Konfigurujte GameSparks
Konfigurujte GameSparks

Nyní, než bude aplikace fungovat, musíme nakonfigurovat naši databázi.

GameSparks používá NoSQL, takže musíme nejprve vytvořit kolekci a přidat události, které naše aplikace používá ke čtení, zápisu a mazání ze serveru.

Nejprve vytvořte novou kolekci na webu GameSparks a pojmenujte ji, jak chcete.

Nyní musíme vytvořit 3 události.

První věc, kterou musí aplikace udělat, je zapsat objekt zprávy do databáze.

Zpráva má zeměpisnou šířku, délku a poté text zprávy.

Přejděte tedy do konfigurátoru a přidejte novou událost. Vytvořte krátký kód „SAVE_GEO_MESSAGE“.

Zadejte název a popis, co chcete.

Přidejte krátký kód pro 3 atributy:

"LAT" "LON"

"TEXT"

Nastavte každý datový typ na řetězec a nastavte výchozí hodnotu na 0. Nastavit výchozí typ agregace každého z nich na „použitý ve skriptu“.

Krok 6: Přidejte závěrečné události…

Přidejte závěrečné události…
Přidejte závěrečné události…

Aplikace také potřebuje načíst všechny zprávy z databáze a přečíst je do Unity při spuštění aplikace, abychom mohli umístit zprávy AR, které jsou uloženy v databázi.

Vytvořte další událost a pojmenujte ji „LOAD_MESSAGE“

Tato událost nepotřebuje žádné atributy. Znovu zadejte cokoli chcete pro název a popis.

Udělejte totéž pro jinou událost a pojmenujte ji „REMOVE_MESSAGES“

Ani to nepotřebuje žádné atributy.

Poslední věc, kterou musíme udělat, je přidat nějaký „cloudový kód“nebo kód na straně serveru, který se zavolá při spuštění každé události z naší aplikace.

Krok 7: Přidejte cloudový kód

V GameSparks přejděte do konfigurátoru a cloudového kódu.

Ke každé události, kterou jsme právě vytvořili, musíme přidat skript.

V události LOAD_MESSAGE přidejte tento kód a uložte jej:

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

var kurzor = messageData.find ();

var allMessages = ;

while (cursor.hasNext ()) {

var obj = cursor.next ();

odstranit (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // vrátí všechna data

V události REMOVE_MESSAGES přidejte tento kód:

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

messageData.remove ({});

Nakonec v události SAVE_MESSAGES přidejte 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: JSME HOTOVO

JSME HOTOVI!
JSME HOTOVI!

Tento projekt používá jedinečné ID vašeho zařízení k autentizaci na serveru GameSparks, takže se nyní můžete vrátit zpět do Unity a kliknout na Play a v konzole byste měli vidět „zařízení ověřeno…“

Nyní přejděte k souboru, nastavení sestavení a klikněte na sestavení. Pokud jste nikdy nevytvořili aplikaci pro Android nebo IOS, možná budete muset nastavit vývojářský účet u Googlu nebo Apple.

Jakmile je aplikace v telefonu, musíte se nejprve ujistit, že ARKit nebo ARCore detekuje pozemní rovinu. Nyní klikněte na tlačítko protokolu v levém dolním rohu. Udělejte pár kroků vpřed a uvidíte „vypočítané zarovnání“, které se objeví ve světle modré barvě. Nyní by se měla objevit tlačítka uživatelského rozhraní a pokud jsou do vaší databáze načteny nějaké zprávy, budou umístěny na světě.

Chcete -li někde označit novou zprávu GPS AR, přejděte na požadované místo a klikněte na ikonu zprávy v pravém horním rohu obrazovky. Zadejte jakoukoli zprávu, kterou chcete, a klikněte na tlačítko připnout!

Doporučuje: