Hogyan készítsünk kiterjesztett valóság alkalmazást

A kiterjesztett valóság (AR) egy olyan innovatív technológia, amely lehetővé teszi a körülöttünk lévő valós világ továbbfejlesztett megjelenítését. Jó példa erre a meccsek eredményeinek megjelenítése a pályán zajló élő focimeccsek mellé ágyazva. A beágyazás egy kiterjesztett valóság alkalmazáson keresztül történik, amely egy élő kameraképet renderel, és a valós világ képére egy virtuális objektumot erősít, és látásalapú felismerő algoritmusok segítségével megjeleníti a kamera előnézeti képernyőjén.

Ebben a blogban egy minta AR-alkalmazás fejlesztési folyamatát ismertetjük a Qualcomm Vuforia SDK használatával, amely az egyik legjobb SDK, amely a mobileszközök és táblagépek látásalapú AR-alkalmazásainak készítéséhez elérhető. Jelenleg Androidra, iOS-re és Unityre érhető el. Az SDK gondoskodik a legalacsonyabb szintű bonyodalmakról, így a fejlesztők teljes mértékben az alkalmazásra koncentrálhatnak.

Koncepcionális áttekintés

Az AR-térben használt kulcsfogalmak áttekintésével kezdünk. Fontos, hogy ezeket megértsük, mielőtt belekezdünk egy AR-alkalmazás fejlesztésébe.

  • Célpontok – Ezek a valós világ tárgyai vagy jelölések (például vonalkódok vagy szimbólumok). A célpontokat a Vuforia Target Manager segítségével hozzuk létre. Létrehozásuk után egy objektum követésére és a rajta lévő tartalom megjelenítésére használhatók. A célpontok lehetnek képi célpontok, hengeres célpontok, felhasználó által meghatározott célpontok vagy szócélpontok, 2D képkockák (keretjelölők), virtuális gombok (amelyek eseményt válthatnak ki) vagy Cloud célpontok.
  • Tartalom – Tartalom alatt egy 2D/3D objektumot vagy videót értünk, amelyet egy célpontra szeretnénk ráerősíteni. Például egy kép vagy videó megjelenítése a célpont tetején.
  • Textúrák – A textúra egy vagy két azonos képformátumú kép által alkotott OpenGL objektum. A Vuforia AR rendszer a tartalmat textúrává alakítja, és az AR rendszer rendereli a textúrát a kamera előnézeti képernyőjén való megjelenítéshez.
  • Java Native Interface – A Vuforia Android mintákban az életciklus eseményeit Java nyelven kezelik, de a követési események és a renderelés natív C++ nyelven íródnak. A JNI használható a Java és a C++ közötti kommunikációra, mivel lehetővé teszi a natív metódushívásokat Javából.
  • Occlusion – A valós objektum által elrejtett virtuális objektum követését jelenti. Az okklúzió kezelésének kezelése magában foglalja a virtuális és valós objektumok közötti kapcsolat létrehozását átlátszó árnyékolók használatával, és így a grafikát úgy jeleníti meg, mintha a valós világban lévő objektumon belül lenne.
  • OpenGL ES – A Vuforia belsőleg OpenGL ES-t használ a 2D és 3D grafika renderelésére egy grafikus processzoregység segítségével. Az OpenGL ES kifejezetten okostelefonokhoz és beágyazott eszközökhöz készült.

Vuforia komponensek

A fenti ábra a Vuforia AR alkalmazás alapvető komponenseit mutatja.

  • Kamera – Rögzíti az előnézeti képkockát és továbbítja a képkövetőnek.
  • Image Converter – A pixel formátum konverter a kamera alapértelmezett formátumát OpenGL ES renderelésre és követésre alkalmas formátumra konvertálja.
  • Tracker – A tracker képfelismerő algoritmusok segítségével érzékeli és követi a valós világ objektumait a kamera előnézeti képkockájában. Az eredményeket az állapotobjektumban tárolja, amelyet átad a videoháttér renderelőnek.
  • Videoháttér renderelő – A renderelő rendereli az állapotobjektumban tárolt kameraképet, és a kameraképernyőre növeli azt.
  • Eszközadatbázisok – Az eszközadatbázis vagy adatkészlet a Target Manager segítségével létrehozott célpontokat tartalmazza. Tartalmaz egy XML konfigurációs fájlt és egy bináris .dat fájlt.
  • Cloud Databases – A Target Manager segítségével hozható létre, és akár 1 millió célpontot tartalmazó adatbázist tartalmazhat, amely futás közben lekérdezhető.

A fejlesztés kezdete

TargetManager – Az első lépés a Vuforia Target Manager segítségével létrehozott célpontok létrehozása, amelyeket eszközadatként lehet használni. Ehhez először ingyenes regisztrációt kell végeznie a Vuforia fejlesztői portálon. Ezt a fiókot lehet használni a Vuforia forrásainak letöltésére és a Vuforia fórumokon történő problémabejegyzésre. Bejelentkezés után,

  • Nyissa meg a TargetManager-t a Vuforia weboldalán a fentiek szerint, és nyissa meg a Device Databases fület.
  • Kattintson az Create Database, Add Target gombra. Megnyílik egy új célpont párbeszédpanel.

  • Válassza ki a helyi rendszerről azt a képet, amelyet célpontként szeretne megjeleníteni. Csak a 2 MB-nál kisebb méretű JPG vagy PNG képek (csak RGB vagy szürkeárnyalatos) támogatottak. Az ideális célképnek részletgazdagnak, jó kontrasztúnak és ismétlődő minták nélkülinek kell lennie.
  • A célkép típusát egyetlen képként válassza ki. Adjon meg egy tetszőleges értéket szélességként, és kattintson a Cél létrehozása gombra. Rövid feldolgozási idő után a kiválasztott célpont létrejön.
  • Ha a célpont minősítése több mint három, akkor a célpont használható a követéshez. A magasabb minősítés azt jelzi, hogy a képet az AR rendszer könnyen követi.
  • Ugyanígy adjon hozzá további célpontokat. Válassza ki a letölteni kívánt célpontokat, és kattintson a kiválasztott célpontok letöltése gombra.
  • A letöltés tartalmazni fog egy <adatbázis_név>.xml és egy <adatbázis_név>.dat fájlt. Az .xml fájl a célképek adatbázisát tartalmazza, míg a .dat fájl egy bináris fájl, amely a nyomon követhető adatbázisról tartalmaz információkat.

Telepítés és a mintakód letöltése

  • Föltételezve, hogy már bejelentkezett a Vuforia fiókjába, folytassa a Vuforia SDK for Android és a Samples for Android letöltését
  • Kivonja a Vuforia SDK mappát, és tegye ugyanabba a mappába, ahol az Android-SDK mappáját tartotta. Másolja a mintákat a Vuforia SDK mappában lévő üres sample könyvtárba, és importálja a VideoPlayBack mintát.
  • Az Eclipse-ben lépjen a Window-Preferences menüpontra, és navigáljon a Java-Build Path – Class Variables menüpontra, és hozzon létre egy új változót.
  • Add hozzá a QCAR_SDK_ROOT-ot a Name mezőben és válaszd ki a Vuforia SDK mappát a folder opcióra kattintva.
  • Vizsgáld meg a projektedben a Java Build Path-ot, a vuforia.jar exportálva van a Order and Exports fül alatt.
  • Nyisd meg a copyVuforiaFiles.xml-t és a <fileset> alatt add meg az armeabi-v7a elérési útját. Az elérési utat a Vuforia-SDK mappájának build könyvtárában ellenőrizheti. Az én esetemben Linuxon az útvonal : “/home/vineet/vineet/vuforia-sdk-android-2-8-8/build/lib/armeabi-v7a”
  • Az előző lépés létrehozza a libVuforia.so fájlt a projekt libs könyvtárában, amikor elkészíti és futtatja az alkalmazást.
  • A demo alkalmazás már tartalmaz 2 markert és videó fájlt, amelyeket tesztelésre használhat. A markereket az alkalmazás média mappájában található PDF fájlokból nyomtathatja ki.
  • Az alkalmazás futtatása után megnyílik a kamera nézet képernyője. Ha a kamerát a jelölőre irányítja, a képernyőn megjelenik egy videó a jelölő fölött.

Developer Work Flow

Amikor a felhasználó elindítja a mintaalkalmazást, az a loadTextures() hívásával megkezdi a textúrák létrehozását és betöltését. Itt az assets mappából származó bittérképeket a Vuforia SDK motor által a 3D objektumok AR nézetben történő megjelenítéséhez szükséges textúrákká alakítja át.

Mivel egyidejűleg az alkalmazás az initAR() meghívásával elindítja a motor konfigurálásának folyamatát. Itt az alkalmazás aszinkron módon inicializálja a Vuforia SDK motort. A sikeres inicializálás után az alkalmazás elkezdi a nyomkövető adatok aszinkron betöltését. Betölti és aktiválja az adatkészleteket a TargetManager segítségével létrehozott cél XML fájlból.

A motor konfigurálása után az alkalmazás meghívja az initApplicationAR() funkciót, ahol létrehozza és inicializálja az OpenGLES nézetet, és csatol hozzá egy renderelőt, amely szükséges a videó megjelenítéséhez a kamera képernyőjének tetején, ha a képcél megtalálható. Az OpenGL ES nézethez csatolt renderelő a VideoPlaybackHelper segítségével kéri a videók betöltését, és meghívja az OpenGL DrawFrame() metódust a kameraképek követéséhez. Ennek során az elején betöltött textures objektumokból az OpenGL textúrák és a videó adatokhoz tartozó textúrák is létrejönnek.

Az alkalmazás ezután meghívja a startAR() parancsot a kamera elindításához. Amint a kamera elindul, a renderelő elkezdi követni a képkockákat. Ha az imageTarget megvan az alkalmazás megjeleníti a videót. A videó beállítható úgy, hogy automatikusan lejátsszon, vagy elindulhat tapintásra.

Az összes erőforrást az alkalmazás az onDestroy() hívásával tölti ki, amikor a felhasználó bezárja az alkalmazást.

Következtetés

Ezzel a bloggal most láttuk, hogyan használhatjuk a Vuforia-t az ImageTargets követésére és a videó megjelenítésére. A Vuforia rengeteg célra használható, például szövegfelismerésre, okklúziókezelésre, futásidejű célpontgenerálásra a felhőből. Ha többet szeretne megtudni a Vuforiáról, látogasson el a developer.vuforia.com.

oldalra.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.