Lisätty todellisuus (Augmented Reality, AR) on innovatiivinen teknologia, jonka avulla voit esittää laajennetun näkymän ympäröivästä todellisesta maailmasta. Hyvä esimerkki olisi ottelutulosten näyttäminen upotettuna suoran jalkapallotoiminnan rinnalla kentältä. Upottaminen tapahtuu lisätyn todellisuuden sovelluksen avulla, joka renderöi suoran kamerakuvan ja lisää virtuaalisen kohteen reaalimaailman kuvan päälle ja näyttää sen kameran esikatseluruudulla käyttämällä näköön perustuvia tunnistusalgoritmeja.
Tässä blogissa selitämme esimerkin AR-sovelluksen kehitysprosessin käyttäen Qualcomm Vuforia SDK:ta, joka on yksi parhaista saatavilla olevista SDK:ista näköön perustuvien AR-sovellusten rakentamiseen mobiililaitteille ja tableteille. Tällä hetkellä se on saatavilla Androidille, iOS:lle ja Unitylle. SDK huolehtii alimpien tasojen monimutkaisuuksista, minkä ansiosta kehittäjät voivat keskittyä täysin sovellukseen.
Käsitteellinen yleiskatsaus
Aloitamme yleiskatsauksella AR-alalla käytettäviin keskeisiin käsitteisiin. On tärkeää ymmärtää nämä ennen AR-sovelluksen kehittämisen aloittamista.
- Kohteet – Ne ovat reaalimaailman esineitä tai merkkejä (kuten viivakoodeja tai symboleja). Kohteet luodaan Vuforia Target Managerilla. Kun ne on luotu, niitä voidaan käyttää kohteen seuraamiseen ja sisällön näyttämiseen sen päällä. Kohteet voivat olla kuvakohteita, sylinterimäisiä kohteita, käyttäjän määrittelemiä kohteita tai sanakohteita, 2D-kuvakehyksiä (kehysmerkkejä), virtuaalisia painikkeita (jotka voivat laukaista tapahtuman) tai pilvikohteita.
- Sisältö – Sisällöllä tarkoitamme 2D/3D-objektia tai videota, jonka haluamme lisätä kohteen päälle. Esimerkiksi kuvan tai videon näyttäminen kohteen päällä.
- Tekstuurit – Tekstuuri on OpenGL-objekti, joka muodostuu yhdestä tai kahdesta kuvasta, joilla on sama kuvaformaatti. Vuforia AR-järjestelmä muuntaa sisällön tekstuuriksi ja AR-järjestelmä renderöi tekstuurin näytettäväksi kameran esikatselunäytöllä.
- Java Native Interface – Vuforia Android -näytteissä elinkaaritapahtumat käsitellään Javalla, mutta seurantatapahtumat ja renderöinti kirjoitetaan natiivilla C++:lla. JNI:n avulla voidaan kommunikoida Javan ja C++:n välillä, sillä se mahdollistaa natiivien metodien kutsumisen Javasta.
- Occlusion – Se tarkoittaa todellisen objektin peittämän virtuaaliobjektin seuraamista. Occlusion hallinnan käsittelyyn kuuluu virtuaalisten ja todellisten objektien välisen suhteen luominen käyttämällä läpinäkyviä varjostimia ja siten grafiikan näyttäminen ikään kuin se olisi todellisen objektin sisällä.
- OpenGL ES – Vuforia käyttää sisäisesti OpenGL ES:ää 2D- ja 3D-grafiikan renderöintiin grafiikkaprosessoriyksikön avulla. OpenGL ES on suunniteltu erityisesti älypuhelimiin ja sulautettuihin laitteisiin.
Vuforian komponentit
Yllä olevassa kaaviossa on esitetty Vuforia AR -sovelluksen ydinkomponentit.
- Kamera – Kaappaa esikatselukuvan ja välittää sen kuvanseurantaan.
- Image Converter – Pikselimuotomuunnin muuntaa kameran oletusmuodon OpenGL ES -renderöintiin ja seurantaan sopivaan muotoon.
- Tracker – Tracker havaitsee ja seuraa reaalimaailman kohteet kameran esikatselukehyksessä kuvantunnistusalgoritmien avulla. Tulokset tallennetaan tila-objektiin, joka välitetään videotaustan renderöijälle.
- Videotaustan renderöijä – Renderöijä renderöi tila-objektiin tallennetun kamerakuvan ja lisää sen kameran näytölle.
- Laitetietokannat – Laitetietokanta tai tietokanta sisältää kohteet, jotka on luotu Target Managerilla. Se sisältää XML-konfiguraatiotiedoston ja binäärisen .dat-tiedoston.
- Pilvitietokannat – Voidaan luoda Target Managerin avulla, ja se voi sisältää jopa miljoona kohdetta sisältävän tietokannan, jota voidaan kysyä ajonaikana.
Kehityksen aloittaminen
TargetManager – Ensimmäisenä askeleenaan luodaan kohteet Vuforian Target Managerin avulla laitetietokantana käytettäväksi. Tätä varten sinun on ensin tehtävä ilmainen rekisteröinti Vuforia-kehittäjäportaalissa. Tällä tilillä voi ladata resursseja Vuforiasta ja lähettää kysymyksiä Vuforia-foorumeille. Kirjautumisen jälkeen,
- Avaa TargetManager Vuforia-sivustolla yllä esitetyllä tavalla ja avaa Device Databases -välilehti.
- Klikkaa Create Database, Add Target. Uusi kohde -valintaikkuna avautuu.
- Valitse kuva, jonka haluat näyttää kohteeksi paikallisesta järjestelmästä. Vain alle 2 Mt:n kokoisia JPG- tai PNG-kuvia (vain RGB- tai harmaasävykuvia) tuetaan. Ihanteellisen kuvakohteen tulisi olla yksityiskohtainen ja siinä on oltava hyvä kontrasti eikä toistuvia kuvioita.
- Valitse kohdetyypiksi yksittäinen kuva. Syötä leveydeksi mielivaltainen arvo ja napsauta create target. Lyhyen käsittelyajan jälkeen valittu kohde luodaan.
- Jos kohteen luokitus on yli kolme, kohdetta voidaan käyttää seurantaan. Korkeampi luokitus osoittaa, että AR-järjestelmä seuraa kuvaa helposti.
- Lisää kohteita samalla tavalla. Valitse ladattavat kohteet ja napsauta Lataa valitut kohteet.
- Lataus sisältää <tietokannan_nimi>.xml- ja <tietokannan_nimi>.dat-tiedoston. .xml-tiedosto sisältää kohdekuvien tietokannan, kun taas .dat-tiedosto on binääritiedosto, joka sisältää tietoja seurattavasta tietokannasta.
Asennus ja esimerkkikoodin lataaminen
- Edellyttäen, että olet jo kirjautuneena sisään Vuforia-tilillesi, siirry eteenpäin ja lataa Vuforia SDK Androidille ja Samples for Androidille
- Purkaa Vuforia SDK-kansio ulos koneeltasi ja laita se samaan hakemistoon, jossa olet säilyttänyt Android-SDK-kansiosi. Kopioi näytteet Vuforia SDK -kansiossa olevan tyhjän sample-hakemiston sisälle ja tuo VideoPlayBack-näyte.
- Mene Eclipsessä kohtaan Window-Preferences ja siirry kohtaan Java-Build Path – Class Variables ja luo uusi muuttuja.
- Lisää QCAR_SDK_ROOT Name-kenttään ja valitse Vuforia SDK -kansio napsauttamalla folder-vaihtoehtoa.
- Tarkista projektissasi Java Build Path, vuforia.jar on viety Order and Exports -välilehdellä.
- Avaa copyVuforiaFiles.xml ja kohdassa <fileset> anna polku armeabi-v7a:lle. Voit tarkistaa polun Vuforia-SDK-kansiosi build-hakemistosta. Minun tapauksessani Linuxissa polku on : ”/home/vineet/vineet/vuforia-sdk-android-2-8-8/build/lib/armeabi-v7a”
- Edellinen vaihe luo libVuforia.so-tiedoston projektisi libs-hakemistoon, kun rakennat ja suoritat sovelluksen.
- Demo-sovellus sisältää jo 2 markkeria ja videotiedostoa, joita voit käyttää testaamiseen. Voit tulostaa markkerit sovelluksen mediakansiossa olevista PDF-tiedostoista.
- Sovelluksen suorittamisen jälkeen kameranäkymän näyttö avautuu. Kun osoitat kameralla markkeriin, näytölle ilmestyy video, joka on päällekkäin markkerin kanssa.
Kehittäjän työnkulku
Kun käyttäjä käynnistää esimerkkisovelluksen, se aloittaa tekstuurien luomisen ja lataamisen kutsumalla loadTextures()-ohjelmaa. Tässä assets-kansion bittikartat muunnetaan Vuforia SDK -moottorin tarvitsemiksi tekstuureiksi 3D-objektien renderöintiä varten AR-näkymässä.
Samanaikaisesti sovellus aloittaa moottorin konfigurointiprosessin kutsumalla initAR(). Tässä sovellus alustaa Vuforia SDK -moottorin asynkronisesti. Onnistuneen alustuksen jälkeen sovellus alkaa ladata seurantatietoja asynkronisesti. Se lataa ja aktivoi tietokokonaisuudet TargetManagerin avulla luodusta kohde-XML-tiedostosta.
Moottorin konfiguroinnin jälkeen sovellus kutsuu initApplicationAR(), jossa se luo ja alustaa OpenGLES-näkymän ja liittää siihen renderöijän, jota tarvitaan videon näyttämiseen kameran näytön päällä, jos imagetarget löytyy. OpenGL ES -näkymään liitetty renderöijä pyytää videoiden lataamista VideoPlaybackHelperin kautta ja kutsuu OpenGL DrawFrame()-metodia kameran kehysten seuraamiseksi. Tämän prosessin aikana luodaan myös OpenGL-tekstuurit alussa ladatuista tekstuuriobjekteista ja tekstuurit videodataa varten.
Sovellus kutsuu tämän jälkeen startAR():a kameran käynnistämiseksi. Heti kun kamera käynnistyy, renderöijä alkaa seurata kehyksiä. Kun imageTarget löytyy sovellus näyttää videon. Video voidaan konfiguroida toistumaan automaattisesti tai se voidaan käynnistää napauttamalla.
Kaikki resurssit sovellus purkaa kutsumalla onDestroy(), kun käyttäjä sulkee sovelluksen.
Loppupäätelmä
Tämän blogin avulla olemme nyt nähneet, miten voimme käyttää Vuforiaa ImageTargettien seuraamiseen ja videon näyttämiseen sen päällä. Vuforiaa voidaan käyttää moniin tarkoituksiin, kuten tekstin havaitsemiseen, okkluusion hallintaan, ajoaikaisen kohteen luomiseen pilvestä. Lisätietoja Vuforiasta saat osoitteesta developer.vuforia.com.
.