bsp-fák használata játék-engine fejlesztésében a nagy kiterjedésű zárt terek...
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 PresentationTRANSCRIPT
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ó
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
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ő
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
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
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
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.
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.
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
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
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
Á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
Á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
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
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
PéldaPélda
PéldaPélda
a
PéldaPélda
a
b
PéldaPélda
a
b
2 11
PéldaPélda
a
c b
2 11
PéldaPélda
a
c b
2 114 3
PéldaPélda
ÁtjárhatóságokÁtjárhatóságok– 1-21-2– 2-42-4– 3-43-4
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
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
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)
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
Köszönöm a figyelmet!Köszönöm a figyelmet!