280 likes | 390 Views
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.
E N D
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. • Videokártyák rohamosfejlődése • Több millió háromszögmásodpercenként • 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 • Részletes kidolgozottság • Nagyon sok háromszög • Lassú megjelenítés (kicsi FPS) • Elnagyolt kidolgozottság • Gyors megjelenítés • Csúnya terek
Bevezetés IV. • Pálya szétszabdalása • Kicsi pályarészek • Várakozás az új részekbetöltésére • Lineáris játékmenet • Dinamikus pályarész betöltés
Bevezetés V. • 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 • Kd-fa • A teret a tengelyekkelpárhuzamos hipersíkokkalosztjuk ketté úgy, hogy… • a sík két oldalán közelazonos számú poligon legyen, mindaddig… • amíg elegendően kevés poligon nem lesz minden egyes térrészben.
BSP-fa • 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 használata • Különféle vizsgálatokhoz • Csak az aktuális térrészben szükséges • Megjelenítéshez • Aktuális térrész • Aktuális térrészből látható térrészek
Aktuális térrész keresése • Rekurzív algoritmus • Induljunk el a gyökértől • A vizsgált pont (aktuálispozíció) és a csomópont vágósíkjának viszonya szerint lépjünk tovább a gyerekek felé (front vagy behind) • Ismételjük a 2. pontot rekurzívan mindaddig, amíg levélhez nem érünk. • 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. • 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 • 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. • Megvalósítás • Számoljunk a térrészekhezbefoglaló 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. • A látható térrészek összegyűjtése • Keressük meg, mely térrészben tartózkodunk aktuálisan • Gyűjtsük össze az innen látható térrészeket • 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) • 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. • 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 • Átjárhatóságok • 1-2 • 2-4 • 3-4
Példa • Avatar térrésze • 1 • Látható térrész(ek) • 2 • Valóban látható • 2 • Onnan látható • 1; 4 • Nem vizsgált térrész • 4 • Valóban látható • n.a. • Összes látható • 1; 2
Eredményeim I. • BSP készítő program • Bemenet: OBJ fájl • Háromszögesített • Befele néző normálokkal • Avatar kezdőpontja a (0; 0; 0)-s koordinátában • Elegendően magas mennyezet (avatar szempozíciója 1 egység magasan) • Kimenet: BSP fájl • Saját készítésű • Alapötlet a Quake 3 formátuma alapján
Eredményeim II. • BSP megjelenítő program • DirectX 9.0c használata • BSP fájlok betöltése • Megjelenítés • Adott térrész zöld színnel • Többi látható térrész pirosból kékbe átmenő árnyalattal • Mozgás • 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 • Láthatósági feltételek finomítása • egyszerűen és gyorsan kezelhető • megbízható módszerre • Fizikai modell finomítása