Rozšířená realita (AR) je inovativní technologie, která umožňuje zobrazit rozšířený pohled na reálný svět kolem vás. Dobrým příkladem může být zobrazování výsledků zápasů vložených vedle živého fotbalového dění ze hřiště. Vložení se provádí prostřednictvím aplikace rozšířené reality, která vykresluje živý obraz z kamery a rozšiřuje virtuální objekt na obraz reálného světa a zobrazuje jej na obrazovce náhledu kamery pomocí algoritmů rozpoznávání založených na vidění.
V tomto blogu vysvětlíme proces vývoje ukázkové aplikace AR pomocí Qualcomm Vuforia SDK, jedné z nejlepších dostupných SDK pro vytváření aplikací AR založených na vidění pro mobilní zařízení a tablety. V současné době je k dispozici pro systémy Android, iOS a Unity. SDK se stará o složitosti na nejnižší úrovni, díky čemuž se vývojáři mohou plně soustředit na aplikaci.
Koncepční přehled
Začneme přehledem klíčových pojmů používaných v oblasti AR. Je důležité jim porozumět před zahájením vývoje aplikace AR.
- Cíle – Jsou to objekty nebo značky reálného světa (například čárové kódy nebo symboly). Cíle se vytvářejí pomocí nástroje Vuforia Target Manager. Po jejich vytvoření je lze použít ke sledování objektu a zobrazení obsahu nad ním. Cíle mohou být obrazové cíle, válcové cíle, cíle definované uživatelem nebo slovní cíle, 2D obrazové rámce (značky rámců), virtuální tlačítka (která mohou spouštět událost) nebo cíle Cloud.
- Obsah – Obsahem rozumíme 2D/3D objekt nebo video, které chceme rozšířit nad cíl. Například zobrazení obrázku nebo videa nad terčem.
- Textury – Textura je objekt OpenGL tvořený jedním nebo dvěma obrázky se stejným formátem. Systém Vuforia AR převádí obsah na texturu a systém AR vykresluje texturu pro zobrazení na obrazovce náhledu kamery.
- Nativní rozhraní Java – V ukázkách systému Vuforia Android jsou události životních cyklů zpracovávány v jazyce Java, ale události sledování a vykreslování jsou napsány v nativním jazyce C++. JNI lze použít ke komunikaci mezi Javou a C++, protože umožňuje volání nativních metod z Javy.
- Occlusion – Znamená sledování virtuálního objektu skrytého skutečným objektem. Zpracování správy okluze zahrnuje vytvoření vztahu mezi virtuálními a skutečnými objekty pomocí průhledných shaderů, a tedy zobrazení grafiky, jako by byla uvnitř skutečného objektu.
- OpenGL ES – Vuforia interně používá OpenGL ES pro vykreslování 2D a 3D grafiky pomocí grafické procesorové jednotky. OpenGL ES je speciálně navrženo pro chytré telefony a vestavěná zařízení.
Komponenty Vuforia
Výše uvedené schéma zobrazuje základní komponenty aplikace Vuforia AR.
- Kamera – Zachycuje náhledový snímek a předává jej do Image Trackeru.
- Konvertor obrazu – Konvertor pixelového formátu převádí výchozí formát kamery na formát vhodný pro vykreslování a sledování v OpenGL ES.
- Tracker – Tracker detekuje a sleduje objekty reálného světa v náhledovém snímku kamery pomocí algoritmů rozpoznávání obrazu. Výsledky jsou uloženy ve stavovém objektu, který je předán vykreslovači pozadí videa.
- Vykreslovač pozadí videa – Vykreslovač vykreslí obraz kamery uložený ve stavovém objektu a rozšíří jej na obrazovku kamery.
- Databáze zařízení – Databáze zařízení nebo datová sada obsahuje cíle vytvořené pomocí Správce cílů. Obsahuje konfigurační soubor XML a binární soubor .dat.
- Cloudové databáze – Mohou být vytvořeny pomocí správce cílů a mohou obsahovat databázi až 1 milionu cílů, na které se lze dotazovat za běhu.
Začátek vývoje
TargetManager – Prvním krokem je vytvoření cílů pomocí Správce cílů Vuforia, které se použijí jako databáze zařízení. K tomu je třeba nejprve provést bezplatnou registraci na vývojářském portálu Vuforia. Tento účet lze použít ke stahování zdrojů z portálu Vuforia a k publikování problémů na fóru Vuforia. Po přihlášení,
- otevřete TargetManager na webu Vuforia, jak je uvedeno výše, a otevřete kartu Databáze zařízení.
- Klikněte na Vytvořit databázi, Přidat cíl. Otevře se dialogové okno nového cíle.
- Zvolte obrázek, který chcete zobrazit jako cíl z místního systému. Podporovány jsou pouze obrázky JPG nebo PNG (pouze RGB nebo ve stupních šedi) o velikosti menší než 2 MB. Ideální cílový obrázek by měl být bohatý na detaily a musí mít dobrý kontrast a žádné opakující se vzory.
- Zvolte typ cíle jako jediný obrázek. Zadejte libovolnou hodnotu jako šířku a klikněte na tlačítko vytvořit cíl. Po krátké době zpracování bude vytvořen vybraný cíl.
- Pokud je hodnocení cíle více než tři, pak lze cíl použít pro sledování. Vyšší hodnocení znamená, že obraz je snadno sledovatelný systémem AR.
- Stejným způsobem přidejte další cíle. Vyberte cíle, které chcete stáhnout, a klikněte na tlačítko Stáhnout vybrané cíle.
- Stažený soubor bude obsahovat <název_databáze>.xml a <název_databáze>.dat. Soubor .xml obsahuje databázi cílových obrázků, zatímco soubor .dat je binární soubor obsahující informace o sledovatelné databázi.
Instalace a stahování ukázkového kódu
- Předpokládáme, že jste již přihlášeni ke svému účtu Vuforia, pokračujte ve stahování Vuforia SDK pro Android a Samples for Android
- Extrahujte složku Vuforia SDK a vložte ji do stejné složky, kde máte uloženou složku Android-SDK. Zkopírujte vzorky dovnitř prázdného adresáře se vzorky ve složce Vuforia SDK a importujte vzorek VideoPlayBack.
- V Eclipse přejděte do Window-Preferences a přejděte na Java-Build Path – Class Variables a vytvořte novou proměnnou.
- Přidejte QCAR_SDK_ROOT do pole Name a vyberte si složku Vuforia SDK kliknutím na volbu folder.
- Zkontrolujte ve svém projektu Java Build Path, že vuforia.jar je exportována v záložce Order and Exports.
- Otevřete copyVuforiaFiles.xml a v části <fileset> zadejte cestu pro armeabi-v7a. Cestu můžete zkontrolovat v adresáři build ve složce Vuforia-SDK. V mém případě v Linuxu je cesta : „/home/vineet/vineet/vuforia-sdk-android-2-8-8/build/lib/armeabi-v7a“
- Předchozí krok vygeneruje soubor libVuforia.so v adresáři libs vašeho projektu při sestavení a spuštění aplikace.
- Demonstrační aplikace již obsahuje 2 soubory značek a videa, které můžete použít k testování. Značky můžete vytisknout ze souborů PDF ve složce media aplikace.
- Po spuštění aplikace se otevře obrazovka s pohledem kamery. Po namíření kamery na značku se na obrazovce objeví video překryté značkou.
Pracovní postup vývojáře
Když uživatel spustí ukázkovou aplikaci, začne vytvářet a načítat textury voláním funkce loadTextures(). Zde se bitové mapy ze složky assets převedou na textury, které vyžaduje engine Vuforia SDK pro vykreslování 3D objektů v zobrazení AR.
Současně aplikace zahájí proces konfigurace enginu voláním funkce initAR(). Zde aplikace asynchronně inicializuje engine Vuforia SDK. Po úspěšné inicializaci začne aplikace asynchronně načítat data sledovačů. Načte a aktivuje datové sady z cílového XML souboru vytvořeného pomocí TargetManageru.
Po konfiguraci motoru aplikace zavolá initApplicationAR(), kde vytvoří a inicializuje zobrazení OpenGLES a připojí k němu renderer, který je nutný k zobrazení videa na horní části obrazovky kamery, pokud je nalezen imagetarget. Vykreslovač připojený k zobrazení OpenGL ES si vyžádá načtení videa prostřednictvím nástroje VideoPlaybackHelper a zavolá metodu OpenGL DrawFrame() pro sledování snímků kamery. Během tohoto procesu se také vytvoří textury OpenGL z objektů textur načtených na začátku a textury pro data videa.
Aplikace pak zavolá funkci startAR() pro spuštění kamery. Jakmile se kamera spustí, začne vykreslovač sledovat snímky. Jakmile je nalezen imageTarget, aplikace zobrazí video. Video může být nakonfigurováno tak, aby se přehrávalo automaticky, nebo může být spuštěno po klepnutí.
Všechny zdroje aplikace odemkne voláním onDestroy(), když uživatel aplikaci zavře.
Závěr
V tomto blogu jsme nyní viděli, jak můžeme použít Vuforia ke sledování ImageTargets a zobrazit na něm video. Vuforia může být použita pro mnoho účelů, jako je detekce textu, správa okluzí, generování cílů za běhu z cloudu. Chcete-li se o Vuforii dozvědět více, podívejte se na developer.vuforia.com.
.