Z-puskurointi

Wikipedia
Loikkaa: valikkoon, hakuun
Kolmiulotteisen näkymän Z-puskurointi-data.

Z-puskurointi on tietokonegrafiikan tekniikka, jolla käsitellään 3D-kuvan syvyyttä. Yleensä Z-puskurointi toteutetaan laitteistolla, toisinaan ohjelmallisesti. Se ratkaisee näkyvyysongelman, jossa pitää kyetä valitsemaan mitkä näkymän elementit ovat näkyviä ja mitkä piilossa. Maalarin algoritmi on toinen yleisesti käytetty, joskin huomattavasti tehottomampi ratkaisu.

Kun kappale mallinnetaan 3D-näytönohjaimella, tuotetun pikselin syvyys (z-koordinaatti) tallennetaan puskuriin (z-puskuri). Yleensä tämä puskuri esitetään 2-ulotteisena XY-taulukkona, jossa kutakin taulukon elementtiä vastaa yksi kuvapiste näytöllä. Jos jonkin kappaleen kuvapiste piirretään samaan pikseliin kuin mihin on aiemmin piirretty, näytönohjain vertaa syvyyksiä ja valitsee niistä katsojaa lähinnä olevan. Valittu syvyys tallennetaan sitten z-puskuriin vanhan arvon tilalle. Näin puskurin avulla voidaan tuottaa tyypillinen syvyysvaikutelma: lähempänä oleva kappale peittää kauempana olevan.

Z-puskurin tarkkuudella on merkittävä vaikutus näkymän laatuun. 16-bittinen Z-puskuri voi tuottaa häiriöitä kun kaksi kappaletta ovat hyvin lähellä toisiaan. 24- tai 32-bittinen Z-puskuri toimii huomattavasti paremmin. 8-bittistä Z-puskuria ei käytetä juuri koskaan sen hyvin heikon tarkkuuden vuoksi.

Teoriaa[muokkaa | muokkaa wikitekstiä]

Kameran käyttämä syvyysasteikko määritellään yleensä z-koordinaatin arvoilla \mathit{near} ja \mathit{far}. Perspektiivimuunnoksen jälkeen uusi arvo z tai z' saadaan lausekkeesta

z'=
\frac{\mathit{far}+\mathit{near}}{\mathit{far}-\mathit{near}} +
\frac{1}{z} \left(\frac{-2 \cdot \mathit{far} \cdot \mathit{near}}{\mathit{far}-\mathit{near}}\right)

Missä z on vanha z kamera-avaruudessa, ja sitä merkitään joskus w tai w'. Lopulta arvoväli [near, far] normalisoidaan usein välille [-1, 1] vastaavassa järjestyksessä.