bsp-fák használata játék-engine fejlesztésében a nagy kiterjedésű zárt terek...

28
BSP-fák használata BSP-fák használata játék-engine játék-engine fejlesztésében a nagy fejlesztésében a nagy kiterjedésű zárt kiterjedésű zárt terek megjelenítéséhez terek megjelenítéséhez Előadó: Boromissza Gergely Előadó: Boromissza Gergely Konzulens: dr. Szirmay-Kalos Konzulens: dr. Szirmay-Kalos László László

Upload: calvin-fischer

Post on 30-Dec-2015

25 views

Category:

Documents


2 download

DESCRIPTION

BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű zárt terek megjelenítéséhez. Előadó: Boromissza Gergely Konzulens: dr. Szirmay-Kalos László. Bevezetés I. BSP-fa használat 1990-es évek: Doom 2000-es évek: Quake 2005: Half-Life 2. Bevezetés II. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

BSP-fák használata BSP-fák használata játék-engine játék-engine fejlesztésében a nagy fejlesztésében a nagy kiterjedésű zárt terek kiterjedésű zárt terek megjelenítéséhezmegjelenítéséhez

Előadó: Boromissza GergelyElőadó: Boromissza Gergely

Konzulens: dr. Szirmay-Kalos Konzulens: dr. Szirmay-Kalos LászlóLászló

Page 2: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Bevezetés I.Bevezetés I.

BSP-fa használatBSP-fa használat– 1990-es évek: Doom 1990-es évek: Doom

– 2000-es évek: Quake2000-es évek: Quake

– 2005: Half-Life 22005: Half-Life 2

Page 3: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Bevezetés II.Bevezetés II.

Videokártyák rohamosVideokártyák rohamosfejlődésefejlődése– Több millió háromszögTöbb millió háromszög

másodpercenkéntmásodpercenként Felhasználói igények növekedéseFelhasználói igények növekedése

– Élethű környezet (még több Élethű környezet (még több háromszög)háromszög)

– Dinamikus elemek, árnyékokDinamikus elemek, árnyékok– Minél nagyobb FPSMinél nagyobb FPS– Rövid várakozási/betöltési időRövid várakozási/betöltési idő

Page 4: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Bevezetés III.Bevezetés III.

Teljes terep kirajzolásaTeljes terep kirajzolása Részletes kidolgozottságRészletes kidolgozottság

– Nagyon sok háromszögNagyon sok háromszög– Lassú megjelenítés (kicsi FPS)Lassú megjelenítés (kicsi FPS)

Elnagyolt kidolgozottságElnagyolt kidolgozottság– Gyors megjelenítésGyors megjelenítés– Csúnya terekCsúnya terek

Page 5: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Bevezetés IV.Bevezetés IV.

Pálya szétszabdalásaPálya szétszabdalása– Kicsi pályarészekKicsi pályarészek– Várakozás az új részekVárakozás az új részek

betöltésérebetöltésére– Lineáris játékmenetLineáris játékmenet– Dinamikus pályarész betöltésDinamikus pályarész betöltés

Page 6: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Bevezetés V.Bevezetés V.

BSP-fák ötleteBSP-fák ötlete– Játéktér strukturális felépítéseJátéktér strukturális felépítése– Csak a szükséges méretű játéktér Csak a szükséges méretű játéktér

megjelenítésemegjelenítése– Vizsgálatok (pl. ütközésdetektálás) Vizsgálatok (pl. ütközésdetektálás)

csak az aktuális térrészbencsak az aktuális térrészben– Előfeldolgozási időben számolhatóElőfeldolgozási időben számolható– Minimális valós-idejű számítási igényMinimális valós-idejű számítási igény– Lehet részletesen kidolgozott terepLehet részletesen kidolgozott terep– Elfogadható FPSElfogadható FPS

Page 7: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Kd-faKd-fa

Kd-faKd-fa– A teret a tengelyekkelA teret a tengelyekkel

párhuzamos hipersíkokkalpárhuzamos hipersíkokkalosztjuk ketté úgy, hogy…osztjuk ketté úgy, hogy…

– a sík két oldalán közela sík két oldalán közelazonos számú poligon legyen, azonos számú poligon legyen, mindaddig…mindaddig…

– amíg elegendően kevés poligon nem amíg elegendően kevés poligon nem lesz minden egyes térrészben.lesz minden egyes térrészben.

Page 8: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

BSP-faBSP-fa

BSP-fa (Kd-fa kiterjesztése)BSP-fa (Kd-fa kiterjesztése)– A teret a pálya egy poligonjának A teret a pálya egy poligonjának

síkjával osztjuk ketté úgy, hogy…síkjával osztjuk ketté úgy, hogy…– minél kevesebb poligont vágjunk minél kevesebb poligont vágjunk

ketté és…ketté és…– a sík két oldalán közel azonos számú a sík két oldalán közel azonos számú

poligon legyen mindaddig…poligon legyen mindaddig…– amíg minden egyes térrészben a amíg minden egyes térrészben a

poligonok által alkotott alakzat poligonok által alkotott alakzat konvex nem lesz.konvex nem lesz.

Page 9: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

BSP-fa struktúraBSP-fa struktúra

BSPNode(root)

•cutterPlane•boundingBox

BSPLeaf(front)

•polygonList•boundingBox

BSPNode(behind)

•cutterPlane•boundingBox

BSPLeaf(front)

•polygonList•boundingBox

BSPLeaf(behind)

•polygonList•boundingBox

Page 10: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

BSP-fa használataBSP-fa használata

Különféle vizsgálatokhozKülönféle vizsgálatokhoz– Csak az aktuális térrészben Csak az aktuális térrészben

szükségesszükséges MegjelenítéshezMegjelenítéshez

– Aktuális térrészAktuális térrész– Aktuális térrészből látható térrészekAktuális térrészből látható térrészek

Page 11: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Aktuális térrész Aktuális térrész keresésekeresése Rekurzív algoritmusRekurzív algoritmus

1.1. Induljunk el a gyökértőlInduljunk el a gyökértől

2.2. A vizsgált pont (aktuálisA vizsgált pont (aktuálispozíció) és a csomópontpozíció) és a csomópont vágósíkjának viszonya szerint lépjünk vágósíkjának viszonya szerint lépjünk tovább a gyerekek felé (front vagy tovább a gyerekek felé (front vagy behind) behind)

3.3. Ismételjük a 2. pontot rekurzívan Ismételjük a 2. pontot rekurzívan mindaddig, amíg levélhez nem érünk.mindaddig, amíg levélhez nem érünk.

4.4. A levél reprezentálja a térrészt, amiben A levél reprezentálja a térrészt, amiben aktuálisan tartózkodunkaktuálisan tartózkodunk

Page 12: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Átjárás a térrészek között I.Átjárás a térrészek között I.

Szükség van rá, mert…Szükség van rá, mert…– nem feltétlenül csak az aktuális nem feltétlenül csak az aktuális

térrész látható az aktuális térrész látható az aktuális pozícióból, hanem…pozícióból, hanem…

– a szomszédosak is látszódhatnaka szomszédosak is látszódhatnak MódszerMódszer

– A térfelosztás után még A térfelosztás után még előfeldolgozási időben döntsük el előfeldolgozási időben döntsük el minden egyes térrészre, hogy abból minden egyes térrészre, hogy abból mely más térrészek látszódhatnakmely más térrészek látszódhatnak

– Tároljuk el ezt is a struktúránkbanTároljuk el ezt is a struktúránkban

Page 13: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Átjárás a térrészek között Átjárás a térrészek között II.II.

MegvalósításMegvalósítás– Számoljunk a térrészekhezSzámoljunk a térrészekhez

befoglaló doboztbefoglaló dobozt– Amennyiben a befoglalóAmennyiben a befoglaló

dobozoknak van közös részük, dobozoknak van közös részük, mondjuk azt, hogy van átjárás a mondjuk azt, hogy van átjárás a térrészek közötttérrészek között

– Tároljuk ezt az információt egy Tároljuk ezt az információt egy vektorban, ahol egy bit jelöli az vektorban, ahol egy bit jelöli az átjáró létét a két térrész közöttátjáró létét a két térrész között

Page 14: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Megjelenítés I.Megjelenítés I.

A látható térrészek összegyűjtéseA látható térrészek összegyűjtése1.1. Keressük meg, mely térrészben Keressük meg, mely térrészben

tartózkodunk aktuálisantartózkodunk aktuálisan

2.2. Gyűjtsük össze az innen látható Gyűjtsük össze az innen látható térrészekettérrészeket

3.3. Dobjuk el ezek közül a már vizsgált, és Dobjuk el ezek közül a már vizsgált, és az aktuális kamera beállítások mellett az aktuális kamera beállítások mellett nem látszódó térrészeket (befoglaló nem látszódó térrészeket (befoglaló dobozos vizsgálat)dobozos vizsgálat)

4.4. Végezzük el rekurzívan minden egyes Végezzük el rekurzívan minden egyes megmaradt térrészre a vizsgálatokat a 2. megmaradt térrészre a vizsgálatokat a 2. ponttól kezdődőenponttól kezdődően

Page 15: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Megjelenítés II.Megjelenítés II.

Jelenítsük meg az így Jelenítsük meg az így összegyűjtött látható térrészek összegyűjtött látható térrészek összes háromszögétösszes háromszögét– ha az aktuális térrésszel kezdünk, ha az aktuális térrésszel kezdünk,

akkor a Z-bufferbe való írások száma akkor a Z-bufferbe való írások száma jelentősen lecsökken, mert…jelentősen lecsökken, mert…

– a jelenleginél közelebbi térrészek, a jelenleginél közelebbi térrészek, illetve háromszögek nem lehetnekilletve háromszögek nem lehetnek

Page 16: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

PéldaPélda

Page 17: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

PéldaPélda

a

Page 18: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

PéldaPélda

a

b

Page 19: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

PéldaPélda

a

b

2 11

Page 20: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

PéldaPélda

a

c b

2 11

Page 21: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

PéldaPélda

a

c b

2 114 3

Page 22: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

PéldaPélda

ÁtjárhatóságokÁtjárhatóságok– 1-21-2– 2-42-4– 3-43-4

Page 23: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

PéldaPélda

Avatar térrészeAvatar térrésze– 11

Látható térrész(ek)Látható térrész(ek)– 22

Valóban láthatóValóban látható– 22

Onnan láthatóOnnan látható– 1; 41; 4

Nem vizsgált térrészNem vizsgált térrész– 44

Valóban láthatóValóban látható– n.a.n.a.

Összes láthatóÖsszes látható– 1; 21; 2

Page 24: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Eredményeim I.Eredményeim I.

BSP készítő programBSP készítő program– Bemenet: OBJ fájlBemenet: OBJ fájl

HáromszögesítettHáromszögesített Befele néző normálokkalBefele néző normálokkal Avatar kezdőpontja a (0; 0; 0)-s Avatar kezdőpontja a (0; 0; 0)-s

koordinátábankoordinátában Elegendően magas mennyezet (avatar Elegendően magas mennyezet (avatar

szempozíciója 1 egység magasan)szempozíciója 1 egység magasan)

– Kimenet: BSP fájlKimenet: BSP fájl Saját készítésűSaját készítésű Alapötlet a Quake 3 formátuma alapjánAlapötlet a Quake 3 formátuma alapján

Page 25: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Eredményeim II.Eredményeim II.

BSP megjelenítő programBSP megjelenítő program– DirectX 9.0c használataDirectX 9.0c használata– BSP fájlok betöltéseBSP fájlok betöltése– MegjelenítésMegjelenítés

Adott térrész zöld színnelAdott térrész zöld színnel Többi látható térrész pirosból kékbe átmenő Többi látható térrész pirosból kékbe átmenő

árnyalattalárnyalattal

– MozgásMozgás Felhasználói irányítás (mozgás, ugrás)Felhasználói irányítás (mozgás, ugrás) Minimális fizika (gravitáció, csúszás, ütközés)Minimális fizika (gravitáció, csúszás, ütközés)

Page 26: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

TovábblépésTovábblépés

Anyag jellemzők és textúraAnyag jellemzők és textúra használata MTL fájlból használata MTL fájlból

Láthatósági feltételekLáthatósági feltételek finomítása finomítása– egyszerűen és gyorsan kezelhetőegyszerűen és gyorsan kezelhető– megbízható módszerremegbízható módszerre

Fizikai modell finomításaFizikai modell finomítása

Page 27: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez
Page 28: BSP-fák használata játék-engine fejlesztésében a nagy kiterjedésű  zárt terek megjelenítéséhez

Köszönöm a figyelmet!Köszönöm a figyelmet!