Viimeinen rutistus, ja pieni puhe näkyvyydestä
21.4.2002 22:23 julkaistun artikkelin on kirjoittanut Jarkko Parviainen.
Alkava viikko olisi osaltani toiseksi viimeinen tälle kouluvuodelle. Sen jälkeen alkaa kesäloma ja -työt. Toisin sanoen (ellei ihmeitä tapahdu) saan siis aikaa viimeistellä seuraavan DirectX-artikkelin hieman nopeammin kuin edellisen. Koska ensiviikko tulee olemaan yksi raskaimmista tähän mennessä 4 perättäisen kokeensa kanssa, jätän koulusta puhumisen tähän.
Viimeisinä parina vapaapäivänä olen koodaillut KiWin (työn alla oleva 3D-moottori) näkyvyysalgoritmin eri osasia eteenpäin. Koska se on suunniteltu toimimaan dynaamisella tiedolla, olen joutunut tekemään monia asioita hieman tavallisuudesta poikkeavasti. Algoritmi toimii pääasiassa objektitasolla (objekti voi olla 3D-malli, kamera, valo tai jokin muu vastaava). Kaikki ruudun grafiikat piirretään lähimmästä objektista kauimmaiseen, toisin kuin useimmissa muissa 3D-moottoreissa.
Koko järjestelmä on 3-vaiheinen:
1. Määritellään viewing frustrumissa olevat objektit (frustrum culling)
2. Arvioidaan objektien koko ruudulla ja tehdään päätelmät sen vaikutuksesta piirrettyyn kuvaan ruudulla (contribution culling)
3. Suoritetaan peittävyystarkastelu, eli määritellään onko objekti kokonaan tai osittain toisten objektien takana (occlusion culling)
Peittävyystarkastelua (occlusion culling) tehostetaan käyttämällä edellisten peittävyystarkastelujen tuloksia hyväksi seuraavia tarkasteluja tehdessä. Peittävyystarkastelun tuloksena saadaan tieto näkyvyydestä ja tarvittaessa todennäköisimmin näkyvä alue (Potentially Visible Area, PVA). Varsinaisessa piirrossa PVA:ta käytetään siirtämään peittävyystarkastelu kolmiotasolle.
Että sellaista tällä kertaa. Palaillaan tähän ja muihin aiheisiin sitten taas myöhemmin. Nyt on aika mennä nukkumaan.
