BSPfk hasznlata jtkengine fejlesztsben a nagy kiterjeds zrt
BSP-fák használata játékengine 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. n BSP-fa használat – 1990 -es évek: Doom – 2000 -es évek: Quake – 2005: Half-Life 2
Bevezetés II. n Videokártyák rohamos fejlődése – Több millió háromszög másodpercenként n Felhasználói igények növekedése – Élethű környezet (még több háromszög) – Dinamikus elemek, árnyékok – Minél nagyobb FPS – Rövid várakozási/betöltési idő
Bevezetés III. Teljes terep kirajzolása n Részletes kidolgozottság – Nagyon sok háromszög – Lassú megjelenítés (kicsi FPS) n Elnagyolt kidolgozottság – Gyors megjelenítés – Csúnya terek
Bevezetés IV. n Pálya szétszabdalása – Kicsi pályarészek – Várakozás az új részek betöltésére – Lineáris játékmenet – Dinamikus pályarész betöltés
Bevezetés V. n BSP-fák ötlete – Játéktér strukturális felépítése – Csak a szükséges méretű játéktér megjelenítése – Vizsgálatok (pl. ütközésdetektálás) csak az aktuális térrészben – Előfeldolgozási időben számolható – Minimális valós-idejű számítási igény – Lehet részletesen kidolgozott terep – Elfogadható FPS
Kd-fa n Kd-fa – A teret a tengelyekkel párhuzamos hipersíkokkal osztjuk ketté úgy, hogy… – a sík két oldalán közel azonos számú poligon legyen, mindaddig… – amíg elegendően kevés poligon nem lesz minden egyes térrészben.
BSP-fa n BSP-fa (Kd-fa kiterjesztése) – A teret a pálya egy poligonjának síkjával osztjuk ketté úgy, hogy… – minél kevesebb poligont vágjunk ketté és… – a sík két oldalán közel azonos számú poligon legyen mindaddig… – amíg minden egyes térrészben a poligonok által alkotott alakzat konvex nem lesz.
BSP-fa struktúra BSPNode (root) • cutter. Plane • bounding. Box BSPLeaf (front) • polygon. List • bounding. Box BSPNode (behind) • cutter. Plane • bounding. Box BSPLeaf (front) • polygon. List • bounding. Box BSPLeaf (behind) • polygon. List • bounding. Box
BSP-fa használata n Különféle vizsgálatokhoz – Csak az aktuális térrészben szükséges n Megjelenítéshez – Aktuális térrészből látható térrészek
Aktuális térrész keresése n Rekurzív algoritmus 1. Induljunk el a gyökértől 2. A vizsgált pont (aktuális pozíció) és a csomópont vágósíkjának viszonya szerint lépjünk tovább a gyerekek felé (front vagy behind) 3. Ismételjük a 2. pontot rekurzívan mindaddig, amíg levélhez nem érünk. 4. A levél reprezentálja a térrészt, amiben aktuálisan tartózkodunk
Átjárás a térrészek között I. n Szükség van rá, mert… – nem feltétlenül csak az aktuális térrész látható az aktuális pozícióból, hanem… – a szomszédosak is látszódhatnak n Módszer – A térfelosztás után még előfeldolgozási időben döntsük el minden egyes térrészre, hogy abból mely más térrészek látszódhatnak – Tároljuk el ezt is a struktúránkban
Átjárás a térrészek között II. n Megvalósítás – Számoljunk a térrészekhez befoglaló dobozt – Amennyiben a befoglaló dobozoknak van közös részük, mondjuk azt, hogy van átjárás a térrészek között – Tároljuk ezt az információt egy vektorban, ahol egy bit jelöli az átjáró létét a két térrész között
Megjelenítés I. n A látható térrészek összegyűjtése 1. Keressük meg, mely térrészben tartózkodunk aktuálisan 2. Gyűjtsük össze az innen látható térrészeket 3. Dobjuk el ezek közül a már vizsgált, és az aktuális kamera beállítások mellett nem látszódó térrészeket (befoglaló dobozos vizsgálat) 4. Végezzük el rekurzívan minden egyes megmaradt térrészre a vizsgálatokat a 2. ponttól kezdődően
Megjelenítés II. n Jelenítsük meg az így összegyűjtött látható térrészek összes háromszögét – ha az aktuális térrésszel kezdünk, akkor a Z-bufferbe való írások száma jelentősen lecsökken, mert… – a jelenleginél közelebbi térrészek, illetve háromszögek nem lehetnek
Példa
Példa a
Példa a b
Példa a b 2 1 1
Példa a c b 2 11
Példa a c 4 b 3 2 11
Példa n Átjárhatóságok – – – 1 -2 2 -4 3 -4
Példa n Avatar térrésze n Látható térrész(ek) n Valóban látható n Onnan látható n Nem vizsgált térrész n Valóban látható n Összes látható – 1 – 2 – 1; 4 – n. a. – 1; 2
Eredményeim I. n BSP készítő program – Bemenet: OBJ fájl n Háromszögesített n Befele néző normálokkal n Avatar kezdőpontja a (0; 0; 0)-s koordinátában n Elegendően magas mennyezet (avatar szempozíciója 1 egység magasan) – Kimenet: BSP fájl n Saját készítésű n Alapötlet a Quake 3 formátuma alapján
Eredményeim II. n BSP megjelenítő program – – – Direct. X 9. 0 c használata BSP fájlok betöltése Megjelenítés n n Adott térrész zöld színnel Többi látható térrész pirosból kékbe átmenő árnyalattal – Mozgás n n Felhasználói irányítás (mozgás, ugrás) Minimális fizika (gravitáció, csúszás, ütközés)
Továbblépés Anyag jellemzők és textúra használata MTL fájlból n Láthatósági feltételek finomítása n – egyszerűen és gyorsan kezelhető – megbízható módszerre n Fizikai modell finomítása
Köszönöm a figyelmet!
- Slides: 28