4
http://excel.fit.vutbr.cz Aplikace s vkl ´ ad´ an´ ım virtu´ aln´ ıch pˇ redm ˇ et ˚ u do abˇ eru kamery Karel Popelka* Abstrakt Hlavn´ ım c´ ılem projektu je vlo ˇ zen´ ı virtu ´ aln´ ıho objektu do z ´ ab ˇ eru kamery tak, aby objekt p ˚ usobil co nejpˇ rirozen ˇ eji ve sc ´ en ˇ eaz ´ arove ˇ n budil dojem, ˇ ze se ve sc ´ en ˇ epˇ r´ ımo nach ´ azel. ˇ Re ˇ sen´ ım je vytvoˇ ren´ ı aplikace na platform ´ ach Windows 8.1 a Windows Phone 8.1 se zam ˇ eˇ ren´ ım na u ˇ zivatelsk ´ e rozhran´ ı. Aplikace byla vyv´ ıjena iterativn ˇ eapˇ ri v ´ yvoji byl kladen velk ´ yd ˚ uraz na odezvy u ˇ zivatel ˚ u. V ´ ysledkem projektu je mobiln´ ı aplikace, kter ´ a umo ˇ z ˇ nuje vlo ˇ zen´ ır ˚ uzn ´ ych virtu ´ aln´ ıch pˇ redm ˇ et ˚ u do z ´ ab ˇ eru kamery se st ´ ıny. D ´ ale umo ˇ z ˇ nuje efekty jako rozmaz ´ an´ ı st ´ ınu nebo nastaven´ ı jeho intenzity a moˇ znosti nastaven´ ı vlastnost´ ı sv ˇ etla. Kl´ ıˇ cov ´ a slova: Roz ˇ s´ ıˇ ren ´ a realita – DirectX – Windows Phone – U ˇ zivatelsk ´ e rozhran´ ı – Vkl ´ ad ´ an´ ı virtu´ aln´ ıch pˇ redm ˇ et˚ u – St´ ıny – Osvˇ etlen´ ı riloˇ zen ´ e materi ´ aly: video s uk ´ azkou pouˇ zit´ ı aplikace *xpopel15@stud.fit.vutbr.cz, Fakulta informaˇ cn´ ıch technologi´ ı VUT v Brn ˇ e 1. ´ Uvod C´ ılem projektu je vyvinout u ˇ zivatelsky pˇ r´ ıv ˇ etivou a intuitivn´ ı aplikaci pro mobiln´ ı platformy Windows 8.1 a Windows Phone 8.1. D´ ale se projekt zamˇ eˇ ruje na technologie Microsoftu, kter ´ ymi jsou DirectX, Me- dia Foundation, COM objekty a na jejich praktick ´ e vyu ˇ zit ´ ıpˇ ri v ´ yvoji. C´ ılem je tak ´ e vyvinout aplikaci na z ´ aklad ˇ e modern´ ıch pˇ r´ ıstup ˚ u, mezi kter ´ e patˇ r´ ı paraleln´ ı programov ´ an´ ı, lambda funkce nebo automatick ´ e odvo- zov´ an´ ı typ ˚ u. Projekt je zalo ˇ zen na ˇ rad ˇ e experiment ˚ u, kter ´ e zkou- maly lidsk ´ e vn´ ım´ an´ ı re ´ aln ´ eho sv ˇ eta. V ´ yzvou je tak ´ e propojen´ ı re ´ aln ´ eho sv ˇ eta s virtu ´ aln´ ımi objekty. D´ ale jsou ˇ reˇ seny ot ´ azky, jak spr ´ avn ˇ e matematicky popsat re´ aln´ y svˇ et tak, aby byl zachov´ an jeho charakter. V posledn´ ı ˇ c ´ asti projektu se ˇ reˇ s´ ıv ´ yvoj u ˇ zivatelsk ´ eho rozhran´ ı a pˇ rirozen´ e ovl´ ad´ an´ ı virtu´ aln´ ıho objektu, napˇ ıklad jeho setrvaˇ cnost pˇ ri rotaci. V ´ yvoj projektu byl inspirov ´ an anal ´ yzou ji ˇ z exi- stuj´ ıc´ ıch ˇ reˇ sen´ ı. Protoˇ ze je obor rozˇ ıˇ ren´ e reality pomˇ ern ˇ e mlad ´ y, neexistuje mnoho dostupn ´ ych mo- biln´ ıch aplikac´ ı s podobnou t ´ ematikou. Pˇ resto bylo analyzov ´ ano n ˇ ekolik ˇ reˇ sen´ ı a byly vybran ´ en ˇ ekter ´ e principy, kter ´ e byly upraveny a pˇ rizp ˚ usobeny aplikaci. Ve v ´ ysledn ´ e aplikaci m ˚ u ˇ ze u ˇ zivatel vybrat virtu ´ aln´ ı objekt, kter ´ y vlo ˇ z´ ıpˇ red kameru v re ´ aln ´ em ˇ case i s jeho st ´ ınem. Sc ´ enu je mo ˇ zn ´ e pozastavit a objekt m ˚ u ˇ ze b ´ yt posouv ´ an, ot ´ a ˇ cen nebo zv ˇ et ˇ sov ´ an. Uˇ zivatel m ˚ u ˇ ze tak ´ e zvolit polohu slunce a nato ˇ cen´ ı roviny, na kterou je st ´ ın prom´ ıt ´ an. Nakonec je mo ˇ zn ´ e nastavit ostatn´ ı vlastnosti sc ´ eny tak, aby virtu ´ aln´ ı objekt p ˚ usobil pˇ rirozen ´ ym dojmem.

Aplikace s vklad´ an´ım virtu´ aln´ıch p´ redmˇ etu˚ doˇ zab´ eru …excel.fit.vutbr.cz/submissions/2016/023/23.pdf · 2016. 4. 29. · DirectX a spoustˇ ˇen ´ı v XAML

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aplikace s vklad´ an´ım virtu´ aln´ıch p´ redmˇ etu˚ doˇ zab´ eru …excel.fit.vutbr.cz/submissions/2016/023/23.pdf · 2016. 4. 29. · DirectX a spoustˇ ˇen ´ı v XAML

http://excel.fit.vutbr.cz

Aplikace s vkladanım virtualnıch predmetu dozaberu kameryKarel Popelka*

Abstrakt

Hlavnım cılem projektu je vlozenı virtualnıho objektu do zaberu kamery tak, aby objekt pusobilco nejprirozeneji ve scene a zaroven budil dojem, ze se ve scene prımo nachazel. Resenım jevytvorenı aplikace na platformach Windows 8.1 a Windows Phone 8.1 se zamerenım na uzivatelskerozhranı. Aplikace byla vyvıjena iterativne a pri vyvoji byl kladen velky duraz na odezvy uzivatelu.Vysledkem projektu je mobilnı aplikace, ktera umoznuje vlozenı ruznych virtualnıch predmetu dozaberu kamery se stıny. Dale umoznuje efekty jako rozmazanı stınu nebo nastavenı jeho intenzitya moznosti nastavenı vlastnostı svetla.

Klıcova slova: Rozsırena realita – DirectX – Windows Phone – Uzivatelske rozhranı – Vkladanıvirtualnıch predmetu – Stıny – Osvetlenı

Prilozene materialy: video s ukazkou pouzitı aplikace

*[email protected], Fakulta informacnıch technologiı VUT v Brne

1. UvodCılem projektu je vyvinout uzivatelsky prıvetivou aintuitivnı aplikaci pro mobilnı platformy Windows 8.1a Windows Phone 8.1. Dale se projekt zameruje natechnologie Microsoftu, kterymi jsou DirectX, Me-dia Foundation, COM objekty a na jejich praktickevyuzitı pri vyvoji. Cılem je take vyvinout aplikaci nazaklade modernıch prıstupu, mezi ktere patrı paralelnıprogramovanı, lambda funkce nebo automaticke odvo-zovanı typu.

Projekt je zalozen na rade experimentu, ktere zkou-maly lidske vnımanı realneho sveta. Vyzvou je takepropojenı realneho sveta s virtualnımi objekty. Dalejsou reseny otazky, jak spravne matematicky popsatrealny svet tak, aby byl zachovan jeho charakter.V poslednı casti projektu se resı vyvoj uzivatelskeho

rozhranı a prirozene ovladanı virtualnıho objektu,naprıklad jeho setrvacnost pri rotaci.

Vyvoj projektu byl inspirovan analyzou jiz exi-stujıcıch resenı. Protoze je obor rozsırene realitypomerne mlady, neexistuje mnoho dostupnych mo-bilnıch aplikacı s podobnou tematikou. Presto byloanalyzovano nekolik resenı a byly vybrane nektereprincipy, ktere byly upraveny a prizpusobeny aplikaci.

Ve vysledne aplikaci muze uzivatel vybrat virtualnıobjekt, ktery vlozı pred kameru v realnem case i s jehostınem. Scenu je mozne pozastavit a objekt muze bytposouvan, otacen nebo zvetsovan. Uzivatel muze takezvolit polohu slunce a natocenı roviny, na kterou je stınpromıtan. Nakonec je mozne nastavit ostatnı vlastnostisceny tak, aby virtualnı objekt pusobil prirozenymdojmem.

Page 2: Aplikace s vklad´ an´ım virtu´ aln´ıch p´ redmˇ etu˚ doˇ zab´ eru …excel.fit.vutbr.cz/submissions/2016/023/23.pdf · 2016. 4. 29. · DirectX a spoustˇ ˇen ´ı v XAML

2. Potrebne teoreticke zaklady proprojekt

V teto kapitole jsou zmıneny zakladnı teoreticke znalos-ti z pohledu vyvoje projektu.

Windows Runtime komponenty a Microsofttechnologie

Windows Runtime (WinRT) komponenty jsou zalozenyna COM objektech a nativne podporujı x86 a ARMarchitekturu. V projektu je vytvorena WinRT kom-ponenta, ktera umoznuje vykreslovanı virtualnıho ob-jektu v C++/CX (component extensions) pomocıDirectX a spoustenı v XAML.

Dale je vyuzit framework Media Foundation (MF),ktery umoznuje psat nızkourovnove komponenty dotoku multimedialnıch dat od jejich nactenı, az po jejichzobrazenı. Je tedy mozne psat sve vlastnı transformace(MF Transformation – MFT) nebo vysledne zobrazenımediı, tzv. Media Sink. V projektu je frameworkMedia Foundation vyuzit pro zıskanı nahledu z kamerypomocı komponenty Media Sink.

Uzivatelske rozhranı v C# a navrhovy vzorModel-View-ViewModel

V projektu jsou implementovany vlastnı trıdy pro pod-poru navrhoveho vzoru Model-View-ViewModel(MVVM) v C#. Tım je oddelen vyvoj vzhledu odsamotne logiky. Trıdy jsou implementovany dleaktualnıch programovacıch metodologiı Microsoftu.

Projekt obsahuje trıdy ViewBase and ViewModel-Base, ktere vyuzıvajı reflexi v C# a dıky tomu propojıvse dohromady automaticky. Dale jsou dostupne po-mocne trıdy pro navigacnı a notifikacnı servis.

Stacı tedy vytvorit trıdy reprezentujıcı novou stran-ku se stejnym jmenem v patricnych slozkach, kterededı z bazovych trıd a vsechno se automaticky napozadı samo propojı. Pote je mozne pouzıvat pomocneprıkazy navigace z XAML nebo z C#. Vysledna soubo-rova struktura MVVM je videt na obrazku 1.

Obrazek 1. Souborova struktura navrhoveho vzoruMVVM pri vytvorenı MainPage stranky.

Normal mappingNormal Mapping je technika na zlepsenı vzhledu ob-jektu s nızkym poctem trojuhelnıku, ktera usporı pro-

cesorovy cas na ukor vyssı pamet’ove narocnosti. Jevytvorena normalova mapa, ve ktere jsou vypocıtanynormaly v Tangent-Bitangent-Normal (TBN) prostoru.Vysledek je mozne videt na obrazku 2 s korespondujıcıbarevnou mapou.

Obrazek 2. Barevna mapa [1] (vlevo) a normalovamapa (vpravo).

V projektu je vyuzit TBN prostor, aby bylo mozneprovadet libovolne afinnı operace s objektem pri ko-rektnım osvetlenı. Kazdy bod je pak preveden dosveho vlastnıho TBN prostoru. Vysledne pixely norma-love mapy jsou v TBN prostoru daneho bodu.

V projektu je normal mapping vyuzit s phongovymosvetlovacım modelem [2]. Vysledek implemento-vanych metod na virtualnım objektu s nızkym poctemtrojuhelnıku lze videt na obrazku 3.

Obrazek 3. Low-poly model bez normal mapping(vlevo) a s vyuzitım normal mapping (vpravo).

Post processingCılem projektu je take vytvorit pekny stın a nabıdnoutuzivateli moznost jeho rozmazanı nebo upravenı in-tenzity. Z tohoto duvodu jsou implementovany postprocessing techniky, ktere vykreslı obraz do textury,upravı a znovu vykreslı. Na rozmazanı stınu je vyuzitGaussian Blur [3] a na upravenı intenzity alpha blend-ing v DirectX 2D.

Koncept Device-Independent PixelsV dnesnı dobe je mnoho dostupnych mobilnıch zarızenı.Tato zarızenı majı ruzna rozlisenı i ruzne velky displej.Duraz byl proto kladen i na spravne zobrazenı aplikacena libovolnem zarızenı. Z techto duvodu je nutnedodrzovat Device-Independent Pixels (DIPs) koncept,

Page 3: Aplikace s vklad´ an´ım virtu´ aln´ıch p´ redmˇ etu˚ doˇ zab´ eru …excel.fit.vutbr.cz/submissions/2016/023/23.pdf · 2016. 4. 29. · DirectX a spoustˇ ˇen ´ı v XAML

ktery umoznuje programovat nezavisle na rozlisenıa velikosti displeje. V prıpade dodrzovanı konceptuDIPs se programator muze vyhnout nespravnemu zo-brazenı layoutu, orezavanı UI elementu nebonespravnemu vypoctu souradnic mysi.

V aplikaci jsou vsechny souradnice na obrazovcepocıtany v DIPs, ktere lze vypocıtat z DPI na zakladerovnice (1).

DIPs = pixels/(DPI/96.0) (1)

3. Navrh projektuNa zacatku kapitoly je popis analyzy jiz existujıcıchresenı a zaver se venuje iterativnımu vyvoji vzhleduaplikace.

Analyza jiz existujıcıch resenıPred samotnym zacatkem projektu byla analyzovanajiz existujıcı resenı. Protoze je rozsırena realita pomernemlady obor a mobilnı zarızenı nemela doposud dos-tatecny vykon, neexistuje tolik aplikacı se stejnymtematem. Z tohoto duvodu byly analyzovany podobneaplikace a z tech byly vybırany vyuzitelne principy doprojektu.

Naprıklad ovladanı objektu nebo stınu bylo in-spirovano 3D programy na modelovanı naprıkladBlender, a je reseno rozdılne pro ovladanı plochy stınua modelu. Nastavenı slunce ve scene bylo inspirovanoaplikaci Sunrise Sunset pro Android. Dale byl tentoprincip upraven a prizpusoben aplikaci. Vysledek jevidet na obrazku 4.

z x

y

rotace podél osy Y

pohy

b sl

unce

na

ose

Obrazek 4. Zakladnı princip nastavenı pozice slunceve scene.

Iterativnı vyvoj navrhuNejdulezitejsı cast pri navrhu uzivatelskeho rozhranıbyla moznost nabıdnout uzivateli nastavenı co nejvıceruznych aspektu sceny bez toho, aby byl uzivatel zma-teny.

Cılem bylo take nabıdnout uzivateli co nejvıce dos-tupne ovladacı plochy a zaroven zobrazenı co nejmeneuzivatelskych prvku v jeden okamzik. Navrh probıhal

iterativne a to tak, ze bylo vytvoreno pro kazdou speci-fickou situaci vıce navrhu, ktere byly predlozenyuzivatelum a nasledne upravovany do finalnı podoby.Vysledny navrh je na obrazku 5.

popisekposuvníku

vysouvacímenu

pořízenífotky

informace k aktivnímu módu

vysunutí/zasunutímenu

jeden velký slider s popiskempro všechny úkony z menu

tlačítka pro změnu móduvětší tlačítko inicializuje aktivní mód

pozastavení/spuštěníscény

vyskakovací okno:popis s informacemi

k módu

Obrazek 5. Finalnı navrh UI.

Vsechny texty, ktere jsou zobrazene, majı pruhlednypodklad, ktery je inverznı k barve textu a ramecekv barve textu. Animace uzivatelskeho rozhranı jsounelinearnı a nesymetricke. Dıky tomu pusobı ovladanıaplikace prirozene.

V dolnı casti se nachazı posuvnık s popiskem,ktery je urcen pro vsechna nastavenı vyuzıvajıcı po-suvnık. Posuvnık pri zmene ucelu zajede a znovuvyjede, aby byla naznacena zmena kontextu.

V prave casti se nachazı tlacıtko pro pozastavenınebo spustenı nahledu z fotoaparatu a tlacıtko pro vyfo-cenı sceny. Pokud je nahled z fotoaparatu pozastaven,tlacıtko pro porızenı fotky je neaktivnı.

Hornı cast obsahuje tlacıtka pro zmenu moduovladanı aplikace. Aktivnı mod ma zvetsene tlacıtkotak, aby bylo jasne rozeznatelne od neaktivnıch modu.Vlevo se pak nachazı tlacıtko, ktere po stisknutı zo-brazı vyskakovacı menu s napovedou k aktivnımumodu.

Ovladanı virtualnıho modelu ma setrvacnosta reaguje jak na dotykova zarızenı, tak i na vstupz mysi. Je mozne provadet klasicke ukony jako jerotace, posun a zvetsovanı.

Ovladanı stınu je reseno pomocı mrızky, kteranaznacuje rovinu, na kterou je stın vrzen. Pro uzivatelebylo matoucı nastavovat rovinu stınu, kterou nevideli.Kdyz se dostal stın do nekorektnı polohy a obcas izmizel, uzivatele nevedeli, jak chybu opravit. Naprotitomu mrızka se zarovnava s realnou hmatatelnou plo-chou a ovladanı je mnohem jasnejsı. Lze pak nas-tavovat libovolnou polohu roviny a jejı vzdalenost odvirtualnıho objektu. Vysledek je videt na obrazku 6.

Page 4: Aplikace s vklad´ an´ım virtu´ aln´ıch p´ redmˇ etu˚ doˇ zab´ eru …excel.fit.vutbr.cz/submissions/2016/023/23.pdf · 2016. 4. 29. · DirectX a spoustˇ ˇen ´ı v XAML

Obrazek 6. Nespravne nastavenı stınu bez mrızky(nahore) a s mrızkou (dole).

4. Implementace projektuProjekt je implementovan v jazycıch C++/CX aC#/XAML. Vykreslovanı zaberu kamery, virtualnıhoobjektu a jeho stınu je reseno v DirectX 11 jako WinRTkomponenta, ktera dedı z UI elemantu SwapChain-Panel a je nactena do XAML.

V komponente WinRT je chod urychlen pomocınovych programovacıch prıstupu, jako je naprıkladparalelnı nacıtanı zdroju aplikace. Cela aplikace pakvytvorı nekolik vlaken. Naprıklad je vytvoreno specialnıvlakno pro odchytavanı vstupu nebo specialnı vlaknopro vykreslovanı. Vse je pak synchronizovano presudalosti a kriticke sekce. Dıky tomu aplikace nikdynebudı dojem zamrznutı, i kdyz zrovna provadı slozitejsıproces na pozadı.

Vysledna aplikace byla vytvorena dle vyse uve-deneho navrhu v kapitole 3 a vysledek je mozne videtna obrazku 7.

Nacıtanı modeluAplikace umı nacıtat modely ve standardnım binarnımformatu Vertex Buffer Object (VBO), ktery v sobeobsahuje pole dat pro jednotlive vrcholy. Data projeden vrchol obsahujı pozici, normalu a souradnice dotextury.

Format VBO muze byt vygenerovan z klasickehoOBJ formatu, ktery podporuje rada 3D modelovacıchprogramu. Podmınkou pro model tedy je, ze musı obsa-hovat texturu s barvou modelu a volitelne normalovoutexturu.

Nacıtanı modelu z uzivatelskeho rozhranı nenıprozatım implementovano, ale bude v dohledne dobe.

5. ZaverVysledkem projektu je aplikace, ktera umoznuje vlozitvirtualnı objekt do zaberu kamery. Aplikace je napsanav DirectX 11 a zamerena na platformu Windows 8.1a Windows Phone 8.1. Uzivatel muze vlozit virtualnı

Obrazek 7. Vysledny vzhled aplikace.

objekt do realne sceny a nastavit vlastnosti virtualnıhoobjektu tak, aby pusobil co nejprirozenejsım dojmemve scene.

Osobnım cıle bylo take vytvorit uzivatelsky prıveti-vou aplikaci. Na zaklade reakcı testovacıch uzivatelubyl tento cıl splnen.

PodekovanıChtel bych podekovat prof. Ing. Adamu Heroutovi,Ph.D. za kvalitnı vedenı prace a mnoho konstruktivnıchrad pri resenı. Dale bych chtel podekovat rodicum avsem pratelum, kterı me podporovali pri vyvoji ap-likace.

Literatura[1] Bruno Levy, Sylvain Petitjean, Nicolas Ray, and

Jerome Maillot. Least squares conformal mapsfor automatic texture atlas generation. In ACM,editor, ACM SIGGRAPH conference proceedings,Jul 2002.

[2] Justin Stenning. Direct3D Rendering Cookbook.Packt Publishing, January 2014.

[3] Frank D. Luna. Introduction to 3D GAME PRO-GRAMMING WITH DIRECTX R© 11. MERCURYLEARNING AND INFORMATION LLC, 2012.