Ero sivun ”Teksturointi” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
ew:n texture filtering-artikkelista
Ei muokkausyhteenvetoa
Rivi 7: Rivi 7:
Teksturoinnin idean esitti Edwin Catmull vuonna 1974. Teksturointi jakautuu teknisesti kahteen vaiheeseen, geometriseen kuvaukseen eli tekstuurin kuvaamiseen kappaleen pinnalle ja suodatukseen, eli tapaan jolla pikselit esitetään ruudulla. Tekstuuri kuvataan geometriselle muodolle yleensä siten, että kolmion (polygoni voidaan aina jakaa kolmioiksi) jokaiselle kulmalle on määritelty tekstuurikoordinaatit ja teksturointi kolmion sisäosiin interpoloidaan kulmien koordinaattien perusteella käyttämällä [[Bresenhamin algoritmi]]n laajennusta. Muilla kuin ortogonaalisilla koordinaatistoilla yksinkertainen lineaarinen interpolointi johtaa kuitenkin perspektiivivääristymään, jonka korjaamiseksi tarvitaan perspektiivikorjausta. Se kuluttaa enemmän tehoa, mutta useimmat nykyiset näytönohjaimet pystyvät laitteistotasoiseen perpektiivikorjaukseen.
Teksturoinnin idean esitti Edwin Catmull vuonna 1974. Teksturointi jakautuu teknisesti kahteen vaiheeseen, geometriseen kuvaukseen eli tekstuurin kuvaamiseen kappaleen pinnalle ja suodatukseen, eli tapaan jolla pikselit esitetään ruudulla. Tekstuuri kuvataan geometriselle muodolle yleensä siten, että kolmion (polygoni voidaan aina jakaa kolmioiksi) jokaiselle kulmalle on määritelty tekstuurikoordinaatit ja teksturointi kolmion sisäosiin interpoloidaan kulmien koordinaattien perusteella käyttämällä [[Bresenhamin algoritmi]]n laajennusta. Muilla kuin ortogonaalisilla koordinaatistoilla yksinkertainen lineaarinen interpolointi johtaa kuitenkin perspektiivivääristymään, jonka korjaamiseksi tarvitaan perspektiivikorjausta. Se kuluttaa enemmän tehoa, mutta useimmat nykyiset näytönohjaimet pystyvät laitteistotasoiseen perpektiivikorjaukseen.


Koska teksturoitava pinta voi olla missä asennossa ja millä etäisyydellä katsojaan nähden tahansa, tekstuurin pikselit (eli tekselit) ja kuvan pikselit eivät yleensä vastaa toisiaan. Esimerkiksi jos kappale on kaukana ja siten kuvataan ruudulle pienenä, voi jokaista kuvan pikseliä kohden olla useampia tekstuurin pikseleitä. Vastaavasti jos pinta on lähellä, yksi tekstuuripikseli voi kuvautua useaksi kuvan pikseliksi. Suodatusta eli filtteröintiä tarvitaan selvittämään se, minkä väriseksi kuvan pikseli piirretään.
Koska teksturoitava pinta voi olla missä asennossa ja millä etäisyydellä katsojaan nähden tahansa, tekstuurin pikselit (eli tekselit) ja kuvan pikselit eivät yleensä vastaa toisiaan. Esimerkiksi jos kappale on kaukana ja siten kuvataan ruudulle pienenä, voi jokaista kuvan pikseliä kohden olla useampia tekstuurin pikseleitä. Vastaavasti jos pinta on lähellä, yksi tekstuuripikseli voi kuvautua useaksi kuvan pikseliksi. Suodatus eli filtteröinti tarkoittaa kuvan pikselien päättelemistä tekstuurin pikseleistä.


Yksinkertaisin ja nopein suodatustapa on [[lähimmän naapurin menetelmä]], jossa haetaan lähimmän tekstuuripikselin väriarvo. Näin yksinkertainen suodatus aiheuttaa kuitenkin ongelmia silloin kun kappaleet ovat erityisen kaukana, jolloin tekstuurit muuttuvat pikselimössöksi eli signaalinkäsittelyn termein kuva [[laskostuminen|laskostuu]], ja silloin kun kappaleet ovat erityisen lähellä, jolloin tekstuurit palikoituvat. Kehittyneempiä mutta myös hieman enemmän tehoa vievä ovat [[bilineaarinen interpolointi|bilineaarinen]] ja [[trilineaarinen interpolointi]]. Kehittynein nykyisten kuluttajatasoisten näytönohjainten tukema suodatinmenetelä on [[anisotrooppinen suodatus]]. Kaukana olevien tekstuurien pikselöitymisongelmaa voi korjata myös mipmapping-tekniikalla, jossa tekstuuri vaihdetaan esimuodostettuun pienempään versioon kappaleen siirtyessä kauemmas. Tämä parantaa myös suodatinalgoritmien tehoa.
Yksinkertaisin ja nopein suodatustapa on [[lähimmän naapurin menetelmä]], jossa haetaan lähimmän tekstuuripikselin väriarvo. Näin yksinkertainen suodatus aiheuttaa kuitenkin ongelmia silloin kun kappaleet ovat erityisen kaukana, jolloin tekstuurit muuttuvat pikselimössöksi eli signaalinkäsittelyn termein kuva [[laskostuminen|laskostuu]], ja silloin kun kappaleet ovat erityisen lähellä, jolloin tekstuurit palikoituvat. Kehittyneempiä mutta myös hieman enemmän tehoa vievä ovat [[bilineaarinen interpolointi|bilineaarinen]] ja [[trilineaarinen interpolointi]]. Kehittynein nykyisten kuluttajatasoisten näytönohjainten tukema suodatinmenetelä on [[anisotrooppinen suodatus]]. Kaukana olevien tekstuurien pikselöitymisongelmaa voi korjata myös mipmapping-tekniikalla, jossa tekstuuri vaihdetaan esimuodostettuun pienempään versioon kappaleen siirtyessä kauemmas. Tämä parantaa myös suodatinalgoritmien tehoa.

Versio 22. helmikuuta 2007 kello 21.44

Teksturoinnilla eli pintakuvioinnilla tai tekstuurimappauksella tarkoitetaan tietokonegrafiikassa geometrisen perusmuodon pinnoittamista useimmiten bittikarttakuvalla eli tekstuurilla. Teksturointia käytetään etenkin 3d-grafiikassa tuomaan kuvaan lisää realismia ja näyttävyyttä ilman että kuvan polygonirakennetta tarvitsee monimutkaistaa. 3d-grafiikassa kappaleen muotoa kuvataan polygoneilla eli monikulmioilla ja sen pintarakennetta tekstuureilla.

Teksturointia käytetään nykyisissä peleissä hyvin paljon, ja nykyaikaiset näytönohjaimet ja pelikonsolit pystyvätkin reaaliaikaiseen teksturointiin laitteistotasolla.

Tekniikkaa

Teksturoinnin idean esitti Edwin Catmull vuonna 1974. Teksturointi jakautuu teknisesti kahteen vaiheeseen, geometriseen kuvaukseen eli tekstuurin kuvaamiseen kappaleen pinnalle ja suodatukseen, eli tapaan jolla pikselit esitetään ruudulla. Tekstuuri kuvataan geometriselle muodolle yleensä siten, että kolmion (polygoni voidaan aina jakaa kolmioiksi) jokaiselle kulmalle on määritelty tekstuurikoordinaatit ja teksturointi kolmion sisäosiin interpoloidaan kulmien koordinaattien perusteella käyttämällä Bresenhamin algoritmin laajennusta. Muilla kuin ortogonaalisilla koordinaatistoilla yksinkertainen lineaarinen interpolointi johtaa kuitenkin perspektiivivääristymään, jonka korjaamiseksi tarvitaan perspektiivikorjausta. Se kuluttaa enemmän tehoa, mutta useimmat nykyiset näytönohjaimet pystyvät laitteistotasoiseen perpektiivikorjaukseen.

Koska teksturoitava pinta voi olla missä asennossa ja millä etäisyydellä katsojaan nähden tahansa, tekstuurin pikselit (eli tekselit) ja kuvan pikselit eivät yleensä vastaa toisiaan. Esimerkiksi jos kappale on kaukana ja siten kuvataan ruudulle pienenä, voi jokaista kuvan pikseliä kohden olla useampia tekstuurin pikseleitä. Vastaavasti jos pinta on lähellä, yksi tekstuuripikseli voi kuvautua useaksi kuvan pikseliksi. Suodatus eli filtteröinti tarkoittaa kuvan pikselien päättelemistä tekstuurin pikseleistä.

Yksinkertaisin ja nopein suodatustapa on lähimmän naapurin menetelmä, jossa haetaan lähimmän tekstuuripikselin väriarvo. Näin yksinkertainen suodatus aiheuttaa kuitenkin ongelmia silloin kun kappaleet ovat erityisen kaukana, jolloin tekstuurit muuttuvat pikselimössöksi eli signaalinkäsittelyn termein kuva laskostuu, ja silloin kun kappaleet ovat erityisen lähellä, jolloin tekstuurit palikoituvat. Kehittyneempiä mutta myös hieman enemmän tehoa vievä ovat bilineaarinen ja trilineaarinen interpolointi. Kehittynein nykyisten kuluttajatasoisten näytönohjainten tukema suodatinmenetelä on anisotrooppinen suodatus. Kaukana olevien tekstuurien pikselöitymisongelmaa voi korjata myös mipmapping-tekniikalla, jossa tekstuuri vaihdetaan esimuodostettuun pienempään versioon kappaleen siirtyessä kauemmas. Tämä parantaa myös suodatinalgoritmien tehoa.

Käytettävä tekstuuri on yleensä kaksiulotteinen bittikarttakuva, mutta se voi olla myös yksi- tai kolmiulotteinen. Se voidaan ottaa valokuvasta, piirtää tai konstruoida matemaattisena funktiona, ja esittää normaalina bittikarttataulukkona tai esim. fourier-sarjoina. Tekstuuri voi olla myös muu kuin kuva: esimerkiksi bump mapping-tekniikassa vaikutetaan valaistuksessa käytettäviin parametreihin.

Lähteet