a kiterjesztett valóság, háromdimenziós modellek térbeli...
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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/1.jpg)
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
![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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/5.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/6.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/7.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/8.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/9.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/10.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/11.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/12.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/13.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/14.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/15.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/16.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/17.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/18.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/19.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/20.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/21.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/22.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/23.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/24.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/25.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/26.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/27.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/28.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/29.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/30.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/31.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/32.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/33.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/34.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/35.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/36.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/37.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/38.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/39.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/40.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/41.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/42.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/43.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/44.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/45.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/46.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/47.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/48.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/49.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/50.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/51.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/52.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/53.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/54.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/55.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/56.jpg)
- 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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/57.jpg)
Á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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/58.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/59.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022012003/60b1bd455102fe34516974e4/html5/thumbnails/60.jpg)
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.