a kiterjesztett valóság, háromdimenziós modellek térbeli...

60
Eötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet és Szoftvertechnológiai Tanszék A kiterjesztett valóság, háromdimenziós modellek térbeli transzformációi témavezető: Dr. Istenes Zoltán készítette: Hertelendy Gábor Egyetemi tanár Programtervező Informatikus BSc Budapest, 2011

Upload: others

Post on 24-Jan-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

Eötvös Loránd Tudományegyetem

Informatikai kar

Programozáselmélet és Szoftvertechnológiai Tanszék

A kiterjesztett valóság, háromdimenziós modellek

térbeli transzformációi

témavezető: Dr. Istenes Zoltán készítette: Hertelendy Gábor

Egyetemi tanár Programtervező Informatikus BSc

Budapest, 2011

Marta
Typewriter
A projekt az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával valósul meg, a támogatási szerződés száma TÁMOP 4.2.1./B-09/1/KMR-2010-0003.
Page 2: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

TARTALOMJEGYZÉK

1. BEVEZETÉS ...................................................................................................... - 4 -

1.1 A kiterjesztett valóság bemutatása ................................................................. - 4 -

1.2 Felhasználási területek ................................................................................... - 6 -

1.3 A Koncepció ................................................................................................... - 6 -

2. FELHASZNÁLÓI DOKUMENTÁCIÓ ........................................................... - 8 -

2.1 A program rövid ismertetése .......................................................................... - 8 -

2.2 Felhasznált Módszerek ................................................................................... - 8 -

2.3 Rendszerkövetelmény .................................................................................... - 9 -

2.4 Telepítési útmutató ....................................................................................... - 10 -

2.5 A program Használata .................................................................................. - 10 -

2.5.1 Inicializálása ........................................................................................ - 10 -

2.5.2 Egységeinek részletes bemutatása ....................................................... - 13 -

2.5.2.1 Vezértőeszközök és a Felület ...................................................... - 13 -

2.5.2.2 Állapotok ..................................................................................... - 14 -

2.5.3 Vezérlése .............................................................................................. - 15 -

2.5.3.1 A használat előfeltétele ................................................................ - 15 -

2.5.3.2 Háttértudás ................................................................................... - 15 -

2.5.3.3 A Giroszkóp ................................................................................. - 16 -

2.5.3.4 A Tengelyek ................................................................................ - 18 -

2.5.3.5 A Forgatási szög beállítása .......................................................... - 18 -

2.5.3.6 A Modellasztal Használata .......................................................... - 19 -

2.5.3.7 A Menü elérése ............................................................................ - 20 -

Page 3: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

2.5.3.8 A Menü Elemei ............................................................................ - 20 -

2.5.3.9 A Menüben való Navigálás ......................................................... - 20 -

2.5.3.10 A Menüpontok .............................................................................. - 21 -

3. FEJLESZTŐI DOKUMENTÁCIÓ ................................................................ - 23 -

3.1 Felhasznált módszerek ................................................................................. - 23 -

3.2 Felhasznált Eszközök ................................................................................... - 24 -

3.2.1 Implementáció és könyvtárak .............................................................. - 24 -

3.2.2 Microsoft XNA Game Studio 3.1 ........................................................ - 24 -

3.2.3 GoblinXNA v3.5 .................................................................................. - 24 -

3.2.4 ALVAR 1.4.0 ....................................................................................... - 25 -

3.2.5 DirectShow .......................................................................................... - 25 -

3.2.6 OpenCV 1.0 ......................................................................................... - 25 -

3.2.7 CMakE ................................................................................................. - 25 -

3.3 A programozási környezet összeállítása ...................................................... - 26 -

3.3.1 GoblinXNA v3.5 .................................................................................. - 26 -

3.3.2 A kamera kalibrálása ........................................................................... - 27 -

3.4 GoblinXNA felépítése .................................................................................. - 28 -

3.4.1 A Színtér gráf ....................................................................................... - 28 -

3.4.1.1 A Fontosabb csúcsfajták .............................................................. - 29 -

3.5 A Program felépítése .................................................................................... - 31 -

3.5.1 A program élettartama ......................................................................... - 31 -

3.5.2 Az Osztályszerkezet ............................................................................. - 32 -

3.5.2.1 supervisor osztály ........................................................................ - 36 -

Page 4: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

3.5.2.2 PerifericDevice osztály ................................................................ - 38 -

3.5.2.3 _3DofDisc osztály ....................................................................... - 39 -

3.5.2.4 Disc osztály ................................................................................. - 41 -

3.5.2.5 Slate osztály ................................................................................. - 42 -

3.5.2.4 Axes osztály ................................................................................. - 44 -

3.5.2.6 Gyroscope osztály ....................................................................... - 45 -

3.5.3 A Vezérlési modell ............................................................................. - 47 -

3.5.3.1 Programszintű kommunikáció ..................................................... - 48 -

3.5.4 Tesztelés ............................................................................................... - 49 -

3.5.4.1 Illusztrált Tesztesetek ................................................................... - 49 -

3.5.4.2 További Tesztesetek ..................................................................... - 54 -

4. ÖSSZEGZÉS ..................................................................................................... - 55 -

ÁBRAJEGYZÉK ..................................................................................................... - 56 -

IRODALOMJEGYZÉK ......................................................................................... - 59 -

Page 5: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 4 -

1. BEVEZETÉS

1.1 A KITERJESZTETT VALÓSÁG BEMUTATÁSA

A kiterjesztett valóság, vagy más néven „Augmented Reality” (AR) lehetővé teszi,

hogy a valós környezetet összefésüljük egy virtuális környezettel, és az eredményt

valamilyen kijelzőn megnézhessük.

Az érzékszerveinkkel felfogható valóság számítógép segítségével történő

kiterjesztése fiatal technológia. A módszer lényege, hogy valamilyen eszközzel

felfogjuk a körülöttünk lévő világ egy részét. Ez az eszköz jellegzetesen egy videó

rögzítő, és a célja az emberi látás, mint érzék mímelése. A felfogott információt egy

dedikált interfészen keresztül szemléljük, miközben felhasználjuk az interfész nyújtotta

lehetőségeket, hogy megváltoztassuk azt.

Az interfész valamilyen számítógép, amivel feldolgozzuk a felvett képinformációt

és emberi szem által érthető plusz információt adunk hozzá. A tisztánlátás végett álljon

itt egy példa. Vegyünk egy kamerát. Ez lesz a „szemünk”. Tegyük fel, hogy ez a kamera

egy asztal lapját veszi. Üresnek tűnik az asztal, szeretnénk egy teáskannát rárakni,

csakhogy nincs teáskannánk. A kiterjesztett valóság segítségével, a kamera képére

ráilleszthetőek virtuális objektumok. Így válik kombinálhatóvá a felfogható valóság egy

jól definiált szelete (a továbbiakban: valóság), és a virtuális „valóság”. Elkészítjük a

teáskanna virtuális modelljét és kombináljuk a kamera által felvett asztal lapjával.

Vagyis a két bemenetünk megfelelő módon történő összefésülése után a kimenet, egy

háromdimenziós tér síkra vetítése. Így a számítógép képernyőjén keresztül látjuk a

valóságot a hozzáadott tartalommal együtt.

Page 6: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 5 -

1. ábra - A virtuális világ és a valóság összefésülése

Ahhoz, hogy mindezt megtehessük, szükséges, hogy a kamera által vett

valóságot manipuláljuk valahogyan, ugyanis a kamera képe magában nem tartalmaz

elegendő térinformációt ahhoz, hogy szinkronba hozzuk vele a virtuális teret. Illetve

ezen információ kinyerése nem determinisztikus, komplex és nagy erőforrás-igényű

munka lenne. Éppen ezért jeleket (a továbbiakban: marker) helyezünk el a valóságban,

amik természetszerűleg megjelennek a felvételen. A program analizálja a videó képét,

és felismeri a markerek térbeli távolságát, méretét, elfordulását és torzulását. Ezáltal

létrehozva egy virtuális teret, ami szinkronban van a valósággal.

2. ábra - Modellek markerekre illesztve

Page 7: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 6 -

1.2 FELHASZNÁLÁSI TERÜLETEK

A kiterjesztett valóság új és izgalmas technológia, és mint minden ilyen, hamar

teret hódít magának. Jelen pillanatban az orvostudományban rohamosan fejlődik az AR

technológiát használó eszközök minősége, a játékiparban és az oktatásban is egyre

szélesebb körben használatos amiatt a varázslatos élmény miatt, amit ritkán tud

számítógépes program nyújtani. Emellett katonai kiképzésre, szimulációkra és

marketing célokra is használatos.

3. ábra – AR Autóreklám

1.3 A KONCEPCIÓ

Míg a világban nő az igény a háromdimenziós tartalom iránt, jelen pillanatban az

interakció igazán nehéz az ilyen technológiát használó eszközökkel. Ugyan nézhetünk

„kvázi” három dimenzióban filmeket és játszhatunk is háromdimenziós játékokkal, de a

lehetőségek igazán limitáltak. Nem kapunk valódi háromdimenziós élményt sem a

filmeknél, sem a játékoknál. Erre jelen pillanatban a kiterjesztett valóság az egyetlen

alternatíva. A cél az volt, hogy olyan programot készítsek, ami ennek a technológiának

a kihasználásával módot ad a felhasználónak, hogy a valóság kiterjesztése révén igazi

háromdimenziós élményben részesüljön és dolgozzon. Emellett fontosnak tartottam,

hogy létrehozzak egy olyan kommunikációs pragmatikát, aminek a segítségével intuitív

módon interakcióba is léphetünk a kiterjesztett világgal. Ezt a célt szolgálják azok a

bemeneti eszközök, amikkel vezéreljük a programot. Mindezen felül a koncepció

alapköve volt a használhatóság. A fontos irányelv az, hogy az újdonság ne csak a

Page 8: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 7 -

minden újjal járó varázslattal adja el magát, hanem a hasznosságával is. Nagy potenciát

látok a technológiában és azt gondolom, hogy a nem túl távoli jövőben a nehezen

használható háromdimenziós programokat részben fel fogja váltani egy kifinomultabb,

intuitívabb kiterjesztett valóság. Ha nem is a programokkal végzett munkafolyamat

minden láncszemét, de bizonyosan számos területet.

Page 9: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 8 -

2. FELHASZNÁLÓI DOKUMENTÁCIÓ

2.1 A PROGRAM RÖVID ISMERTETÉSE

A program neve AR Supervisor. A fő funkciója, hogy képes betölteni

háromdimenziós modelleket egy modellasztalra, ahol megnézhetjük és forgatási

transzformációkat hajthatunk végre ezeken a modelleken. Ezeket a transzformációkat

általam készített bemeneti eszközök (input devices) segítségével végezhetjük el. A

program vezérléséért négy darab eszköz felel; a modellezőasztal (ModelSlate), a talajt

reprezentáló lap (GroundSlate), egy tárcsa amivel a forgatás szögét állíthatjuk be

(RotationDisc) és egy másik tárcsa, amivel a forgatás tengelyét állíthatjuk (AxesDisc).

A tárcsák a főmenü előhívását követően a menüben való navigálást szolgálják. Az

eszközök a valóságban papírra nyomtatott markerek, amik rá vannak szerelve

kartonlapokra és tárcsákra, amikkel mozgathatjuk és forgathatjuk azokat. A program

használ továbbá egy webkamerát, aminek a feladata, hogy folyamatosan vegye az

eszközöket. A kamera képe lesz a felhasználói felület. Ahogy a valóságban

megváltoztatjuk az eszközöket, úgy kommunikálunk a programmal.

2.2 FELHASZNÁLT MÓDSZEREK

A program implementációját Visual Studio 2008-ban valósítottam meg

Windows 7 x64 operációs rendszer alatt. A Microsoft XNA keret fölött a GoblinXNA

keretrendszert használom a háromdimenziós grafika megjelenítésére, amit kiegészítek

az ALVAR könyvtárral, ami a markerek lekövetéséért (tracking) felelős. Hasonló

marker követésre írt könyvtár az ARTag is. Kézenfekvő volt a GoblinXNA használata,

hiszen átfogó keretet ad az augmented reality használatához, ugyanis biztosít interfészt

az ALVAR és az ARTag könyvtárakhoz is. Továbbá segítségével a háromdimenziós

jelenetek objektumai fa struktúrába szervezhetőek, aminek az előnyeire később

rámutatok.

Page 10: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 9 -

2.3 RENDSZERKÖVETELMÉNY

Minimális hardverkonfiguráció

Processzor 1.6 GHz CPU

Memória 384 MB RAM

Tárhely 250 MB tárterület

Videokártya

DirecX 9.0c-t támogató videokártya, legalább Shader Model 1.1

támogatásával

WebCamera VGA

Optimális hardverkonfiguráció

Processzor 2.4 GHz CPU

Memória 1024 MB RAM

Tárhely 250 MB tárterület

Videokártya

DirecX 9.0c-t támogató videokártya, legalább Shader Model 1.1

támogatásával

WebCamera VGA

Szükséges szoftverek

Operációs rendszer Microsoft Windows Xp, Vista, 7

Fejlesztéshez

XNA 3.1

GoblinXNA 3.5

Visual Studio 2008

ALVAR 1.4.0

OpenCV 1.0

Page 11: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 10 -

2.4 TELEPÍTÉSI ÚTMUTATÓ

Az első lépés az XNA Framework 3.1 keretrendszert telepítése. Ezt követi az

OpenCV 1.0 program telepítése. Az AR Supervisor program nem igényel telepítést.

A programhoz mellékelve vannak a felszerelt eszközök. Ha megrongálódnának

vagy elvesznének, a mellékelt lemezen megtalálhatóak a nyomtatáshoz szükséges

képfájlok is.

2.5 A PROGRAM HASZNÁLATA

2.5.1 INICIALIZÁLÁSA

A program az „AR_supervisor_pilot” futtatható fájl indításával

inicializál. Indítás után az alapértelmezett webkamera elindul, és innentől kezdve

használható a program. Figyelni kell arra, hogy alapértelmezettre legyen állítva a

kamera, amit használni szeretnénk.

Bármilyen állapotban indítható a program. Nincs szüksége arra, hogy az

eszközöket vegye a kamera, ugyanis amint érzékeli a markereket a program,

automatikusan regisztrálja őket és utat enged a funkcionalitásuknak. Első lépésben

elindítjuk a programot úgy, hogy a kamera az üres asztalt vegye, majd szépen sorban

felpakoljuk az asztalra az eszközöket.

4. ábra – Alapállapot, üres asztal

Page 12: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 11 -

A program felhasználói felülete az egyes eszközök felhelyezésével alakul ki. Az

eszközök hozzáadásának nincs kötött sorrendje, bárhová elhelyezhetőek az asztalon,

nincs megszabott pozíciójuk. Az eszközök pozícióijának változtatásával alakul a

felhasználói felület is. Elsőként a talajt reprezentáló eszköz, a „Ground Slate”

hozzáadása következik a valósághoz.

5. ábra – A Ground Slate hozzáadása a jelenethez

A Ground Slate reprezentálja a talajt, ezen felül egy nyíl segítségével mutatja a

kiválasztott forgatási világtengelyhez tartozó 0 fokot. A Ground Slate mindennek a

viszonyítási alapja. A segítségével számolható a különböző eszközök elfordulásának

szöge, amivel vezéreljük az alapállapot és a menü funkcionalitásait. Természetesen

szükség van még egy tárcsára is, amivel váltani lehet a világtengelyek között. A

következő eszköz neve „Axes Disc” .

6. ábra – Az Axes Disc hozzáadása a jelenethez

Page 13: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 12 -

Ez a tárcsa felel az aktuális világtengely kirajzolásáért és váltásáért. A tárcsát

pozitív vagy negatív irányba forgatva, a felhasználó által meghatározott szögben, a

tárcsa átváltja a tengelyt. A tengely határozza meg, hogy a kiválasztott modell, milyen

irányban forduljon el a háromdimenziós térben. Ennek a tárcsának három állapota van,

amivel három dimenzióban forgatható a modell. Az állapotok: X, Y és Z. Ha megvan a

Ground Slate és az Axes Disc akkor már csak a forgatás szögéért felelős „Rotation

Disc” és a modell transzformációs mátrixának meghatározásáért felelős „Model

Slate” hozzáadása szükséges. Következő a „Rotation Disc”.

7. ábra - A Rotation Disc hozzáadása a jelenethez

A Rotation Disc határozza meg az elfordulás szögét az Axes Disc által

meghatározott világtengelyen. Ezen felül kiegészíti a felhasználói felületet további

információkkal. Kirajzolja a tárcsa abszolút elfordulását a nullához képest, amit a

Ground Slate nyila határoz meg. Ez egy fekete színű szám a tárcsa fölött, ami nullától

háromszázhatvan fokig vesz fel értékeket. Kirajzolja továbbá az adott tengelyhez

tartozó elfordulás szögét pirossal. A kettő alapesetben meg fog egyezni, de ha

megváltoztatjuk a tárcsa precíziós értékét, akkor láthatóvá válik a különbség. Ez később

részletesebben kifejtésre kerül. Már csak egy dolog hiányzik, ez pedig a „Model

Slate”, ami fölött meg fog jelenni a kiválasztott modell, amire a program elvégzi a

felhasználó által meghatározott forgatási transzformációkat.

Page 14: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 13 -

8. ábra - A Model Slate hozzáadása a jelenethez

A Model Slate funkciója alapvetően egyszerű. Meghatározza, hogy a térben hol

jelenjen meg a modell. Ez az eszköz bármerre mozgatható a térben, a modell követni

fogja a mozgását. Ugyanez igaz a többi eszközre is.

2.5.2 EGYSÉGEINEK RÉSZLETES BEMUTATÁSA

2.5.2.1 VEZÉRLŐESZKÖZÖK ÉS A FELÜLET

A vezérlőeszközök segítségével kommunikálhat a felhasználó a programmal.

Ezen eszközök pozíciója határozza meg a felhasználói felület egységeinek helyzetét. A

program visszajelzései ezekhez az eszközökhöz vannak kötve, így szabadon és könnyen

átalakíthatóvá válik a program felülete. Ehhez csak el kell mozdítani a változtatni kívánt

eszközt.

Vezérlőeszközök és feladataik (9. ábra):

1) A Rotation Disc feladata meghatározni az elfordulás szögét.

2) A Ground Slate feladata meghatározni a kiválasztott tengelyhez tartozó nulla

fokot.

3) Az Axes Disc feladata meghatározni az elfordulás tengelyét.

4) A Model Slate feladata kijelölni a modell helyét a térben.

Page 15: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 14 -

9. ábra – A vezérlőeszközök

2.5.2.2 ÁLLAPOTOK

A programnak felhasználói szinten két állapota van (10. ábra):

Alapállapot (Base State): Alapállapotban a program fő funkcionalitását érheti el

a felhasználó. Ebben az állapotban forgatható és elmozdítható a modell a térben.

Ezen felül kibővíthető a felhasználói felület felhasználói interakcióval anélkül,

hogy a menüt elő kellene hívni. Ebben az állapotban a program minden

változtatásról visszajelzést küld a felhasználónak a megváltoztatott eszköz fölött

megjelenő panelen.

Menü (Menu State): A Menüben beállítások találhatóak, amikkel személyre

szabható a program viselkedése. Többek között be lehet állítani a tárcsák

érzékenységét (Disc Precision), a használni kívánt modellt vagy annak színét. A

menüben való navigációért a tárcsák felelnek ugyanúgy, ahogy az

alapállapotban is, ezek használatosak a programmal való kommunikációra.

Page 16: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 15 -

10. ábra – Az alap és a menü állapot

2.5.3 VEZÉRLÉSE

2.5.3.1 A HASZNÁLAT ELŐFELTÉTELE

Miután minden eszközt lát a kamera, elkezdődhet a programmal való munka.

Ahhoz, hogy minden funkció működjön, szükséges hogy a kamera mind a négy eszközt

egyszerre lássa. Nem jelent ugyan problémát, ha valamelyik eszközt takarásba kerül,

ugyanis a program figyel arra, hogy konzisztensen tárolja az adatokat, de amíg ki van

takarva az eszköz, addig nem használható a funkciója.

2.5.3.2 HÁTTÉRTUDÁS

A Ground Slate fölött megjelenő nyíl, ami a nulla fokot mutatja, a program

kezdeti inicializálásakor beáll a Rotation Disc tárcsa piros sugarával megegyező

irányba, mutatva, hogy kezdőállapotban arra van a null szög. Tudni kell továbbá, hogy

amint tengelyt vált a felhasználó, a nyíl igazodni fog az adott tengelyhez eltárolt

forgatási transzformációknak megfelelő aktuális null szöghöz. (11. ábra)

Page 17: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 16 -

11. ábra - Ground Slate nyíl null fokban

A Rotation Disc rendelkezik két sugárral. Az egyik piros színű, a másik pedig

világosszürke. A piros és a szürke sugár alapállapotban egy irányba áll. A piros sugár

jelzi az elfordulás szögét a null foktól, a szürke sugár pedig arányosan úgy változik,

hogy a piros és a szürke közötti szög pontosan megfeleljen az elfordulásnak a

kiválasztott tengelyen. (12. ábra).

12. ábra – A képen a sárga görbe jelzi az elfordulás szögét

2.5.3.3 A GIROSZKÓP

Fontos megérteni, hogy a program a forgatási transzformációkat egy

háromdimenziós Euler térben végzi, amit a legegyszerűbben úgy lehet elképzelni, mint

egy giroszkópot (13. ábra).

Page 18: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 17 -

13. ábra - Giroszkóp

Hogy nyomon tudjuk követni a forgatásink eredményét, a program rendelkezik

egy saját giroszkóppal, amit a modell köré képes rajzolni. Ezt előhívva megfigyelhető,

hogy melyik tengely körül, mekkora szöggel lett elforgatva a modell.

Ha a felhasználó megérinti a Model Slate felületét, akkor előtűnik a giroszkóp a

modellel együtt (14. ábra). Ugyanezzel a mozdulattal el is rejthető. Továbbá lehetőség

van arra, hogy a menüben tegyük láthatóvá vagy rejtsük el a giroszkópot.

14. ábra - A Giroszkóp előhívása

A giroszkóp a tér három dimenzióját reprezentálja. A forgatás a tér abszolút

tengelyei körül történik. Amint az Axes Disc tárcsa segítségével átváltjuk a tengelyt, a

giroszkóp annak a tengelynek megfelelő kört jelöli ki számunkra. Minden körön

található két-két tüske, amik a forgatás irányát hivatottak mutatni (15. ábra).

Page 19: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 18 -

15. ábra - A forgatás iránya

2.5.3.4 A TENGELYEK

Az Axes Disc tárcsa felelős a tengelyek váltásáért. A tárcsát pozitív vagy negatív

irányba forgatva, a felhasználó által megadott szögenként tengelyt vált a tárcsa (16.

ábra). A kiválasztott tengely színe sárgára vált, jelezve a kijelölést. Ezzel egy időben

igazodik hozzá a giroszkóp kijelölése és a Rotation Disc sugarai. A tárcsa

alapbeállításként harminc fokonként vált szöget. Ez a menüben módosítható egy és

százhúsz fok közötti értékre.

2.5.3.5 A FORGATÁSI SZÖG BEÁLLÍTÁSA

A forgatás szögének beállításáért a Rotation Disc tárcsa felelős. A tárcsa

forgatásával állítható a kijelölt tengelyen való forgás szöge. A tárcsához tartozó panel

kiírja az elfordulás szögét fokokban, piros színnel (16. ábra).

Page 20: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 19 -

16. ábra – Forgatási szög beállítása és a tengely váltása

2.5.3.6 A MODELLASZTAL HASZNÁLATA

A Modellasztal (Model Slate) jelöli a modell pozícióját a térben. Valamivel

nagyobb a többi eszköznél, és különleges alakja van, ami ergonómiai és technikai

célokat szolgál. Ergonómiai szempontból egyértelműen elkülöníthetővé és

felismerhetővé teszi a modellasztalt a többi eszköztől. Technikai szempontból pedig a

lekerekített sarkai miatt kisebb eséllyel takar ki más eszközöket a világban, ami fontos,

hiszen a Modellasztal mozgatása, kamerához emelése szükséges lehet. Ilyen esetben a

modell követni fogja a mozgását, miközben megtartja a tárcsákkal beállított forgatási

értékeket is. A modell körül lévő opcionális giroszkóp, ami a Modellasztal markerének

megérintésével ki és bekapcsolható, hasonlóan viselkedik (17. ábra).

17. ábra - A Modellasztal

Page 21: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 20 -

2.5.3.7 A MENÜ ELÉRÉSE

A Menü előhívásához meg kell érinteni az Axes Disc markerét (18. ábra). A

marker megérintésének sebessége fontos tényező, ugyanis az határozza meg, hogy a

program meghívja-e a menüt vagy sem. Ezt a sebességet „Click Speed” – nek

nevezzük. Alapesetben fél másodpercre van állítva, ami azt jelenti, hogy ha a

felhasználó megérinti a markert, és fél másodpercen belül le is veszi róla a kezét, akkor

megjelenik a menü. A sebesség azt a célt szolgálja, hogy megvédje a felhasználót attól,

hogy véletlenül meghívja a menüt, mikor nem azzal a céllal takarta ki a markert.

18. ábra – A Menü elérése

2.5.3.8 A MENÜ ELEMEI

Négy féle Menüelemet különböztetünk meg:

Almenü Gomb (Submenu Button)

Kapcsoló (Swich)

Csúszka (Slider)

Rádió Gomb (Radio Button)

2.5.3.9 A MENÜBEN VALÓ NAVIGÁLÁS

A Menüben való navigálás a Rotation Disc és az Axes Disc tárcsákkal

vezérelhető. Ekkor a két tárcsa viselkedése eltér az alaphelyzettől. A Menüben a

Rotation Disc forgatásával választhatóak ki a főmenü menüpontjai, az Axes Disc

segítségével pedig a kiválasztott menüponthoz tartozó tulajdonság állítható be. Almenü

Gomb esetén például az almenüben való kijelölés fel és le irányba mozgatását végezzük

vele (19. ábra). Kapcsoló esetén a kapcsoló állapotát változtatjuk meg, Csúszka esetén

pedig annak az értékét állíthatjuk vele.

Page 22: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 21 -

19. ábra - A Menüben való navigálás

2.5.3.10 A MENÜPONTOK

A Menü beállításai határozzák meg a program működését, a menüt pedig a

menüpontok beállításai határozzák meg. A program elindítását követően minden

menüpontot be kell állítani. Ha ez megtörtént, a menü megjegyzi a beállításokat, és

amíg fut a program, az aktuális beállításokat használja.

2.5.3.10.1 MODELS MENÜPONT

A navigációs részben bemutatott módon itt választható ki a megjeleníteni kívánt

modell. Amint kijelölődött a modell, a menü beregisztrálja, és amint visszalépünk az

alapállapotba, betölti a modellt a giroszkóp közepére, alkalmazva rá az eddigi

forgatásokat.

2.5.3.10.2 MODEL COLOR MENÜPONT

A navigációs részben bemutatott módon itt választható ki a megjeleníteni kívánt

modell színe. A kijelölt színt a menü elmenti és alapállapotba lépéskor alkalmazza.

Nincs szükség a kijelölés véglegesítésére sem itt, sem a modell kiválasztásánál. A menü

az alapállapotba lépéskor az aktuálisan kijelölt menüelemeknek megfelelően állítja be a

programot.

Page 23: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 22 -

2.5.3.10.3 MANIPULATORS MENÜPONT

A Manipulators kapcsoló a modell köré kirajzolt giroszkópot kapcsolja ki és be.

2.5.3.10.4 CLICK SPEED MENÜPONT

A Click Speed menüpontban állítható be a Menü és az Alapállapot közötti

váltógomb, az Axes Disc markerének megérintési sebessége. Száz és ezer közötti

értéket vehet fel, ami ezredmásodpercben értendő. A választott érték függhet egyéni

igénytől vagy fényviszonyoktól is.

2.5.3.10.5 PRECISION OF ROTATION DISC MENÜPONT

Ezzel a csúszkával állítható be a Rotation Disc érzékenysége. Végeredményben

ez egy szorzó, amivel felszorozzuk a Rotation Disc forgási szögét. Tehát egyre állítva

nem változtat, de ha kilencven fokkal elfordul a tárcsa, kilencven fokkal elfordul a

modell is. Azonban például, ha kettőre állítja a felhasználó, akkor a tárcsa kilencven

fokos elfordulása esetén a modell száznyolcvan fokkal fordul el. Maximális értéke tíz.

2.5.3.10.6 PRECISION OF AXES DISC MENÜPONT

Ezzel a csúszkával állítható be az Axes Disc érzékenysége. Az itt megadott értéket

fokban kell érteni. Meghatározza azt a szöget, amivel elforgatva az Axes Disc tárcsát, az

tengelyt vált. Könnyen megérthető, hogy ha egy kör háromszázhatvan fok, és három

tengely közül lehet választani, akkor ennek a tárcsának a maximális értéke százhúsz

lesz.

Page 24: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 23 -

3. FEJLESZTŐI DOKUMENTÁCIÓ

3.1 FELHASZNÁLT MÓDSZEREK

A program célja a valóság kiterjesztése, plusz információval való felruházása,

majd ezen információk összefésülése és egységes megjelenítése. Ehhez szükséges a

valóság és a virtuális tartalmak szinkronba hozása. Ezen technológia megvalósítása

érdekében felhasználtam a GoblinXNA v3.5 és az ALVAR 1.4.0 könyvtárakat, amik

segítségével létre hozhatóak és értelmezhetőek a markerek, amikkel együtt a

szinkronizálni kívánt virtuális tér beállíthatóvá válik. Így létrehozható a valóság

kiterjesztése, és a kiterjesztéshez használt eszközökkel való vezérlése.

Az én megvalósításomban nem csupán a jeleket használom fel, hanem

létrehozok valós eszközöket, amik vezérlik ezeket a jeleket megadott tulajdonságokkal

felruházva azokat. Ilyen eszköz például a tárcsa, amivel valós térbeli kétdimenziós

forgatást végezhet a felhasználó. Lényegében ez egy megszorítás az adott eszközre. A

feladata csupán a kétdimenzióban történő forgatási információk definiálása. Ennek

érdekében létrehoztam ennek a tárcsának az absztrakt, program szintű definícióját, ami

értelmezi és eltárolja ezeket az információkat.

Egy jel nem más, mint egy fekete négyzet alakú keret, ami fekete és fehér

mintákkal van kitöltve. Gyakorlatilag képinformációban tárolt háttérinformáció. Úgy

lehet elképzelni, mint a QR kódot. Egy ilyen jelbe bele van kódolva az azonosítója,

amelyre a programban lehet hivatkozni. A képinformáció, mint vizuális tartalom, fontos

része a jel felismerésének. Ennek a tudatában értelmezi a program a jel térbeli

mozgását, ugyanis minden különböző szögben felvett markerállapot egyértelműen

meghatározza, hogy milyen módon változott a marker helyzete a valós térben. Erre az

információra alapozva, létrehozható kiterjesztett valóságot használó program.

20. ábra - Példa Markerre

Page 25: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 24 -

3.2 FELHASZNÁLT ESZKÖZÖK

3.2.1 IMPLEMENTÁCIÓ ÉS KÖNYVTÁRAK

A program implementációját Windows 7 x64 operációs rendszer alatt

valósítottam meg. Fejlesztői környezetként a Microsoft Visual Studio 2008-at

használtam, kiegészítve a szükséges függvénykönyvtárakkal. A program készítésénél

nagy hangsúlyt kapott az osztályszintű tagoltságot, az egymással kommunikáló

objektumok, a jól használhatóság, a bővíthetőség lehetősége, valamint egy új

kommunikációs modell kifejlesztése ember és program között.

A fejlesztéshez felhasznált könyvtárak: Microsoft XNA Game Studio 3.1,

GoblinXNA v3.5, ALVAR 1.4.0, DirectShow, OpenCV 1.0, Nuclex Vector Graphix

Framework, CMake 2.8.0

A fejlesztéshez használt hardverkörnyezet:

CPU: Intel Core 2 Duo SU7300 1.3Ghz

Memória: 4 GB RAM

GPU: NVidia GeForce GT 335M

Webkamera: Cyris icon7 Webcam

3.2.2 MICROSOFT XNA GAME STUDIO 3.1

A Microsoft játékfejlesztéshez készített rendszere. .NET keretrendszer az alapja

és C# nyelven zajlik rá a fejlesztés. Lehetőséget nyújt mind Windows, mind XBOX 360

játékkonzolra való fejlesztéshez. Az XNA Game Studio szükséges a program

fejlesztéséhez és a futtatásához is.

3.2.3 GOBLINXNA V3.5

A GoblinXNA egy plusz függvénykönyvtár Augmented Reality programok

készítéséhez, a Microsoft XNA Game Studio fölé. Segítségével fa struktúrába

szervezhetőek a világ objektumai, amik a szerkezeti sajátosságból adódóan logikai

Page 26: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 25 -

kapcsolatban állnak egymással. A jelenhez az objektumokat a rendszer a fa preorder

bejárásának sorrendjáben adja hozzá.

3.2.4 ALVAR 1.4.0

Az ALVAR könyvtár a Finn VTT Technical Research Centre fejlesztése. A

könyvtár felel a markerek lekövetéséért, Augmented Reality technológia

felhasználásával. Az ALVAR segítségével lehet létrehozni saját jeleket és kalibrálni a

kamerát. Csupán a program működéséhez szükséges, a GoblinXNA könyvtár

fordításához nem, csak a fejlesztéshez van rá szükség.

3.2.5 DIRECTSHOW

A DirectShow, a DirectX multimédiás tartalmainak kezeléséért felelős. Jelen

esetben a kamera képének feldolgozásáért és megjelenítéséért. Windows 7 x64

rendszeren az alap DirectShowCapture Device helyett egy kiterjesztett interfészt

megvalósító osztályt használtam a DirectShowCapture2–t. Az architektúra sajátosságai

miatt elengedhetetlen volt az összetettebb interfész. A GoblinXNA könyvtár

fordításához szükséges.

3.2.6 OPENCV 1.0

Az OpenCV (Open Source Computer Vision) az Intel Corporation fejlesztése. A

grafikus megjelenítést támogató könyvtár. A GoblinXNA fordításához, az Alvar 1.4.0

könyvtár használatához, valamint a kamera kalibrálásához szükséges.

3.2.7 CMAKE

A CMake egy keresztplatformos, fordítóprogram. Az ALVAR 1.4.0 fordításához

felhasznált eszköz.

Page 27: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 26 -

3.3 A PROGRAMOZÁSI KÖRNYEZET ÖSSZEÁLLÍTÁSA

3.3.1 GOBLINXNA V3.5

Az első lépés a Microsoft Visual Studio 2008 Professional Edition fejlesztői

környezet telepítése, majd a Service Pack 1, vagy a Microsoft Visual C# 2008

Express Edition telepítése.

Miután a Visual Studio feltelepült, második lépésként fel kell telepíteni a

Microsoft XNA Game Studio 3.1-et, ami elérhető a Microsoft weboldaláról.

Következő lépés az egyik tracking könyvtár letöltése, amit a GoblinXNA

támogat. ALVAR vagy ARTag. Én az ALVAR könyvtárat használtam a

programomhoz így annak a telepítését mutatom be; Először fel kell telepíteni az

ALVAR 1.4.0-et, és az OpenCV 1.0 programot. Az utóbbi az ALVAR

fordításához szükséges. Ezután meg kell nyitni az ALVARWrapper1.4.sln

projectet a GoblinXNA/wrappers/ALVARWrapper1.4 könyvtárban. Le kell

fordítani és a generált ALVARWrapper.dll fájlt a

GoblinXNA/wrappers/ALVARWrapper1.4/Release könyvtárból át kell másolni a

GoblinXNA/dlls/unmanaged könyvtárba. Mikor a fordítás megtörtént, meg kell

bizonyosodni arról, hogy az “Additional Include Directories” a Configurations

Properties → C/C++ → General és a “Additional Library Directories” a

Configurations Properties → Linker → General alatt a project beállításainál a

megfelelő útvonal van megadva az ALVAR 1.4.0-hoz és az OpenCV 1.0-hoz.

Következő lépésben át kell másolni az alvar140.dll és az

alvarplatform140.dll fájlokat az Alvar1.4.0/bin/msvc90 könyvtárból, a

GoblinXNA/dlls/unmanaged könyvtárba. Végül a cv100.dll,

cvaux100.dll, cvcam100.dll, cxcore100.dll és a

highgui100.dll fileokat az OpenCV/bin könyvtárból szintén a

GoblinXNA/dlls/unmanaged könyvtárba kell másolni.

Miután minden szükséges fájl a megfelelő helyre került, meg kell nyitni a

GoblinXNA.sln fájlt a GoblinXNA/src könyvtárból, és le kell fordítani. Ha a

fordítás sikeresen lefutott, a GoblinXNA/bin könyvtárban megjelenik a

GoblinXNA.dll fájl.

Page 28: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 27 -

3.3.2 A KAMERA KALIBRÁLÁSA

Szükségünk lesz egy GoblinXNA toolra aminek a segítségével kalibrációs file

generálható, ami megfelel az általunk használt kamera profiljának. Ez a

C:\Users\Username\Documents\GoblinXNAv3.5\tools\CameraCalibration mappában

található. Itt meg kell nyitni a "CameraCalibration.sln" Visual Studio projectet.

Következő lépésben fordítani és futtatni kell a projectet. Ekkor megjelenik a kiválasztott

kamera képe. A kamera látószögébe kell helyezni az ALVAR keretrendszerhez járó

PDF file nyolcadik oldalán található sakktábla kinyomtatott képét ami a

SampleCamCalib nevet viseli. Ekkor a kamera feltérképezi a sakktáblát, és ennek a

segítségével beállít egy kameraprofilt, ami megfelel a felhasználó által használt kamera

tulajdonságainak. Ilyen tulajdonság például a látószög vagy a fókusztávolság. Ezek a

tulajdonságok mind befolyásolják a markerek feltérképezésének és követésének

beállításait. A tool hozzávetőlegesen ötven képet készít a sakktábláról, majd elemzi a

képeket és készít egy „calib.xml” filet a "bin\x86\Debug" mappába, amit be kell

másolni a project mappájába. Ezzel definiálva vannak a kamera tulajdonságai.

Page 29: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 28 -

3.4 GOBLINXNA FELÉPÍTÉSE

3.4.1 A SZÍNTÉR GRÁF

A GoblinXNA egy speciális gráfot épít fel amit preorder fabejárást alkalmazva

értékel ki.

Ennek a fának tíz féle csúcsa (node) lehet:

Geometry

Transform

Light

Camera

Particle

Marker

Sound

Switch

LOD (Level Of Detail)

Tracker

Ezek közül, hat féle csúcsnak lehet gyereke, ezeket zöld színnel jelöltem.

21. ábra – GoblinXNA példa színtér gráf

Page 30: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 29 -

Az ábrán egy színtér gráf hierarchiája látható. A fa tulajdonsága, hogy

módosítások esetén a gyerekcsúcsokra is kihat az őstől származó változtatás. Így, ha

egy Transform csúcs változtat egy transzformáción, akkor az összes alatta lévő csúcson

is megtörténik ez a változtatás.

A zöld csúcstípusoknak van két fontos tulajdonsága:

Enabled

Igaz és hamis értékeket vehet fel. Hamis értékre állítva önmagát és a gyerek

csúcsokat is kiveszi a gráf csúcsainak listájából, aminek a következtében nem

vesznek részt a bejárásban, így nem adódnak hozzá a jelenthez.

Prune

Az enabled tulajdonsághoz képest itt csak a gyerek csúcsok kerülnek ki a

csúcsok listájából, maga az aktuális csúcs nem.

A program fejlesztése során négy féle csúcstípust használtam:

Geometry

Transform

Light

Marker

3.4.1.1 A FONTOSABB CSÚCSFAJTÁK

Geometry node:

A geometry csúcs tartalmazza a modellt, ami megjelenik a képernyőn. A csúcsot

létre lehet hozni különféle model fájlokból (.x, .fbx), vagy lehet használni beépített

modelleket, mint például: Kocka (Cube), Gömb (Sphere).

Néhány fontosabb tulajdonság (property):

Anyag beállítás (Material):

Szín, fényesség, textúra beállításai.

Áttetszőség (Occlusion):

Ha az occluder tulajdonság be van kapcsolva, a model nem látható a

színtérben, viszont megmaradnak a fizikai tulajdonságai, például képes

árnyékokat fogadni és vetni.

Page 31: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 30 -

Hálózati beállítás (Network):

Hálózati beállításokat tartalmaz.

Transform node:

A transform csúcs tartalmazza az objektumok transzformációs beállításait. A

csúcs segítségével lehet pozícionálni, forgatni, nagyítani.

Light node:

Egy light csúcs tartalmazza a színtér egy fényforrását. A fényforrásnak

különböző beállításai lehetnek. További két fontos tulajdonság található minden

fényforrás beállításai között: szórt fény, illetve a visszaverődő fény színének beállítása.

Három fajta fényforrás használatos leggyakrabban: Spotfény (Spot Light), Pontfény

(Omni), Irányfényforrás (Directional Light).

Marker node:

A markerek geometriai sémák. Ezek valamilyen felületre vannak kinyomtatva,

ami általában fehér papír. A markerek elmozdulását érzékeli és értelmezi a kamera. A

jel észrevételekor, speciális algoritmusokkal meghatározza a térbeli pozíciót és

orientációt, és módosítja a transzformációs mátrixot. Mielőtt a marker csúcsot

használják, inicializálni kell a marker tracker-t, valamint a video rögzítő eszközt.

A GoblinXNA automatikusan bejárja a gráfot és kirajzolja a végleges,

kompozitált képet. A színter gráfjának egy úgynevezett Scene osztályból a kiinduló

pontja. Ez az osztály tartalmazza és kezeli a fa gyökerét. A Scene.RootNode opcióval

lehet elkezdeni a fa építését. A fa tetszőleges mélységű lehet.

Page 32: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 31 -

3.5 A PROGRAM FELÉPÍTÉSE

3.5.1 A PROGRAM ÉLETTARTAMA

A program élettartama három fő részből áll:

Initialize

Update

Draw

Az Initialize ahogy a nevéből is kiderül egyszer lefut a program indításakor, utána

az Update és a Draw metódusok váltogatják egymást. Ez az XNA alapvető felépítése.

Az Update rész felel a programon belüli módosításokért, a Draw metódus pedig a

kirajzolásért. Megtalálható továbbá egy LoadContent(), illetve egy UnloadContent()

metódus. A LoadContent részben lehet implementálni a felhasznált fájlok betöltését.

Szükség van továbbá a GoblinXNA környezethez, ezért azt manuálisan kell beállítani.

A „Solution Explorer” ablakban, a képernyő jobb oldalán, jobb klikk a „Reference”

pontra, majd ki kell választani az „Add Reference…” opciót. Itt meg kell adni a

legenerált GoblinXNA.dll fájt, a GoblinXNA/bin könyvtárban. Minden egyéb

referencia, amit a GoblinXNA használ, előzőleg be lett másolva a

GoblinXNA/dlls/unmanaged könyvtárba, így a Visual Studio automatikusan be fogja

másolni a projectbe, így nem kell külön egyesével hozzáadni a dll fájlokat

referenciaként.

Az ALVAR könyvtár használatához a referenciák közé fel kell venni az

ALVARWrapper.dll fájlt.

Miután minden be lett állítva, a „using GoblinXNA;” sort be kell írni a program tetején.

Innentől kezdve használható a GoblinXNA környezet.

Page 33: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 32 -

3.5.2 AZ OSZTÁLYSZERKEZET

A programban használt osztályok:

_3DofDisc (Three Degrees of Freedom Disc)

A _3DofDisc osztály a tengelyek kiválasztásához használt tárcsát

megvalósító szerkezet. Ez a modul kulcsfontosságú szerepet tölt be a

program felépítésében. Egy ilyen típusú objektumhoz csatlakozik a

program összes többi vezérlő eszköze.

Axes (Tengelyek)

Az Axes típusú objektum a _3DofDisc osztály egyik fontos részét képezi.

Regisztrálja a kiválasztott tengelyeken való elfordulások értékét, és a

hozzájuk tartozó plusz információkat.

Disc (Tárcsa)

A _3DofDisc egyszerűsített változata. Működési logikája hasonló, de

funkcionalitása redukált; Képes meghatározni saját elfordulási szögét és

információt küldeni róla a felhasználónak, de ezt az értéket nem ő

használja, hanem több más programmodul.

Gyroscope (Giroszkóp)

Megvalósít egy virtuális giroszkópot, ami a fizikai világ szabályaihoz

igazodva működik, és szemléletesen mutatja a modell körül a forgatások

eredményét.

Menu (Menü)

A Menu osztály megvalósítja a program beállításaiért felelős menü

felületét és logikáját, emellett a navigálás egyedi logikáját és protokollját

is tartalmazza.

MenuItem (Menüelem)

A menü elemeinek absztrakt ősosztálya. Belőle származik a négy

menüelem típus.

PerifericDevice (Periférikus Eszköz)

A PerifericDevice három féle eszköz ősosztálya, amik a _3DofDisc, Disc

és a Slate osztályok.

Program

A főprogram. Innen indul a program fő eseménykezelő ciklusa.

Page 34: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 33 -

RadioButton (Rádió Gomb)

Az alap Radio Buttont a kiterjesztett valóság vezérlésére használt

eszközök működéséhez igazodva újradefiniált osztály.

Slate (Tábla)

PerifericDevice ősosztályból származó lap, vagy tábla eszköz ami egy

markert tartalmazva meghatároz transzformációs tulajdonságokat.

Slider(Csúszka)

A MenuItem absztrakt ősosztályból származó csúszka az alap csúszka

kiterjesztett valóság vezérlésére használt eszközök működéséhez

igazodva újradefiniált menüelem. Értéket vesz fel a tárcsa

vezérlőeszközöktől és letárolja azokat.

SubMenuButton(Almenügomb)

A MenuItem absztrakt ősosztályból származó almenüt tartalmazó gomb a

menüben.

supervisor(felügyelő)

A program keretét adja. Tartalmazza az alapvetően szükséges XNA

metódusokat, és emellett az eszközök és a fények definiálására

létrehozott metódusokat. Ez az osztály három részosztályból áll (partial

class): supervisor, MenuState, BaseState. A két State osztály az állapotok

kezelését felügyeli.

Switch(Kapcsoló)

A MenuItem absztrakt ősosztályból származó Switch az alap kapcsoló

kiterjesztett valóság vezérlésére használt eszközök működéséhez

igazodva újradefiniált menüelem.

Text3DInfo

A Nuclex Framework Vektoros háromdimenziós szövegvetítési

módszerén alapuló térbeli információs panelt valósít meg.

Page 35: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 34 -

22. ábra - Teljes osztály és objektumdiagram I

Page 36: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 35 -

23. ábra - Teljes osztály és objektumdiagram II

Page 37: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 36 -

3.5.2.1 SUPERVISOR OSZTÁLY

A program keretét a Supervisor class adja. Ez az osztály tartalmazza az alap

Initialize, Update, Draw, LoadContent és UnloadContent metódusokat. Ezek mellett a

CreateDevices, CreateLights és SetupMarkerTracking metódusok is itt kaptak helyet. A

metódusok harmadik csoportját alkotják az állapotváltásért felelős programblokkok.

Ezek a ChangeState és a ChangeManipulatorState metódusok.

A CreateDevices metódus létrehozza az összes PerifericDevice vagyis vezérlő

eszköz objektumot és megfelelő módon össze is kapcsolja a logikailag összefüggő

eszközöket, az eszközök Connect metódusain keresztül.

A ChangeState metódus egy timer Elapsed eseményének eseménykezelő

függvénye. Feladata a két főállapot közötti váltás; Alap és Menüállapot, ezek supervisor

osztály egy-egy részosztályában vannak definiálva. Közöttük a váltás a tengelyeket

reprezentáló tárcsa megfelelően rövid ideig tartó kitakarásával történik.

A ChangeManipulatorState metódus egy timer Elapsed eseményének

eseménykezelő függvénye. A modellt tartalmazó eszközt kitakarva ki és bekapcsolja a

giroszkópot.

24. ábra - A supervisor osztály diagramj

Page 38: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 37 -

3.5.2.1.1 BASESTATE RÉSZOSZTÁLY

A supervisor osztály egy részosztálya. Ez felel az alap állapotban történő

események kezeléséért. Itt inicializálódnak azok az eszközök, amik a supervisor osztály

CreateDevice metódusában vannak példányosítva. Alapállapotban a felhasználó a

program alapvető funkcionalitását használhatja, vagyis térbeli forgási transzformációkat

alkalmazhat a kiválasztott modellre, a vezérlőeszközök segítségével. Lekezeli a

különböző speciális periférikus eszközökről érkező felhasználói inputokat, mint például

a giroszkóp ki és bekapcsolása, vagy a menü megjelenítése.

25. ábra - A BaseState részosztály diagramja

3.5.2.1.2 MENUSTATE RÉSZOSZTÁLY

A supervisor osztály egy részosztálya. Ez felel az menü állapotban történő

események kezeléséért. Ebben az állapotban elvesszük az irányítást az alap

funkcionalitástól, és átadjuk a menünek. A Menu osztály két fő metódusát hívja,

amikkel a főmenü fókuszát, és az aktuális főmenüelem funkcióját állítja be.

26. ábra - A MenuState részosztály diagramja

Page 39: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 38 -

3.5.2.2 PERIFERICDEVICE OSZTÁLY

A PerifericDevice absztrakt osztály három féle eszköz ősosztálya, amik a

_3DofDisc, Disc és a Slate osztályok. Ezen eszközök alapvető definícióit tartalmazza.

Főbb metódusai az InitDevice, ConnectGroundSlate, UpdateAngle, ChangeModelTo,

AddGyroscope.

3.5.2.2.1 INITDEVICE METÓDUS

Az eszközhöz tartozó marker, geometry node, transformation node, model, és

material objektumok inicializálásáért, és a jelenet gráfjának egy részgráfjának

felépítéséért felelős. A szükséges beállításokat a konstruktorban kell megadni.

3.5.2.2.2 CONNECTGROUNDSLATE METÓDUS

Az eszközhöz hozzácsatolja a talajt reprezentáló eszközt, ami szükséges az

elfordulás szögének kiszámításához.

3.5.2.2.3 UPDATEANGLE METÓDUS

Frissíti az eszköz elfordulási szögét automatikusan, a csatolt GroundSlate null

szöge alapján.

3.5.2.2.4 CHANGEMODELTO METÓDUS

Frissíti az eszköz által megjelenített modellt a paraméterként megadott modellre.

Ezt a modellt a resources-ból választja ki a program. A ModellSlate eszköz

modellváltására használja a program.

3.5.2.2.5 ADDGYROSCOPE METÓDUS

Hozzáad egy sztenderd giroszkópot, az eszközhöz.

Page 40: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 39 -

27. ábra - A PerifericDevice osztálydiagramja

3.5.2.3 _3DOFDISC OSZTÁLY

_3DofDisc a three degrees of freedom rövidítése. A PerifericDevice-ból

származó eszköz osztály. Valójában ez egy kétdimenziós forgási transzformációk

követését szolgáló eszköz osztály. A valóságban egy tárcsa forgásának értékeit figyeli,

és regisztrálja. Az ok, amiért háromdimenziós eszköznek hívom az, hogy rendelkezik

egy Axes típusú objektummal, ami képes tárolni és kiszámolni mind a három

világtengelynek megfelelő forgatási értékeket. A programban egy ilyen objektum kapott

helyet, ami az egész rendszernek az agya. Hozzá van csatolva az összes többi eszköz,

amikkel szoros logikai kapcsolatot tart fent.

Főbb metódusai a connectAssociateDisc, connectModelSlate, setPrecision,

updateGroundTransformation, PrintAxesDisplay, updateAssocDiscTransformation,

updateModelTransformation.

Page 41: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 40 -

3.5.2.3.1 CONNECTASSOCIATEDISC METÓDUS

Csatolja a forgatási szöget definiáló eszközt, a RotationDisc-et.

3.5.2.3.2 CONNECTMODELSLATE METÓDUS

Csatolja a ModelSlate eszközt, a későbbi kommunikációhoz.

3.5.2.3.3 SETPRECISION METÓDUS

Beállítja a tárcsa precízióját a paraméterként megadott értékre, ami ezen osztályt

megvalósító objektumok esetén azt jelenti, hogy mekkora elfordulási szög kell a tengely

váltásához.

3.5.2.3.4 UPDATEGROUNDTRANSFORMATION METÓDUS

A GroundSlate nyíl modelljét aktuális tengelynek megfelelő null fokba állítja.

Csak akkor működik, ha csatolva van CroundSlate.

3.5.2.3.5 PRINTAXESDISPLAY METÓDUS

Kirajzolja a tengelyeket a térbe, a megjelenítő vezérlőeszköz fölé.

3.5.2.3.6 UPDATEASSOCDISCTRANSFORMATION METÓDUS

Frissíti a RotationDisc fölé kirajzolt forgatási szöget reprezentáló sugarat. Csak

akkor működik, ha csatolva van RotationDisc.

3.5.2.3.7 UPDATEMODELTRANSFORMATION METÓDUS

Frissíti a modell kiválsztott tengelyén a forgási transzformációt. Csak akkor

működik, ha csatolva van ModelSlate.

Page 42: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 41 -

28. ábra - A _3DofDisc osztály diagramja

3.5.2.4 DISC OSZTÁLY

Disc (tárcsa) osztály A _3DofDisc egyszerűsített változata. Működési logikája

hasonló, de funkcionalitása redukált; Képes meghatározni saját elfordulási szögét és

információt küldeni róla a felhasználónak, de ezt az értéket nem ő használja, hanem

több más programmodul. Többek között az AxesDisc frissíti a transzformációját miután

hozzácsatoltuk a Disc objektumot. A felhasználó és a program közötti kapcsolat a

Tárcsa szemszögébő is reprezentálható (30. ábra).

29. ábra – A Disc osztály diagramja

Page 43: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 42 -

30. ábra - A rotation és axes tárcsák működési elve

3.5.2.5 SLATE OSZTÁLY

PerifericDevice ősosztályból származó lap, vagy tábla eszköz ami egy markert

tartalmazva meghatároz transzformációs tulajdonságokat. Metódusai megegyeznek a

PerifericDevice metódusaival. A ModelSlate objektum és a GroundSlate objektum

implementálja ezt az osztályt. A következő ábrán bemutatom, hogy milyen a

kompozíciós kapcsolat a valóságban végrehajtott transzformáció és a virtuális tér

között. Ezt a ModelSlate segítségével reprezentálom (32. ábra).

Page 44: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 43 -

31. ábra - A Slate osztály diagramja

32. ábra - A felhasználó és a program kompozíciós kapcsolata

Page 45: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 44 -

3.5.2.4 AXES OSZTÁLY

Az Axes típusú objektum a _3DofDisc osztály egyik fontos részét képezi.

Regisztrálja a kiválasztott tengelyeken való elfordulások értékét, és a hozzájuk tartozó

plusz információkat.

Főbb metódusai:

setFocusOn, setYawPichRoll, calculateGap, getSelectedAxisAngle.

3.5.2.4.1 SETFOCUSON METÓDUS

Beállítja a kiválasztott tengelyt, és elvégzi a szükséges felületi változtatásokat a

kirajzoláshoz.

3.5.2.4.2 SETYAWPICHROLL METÓDUS

Beállítja az AxesDisctől kapott kiválasztott tengelynek megfelelő szöget.

3.5.2.4.3 CALCULATEGAP METÓDUS

Tengelyváltás esetén kiszámolja az előző pozícióhoz képest történt elfordulást, hogy

ezzel korrigálja a modell forgási szögét, és megtartsa a konzisztenciát. Minden

tengelyállapot-váltáskor lefut.

33. ábra - Az Axes osztály diagramja

Page 46: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 45 -

3.5.2.6 GYROSCOPE OSZTÁLY

Megvalósít egy virtuális giroszkópot, ami a fizikai világ szabályaihoz igazodva

működik, és szemléletesen mutatja a modell körül a forgatások eredményét. Három

darab transzformációs nodeot foglal magába, amik egymás alá vannak kötve egy

részfába, így átvihető a transzformáció a gyerek csúcsokra, ennek következtében

kialakul a giroszkóp modellje.

A legfontosabb metódusa a root metódus, ami visszad egy transzformációs

nodeot, ami történetesen a részfa gyökere. Ezt aztán hozzá lehet kapcsolni egy eszköz

markeréhez, így a giroszkóp rácsatlakoztatható bármelyik eszközre.

34. ábra - A Gyroscope osztály diagramja

A giroszkóp kompozíciós kapcsolatokon alapuló modelljét az alábbi ábrán

mutatom be (35. ábra).

Page 47: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 46 -

35. ábra - A giroszkóp konstrukciós elve

Page 48: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 47 -

3.5.3 A VEZÉRLÉSI MODELL

Egyedi kommunikációs és vezérlési modellt használok a programban. Lényeges

különbség az általános felhasználó és program közötti kommunikációs séma, és az

általam kifejlesztett között, hogy a felhasználói interakciót felvevő és továbbító

perifériás eszközök nincsenek direkt módon a számítógéphez csatolva. Az általános

modellben a felhasználó az inputot billentyűzet és egér segítségével adja meg a

számítógépnek. Ezzel szemben az én modellem elszakad ettől a szokástól, és megvalósít

egy, a jelen pillanatban talán kevésbé hatékony, de mindenképpen izgalmas, és

fejlődőképes új megoldást.

Az általam definiált, a fizikai valóságban létező úgynevezett beviteli

eszközöknek két fajtája van: Tábla és Tárcsa. Programszinten három darab eszközt

különböztetek meg: Slate, Disc, _3DofDisc. A Slate a Tábla tulajdonságainak absztrakt

modellje, a Disc és a _3DofDisc pedig a tárcsát valósítja meg programlogikai szinten.

Kommunikáció a felhasználó és a program között, a következőképpen írható le:

A felhasználó interakcióba lép a kiválasztott eszközzel a valóságban. Egy kamera veszi

az eszközre erősített markert. A program első lépésben értelmezi a marker

transzformációit, hogy alapvető térinformációkat nyerjen ki belőle egy transzformációs

mátrix építéséhez. Ezután az így kinyert információkat feldolgozza és a megadott

program vezérlési paradigmái szerint értelmezi és végrehajtja azokat a parancsokat,

amiket a legfelső szinten a felhasználó indított egyszerű kézmozdulatokkal.

36. ábra - A Tábla Eszköz

Page 49: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 48 -

37. ábra - A Tárcsa eszköz

3.5.3.1 PROGRAMSZINTŰ KOMMUNIKÁCIÓ

A program szintjén a kommunikációt a három eszköz típus példányai végzik. A

megvalósítás során nagy hangsúlyt fordítottam a modularitásra és a

továbbfejleszthetőségre. A program jelenleg négy darab eszközt használ, ennek

következtében programszinten négy darab PerifericDevice objeltum fogja irányítani a

vezérlést. Pontosabban két darab Slate (GroundSlate, ModelSlate), egy darab Disc

(RotationDisc) és egy darab _3DofDisc (AxesDisc).

Az AxesDisc a vezérlés és a kommunikáció központja. Connect metódusain

keresztül hozzá kell kapcsolni a többi eszközt, így létesítve kapcsolatot köztük. Update

metódusai pedig frissítik a már csatolt eszközök különböző tulajdonságait. Fontos még

tudni, hogy az AxesDisc magába foglal egy Axes objektumot is, ami gyakorlatilag a

tengelyváltás logikájának implementációja és az AxesDisc agya.

Minden objektum le tudja kérdezni a saját elfordulási szögét, ami a GroundSlate

null szögében álló vektor és a saját down vektora által bezárt szög. Ezt a skaláris

szorzás képletének segítségével határozom meg.

Skaláris szorzat (dot product):

a*b = |a||b|cos(w)

Ebböl kifejtve a képletem:

acos( (forrasvektor * célvektor) /( |forrásvektor|*|célvektor| ) )

Page 50: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 49 -

Ezt a képletet alapul véve minden objektum amihez van csatolva GroundSlate

(ami tartalmazza a forrásvektort) képes elfordulást számolni kétdimenzióban. Ezt a

tulajdonságot a tárcsák használják ki, amik alapvetően az elfordulásul szögének

segítségével vezérlik a programot. Részben a szög explicit átadásával, részben a szögből

számolt maradékosztályok meghatározásával, amivel az állapotokat csoportosítja a

program. Például a menü elemi közötti váltás, vagy a tengely váltása is ilyen elven

működik.

3.5.4 TESZTELÉS

3.5.4.1 ILLUSZTRÁLT TESZTESETEK

Teszteset Felhasználói input

állása Működés Eredmény

Hiányzó eszközök– az

összes eszköz hiányzik

Nincs egy eszköz sem

a kamera látószögében

A program nem

jelenít meg semmit, a

felhasználói

adatbevitel a

markerek nélkül nem

lehetséges

OK

38. ábra – Minden eszköz hiányzik

Page 51: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 50 -

Teszteset Felhasználói input

állása Működés Eredmény

Hiányzó eszközök –

RotationDisc vagy

AxesDisc látszik

A kamera

látószögében a

RotationDisc vagy az

AxesDisc van

A tárcsáknak nincs

funkciójuk a

GroundSlate nélkül,

ezért nem jelenig

meg felettük felület.

OK

39. ábra - Valamelyik tárcsa van egyedül a jelenetben

Teszteset Felhasználói input

állása Működés Eredmény

Hiányzó markerek –

egy eszköz van, a

GroundSlate, vagy a

ModelSlate

A GroundSlatet vagy

a ModelSlatet látja a

kamera

Amennyiben a

GroundSlate látszik,

kirajzolja a lefele

vektorának irányát: a

null fokot. ModelSlate

megjeleníti az

alapértelmezettként

beállított modellt.

OK

40. ábra - A GroundSlate vagy a ModelSlate van egyedül a jelenetben

Page 52: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 51 -

Teszteset Felhasználói input

állása Működés Eredmény

Hiányzó markerek -

GroundSlate és

RotationDisk látszik

A RotationDisket és a

GroundSlatet látja a

kamera

A RotationDisk kiírja

maga fölé az

elfordulási abszolút

szögét.

OK

41. ábra - A GroundSlate és a RotationDisc van a jelenetben

Teszteset Felhasználói input

állása Működés Eredmény

Későn érkező

eszközök -

RotationDisk

A GroundSlatet látja a

kamera. Ekkor

érkezik a

RotationDisc.

A GroundSlate az

alapértelmezett

nullértéket mutatja.

Amikor bekerül a

RotationDisk, a nyíl

beáll el a

RotationDisc le

irányának

megfelelően

OK

42. ábra - A RotationDisc később érkezik a jelenetbe

Page 53: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 52 -

Teszteset Felhasználói input

állása Működés Eredmény

Hiányzó eszközök –

ModelSlate menübe lépés

ModelSlate nélkül

előjön ugyan a menu,

de minden eszköz

szükséges a

működéséhez.

X

43. ábra - A ModelSlate hiányzik a Menü állapotban

Teszteset Felhasználói input

állása Működés Eredmény

Későn érkező

eszközök –

ModelSlate

menübe lépés

Amint a ModelSlate

megjelenik,

elérhetővé válnak a

menü funkciói.

OK

44. ábra - A ModelSlate később érkezik a Menü állapotba

Page 54: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 53 -

Teszteset Felhasználói input

állása Működés Eredmény

RotationDisk

használata

MenuStateben.

Minden eszköz

látszik, a program

Menüállapotban van.

A menü elemei között

navigálhatunk. OK

45. ábra - A RotationDisc használata Menü állapotban

Teszteset Felhasználói input

állása Működés Eredmény

Hiányzó eszközök -

GroundSlate és

RotationDisk és a

ModelDisk látszik

A RotationDisk, a

ModelSlatet és a

GroundSlatet látja a

kamera

Mindent megjelenít,

de a modellen nem

történik

transzformáció, mivel

nem tudja a program,

hogy melyik

tengelyen akarunk

forgatni.

OK

46. ábra- AxesDisc hiányzik

Page 55: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 54 -

3.5.4.2 TOVÁBBI TESZTESETEK

Teszteset Felhasználói input

állása Működés Eredmény

Az AxesDisket

használjuk

MenuState-ben

Minden eszköz

látszik, az

AxesDisket forgatja a

felhasználó

A Menüelemet

funkcionalitásának

megfelelően

változtatja

OK

Teszteset Felhasználói input

állása Működés Eredmény

Minden eszköz

látszik

Minden eszközt lát a

kamera: a program

megfelelő

használatának kezdete

A program

megfelelően

működik.

OK

Teszteset Felhasználói input

állása Működés Eredmény

Eszközök kitakarása

használat közben

AxesDisket

kitakarjuk a menüben

beállított ClickSpeed

értéken belül

Állapotváltás történik:

amennyiben

MenuStateben

voltunk, átlépünk

BaseStatebe és

fordítva

OK

Teszteset Felhasználói input

állása Működés Eredmény

BaseStateben

kitakarjuk a

ModelSlatet

BaseState állapotban

tetszőleges időre

kitakarjuk a

ModelSlatet.

Megjelenik a

giroszkóp a modell

képe körül.

OK

Teszteset Felhasználói input

állása Működés Eredmény

Egy disk típusú

eszköz nem síkban

van

Az AxesDisk vagy a

RotationDisk nem egy

síkban helyezkezdik

el a GroundSlate-tel.

Nem értelmezhető az

érték. A forgatás nem

tükrözi a valóságot.

OK

Page 56: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

- 55 -

4. ÖSSZEGZÉS

Egy izgalmas új technológia használata mindig inspiráló és fejlesztésre, újításra

sarkall. A témaválasztásomat nagyban befolyásolta ez a romantikus irány. A rendszer

alapkövének szántam a további fejleszthetőség nyitva hagyását, ezért amennyire lehetett

általános célú modulokat hoztam létre, amik segítségével könnyen bővíthetővé válik a

program. A teljesség igénye nélkül felsorolok néhány fejlesztési lehetőséget:

A program legyen képes elmenteni adott állapotokat és beállításokat későbbi

használatra.

Lehessen modellt vagy animációt külső fájlból megadni.

Legyen képes a program ne csak forgatási, hanem nagyítási műveletek

végrehajtására is.

Az alaptípusoknak megfelelő eszközökből tudjon egyszerre többet is kezelni,

így növelni a produktivitást

Az eszközök relációs kapcsolatainak megmutatásához adjon felületet. Lehetőleg

úgy hogy a lerakott markerek pozícióit feltérképezi, és egy felületi képet generál

belőle, ahol grafikusan összeköthetővé válnak az eszközök.

Legyen képes a letakart markerek megjegyzésére, illetve pozíciójuk

kiszámítására a többi eszköz relatív pozíciója alapján.

Page 57: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

ÁBRAJEGYZÉK

1. ábra - A virtuális világ és a valóság összefésülése .................................................. - 5 -

2. ábra - Modellek markerekre illesztve ...................................................................... - 5 -

3. ábra – AR Autóreklám ............................................................................................. - 6 -

4. ábra – Alapállapot, üres asztal ............................................................................... - 10 -

5. ábra – A Ground Slate hozzáadása a jelenethez .................................................... - 11 -

6. ábra – Az Axes Disc hozzáadása a jelenethez ....................................................... - 11 -

7. ábra - A Rotation Disc hozzáadása a jelenethez .................................................... - 12 -

8. ábra - A Model Slate hozzáadása a jelenethez ....................................................... - 13 -

9. ábra – A vezérlőeszközök ...................................................................................... - 14 -

10. ábra – Az alap és a menü állapot ......................................................................... - 15 -

11. ábra - Ground Slate nyíl null fokban ................................................................... - 16 -

12. ábra – A képen a sárga görbe jelzi az elfordulás szögét ...................................... - 16 -

13. ábra - Giroszkóp ................................................................................................... - 17 -

14. ábra - A Giroszkóp előhívása ............................................................................... - 17 -

15. ábra - A forgatás iránya ....................................................................................... - 18 -

16. ábra – Forgatási szög beállítása és a tengely váltása ........................................... - 19 -

17. ábra - A Modellasztal ........................................................................................... - 19 -

18. ábra – A Menü elérése ......................................................................................... - 20 -

19. ábra - A Menüben való navigálás ........................................................................ - 21 -

20. ábra - Példa Markerre .......................................................................................... - 23 -

21. ábra – GoblinXNA példa színtér gráf .................................................................. - 28 -

Page 58: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

22. ábra - Teljes osztály és objektumdiagram I ......................................................... - 34 -

23. ábra - Teljes osztály és objektumdiagram II ........................................................ - 35 -

24. ábra - A supervisor osztály diagramj ................................................................... - 36 -

25. ábra - A BaseState részosztály diagramja ............................................................ - 37 -

26. ábra - A MenuState részosztály diagramja .......................................................... - 37 -

27. ábra - A PerifericDevice osztálydiagramja .......................................................... - 39 -

28. ábra - A _3DofDisc osztály diagramja ................................................................ - 41 -

29. ábra – A Disc osztály diagramja .......................................................................... - 41 -

30. ábra - A rotation és axes tárcsák működési elve .................................................. - 42 -

31. ábra - A Slate osztály diagramja .......................................................................... - 43 -

32. ábra - A felhasználó és a program kompozíciós kapcsolata ................................ - 43 -

33. ábra - Az Axes osztály diagramja ........................................................................ - 44 -

34. ábra - A Gyroscope osztály diagramja ................................................................. - 45 -

35. ábra - A giroszkóp konstrukciós elve .................................................................. - 46 -

36. ábra - A Tábla Eszköz .......................................................................................... - 47 -

37. ábra - A Tárcsa eszköz ......................................................................................... - 48 -

38. ábra – Minden eszköz hiányzik ........................................................................... - 49 -

39. ábra - Valamelyik tárcsa van egyedül a jelenetben .............................................. - 50 -

40. ábra - A GroundSlate vagy a ModelSlate van egyedül a jelenetben ................... - 50 -

41. ábra - A GroundSlate és a RotationDisc van a jelenetben ................................... - 51 -

42. ábra - A RotationDisc később érkezik a jelenetbe ............................................... - 51 -

43. ábra - A ModelSlate hiányzik a Menü állapotban ............................................... - 52 -

44. ábra - A ModelSlate később érkezik a Menü állapotba ....................................... - 52 -

Page 59: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

45. ábra - A RotationDisc használata Menü állapotban ............................................. - 53 -

46. ábra- AxesDisc hiányzik ...................................................................................... - 53 -

Page 60: A kiterjesztett valóság, háromdimenziós modellek térbeli ...matchsz.inf.elte.hu/VVprojekt/szakdoli/HertelendyGabor.pdfEötvös Loránd Tudományegyetem Informatikai kar Programozáselmélet

IRODALOMJEGYZÉK

[1] Gyapjas Ferenc: Lineáris algebra és geometria (kézirat)

Kiadó: Nemzeti Tankönyvkiadó

Kiadás éve: 1994

[2] GoblinXNA Installation Guide

[3] GoblinXNA User Manual

[4] Alvar Documentation

[5] http://nuclexframework.codeplex.com/wikipage?title=Vector%20Fonts&referrin

gTitle=Documentation, 2011. 05. 10.

Marta
Typewriter
A projekt az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával valósul meg, a támogatási szerződés száma TÁMOP 4.2.1./B-09/1/KMR-2010-0003.