Ero sivun ”Teksturointi” versioiden välillä

[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
Ei muokkausyhteenvetoa
ew:n texture filtering-artikkelista
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.
 
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.
Kunnollinen suodatusmenetelmä on tarpeen etenkin kappaleen ollessa 3d-avaruudessa kaukana katsojasta, jolloin tekstuurit muuttuvat pikselimössöksi, ja kappaleen ollessa erityisen lähellä, jolloin tekstuurit karkeistuvat. Yksinkertaisin ja nopein suodatustapa on [[lähimmän naapurin menetelmä]]. Hieman kehittyneempi mutta myös hieman enemmän tehoa vievä on [[bilineaarinen interpolointi]]. Kaukana olevien tekstuurien pikselöitymisongelmaa voi korjata myös mipmapping-tekniikalla, jossa tekstuuri vaihdetaan pienempään versioon kappaleen siirtyessä kauemmas.
 
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.
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.
 
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. Fourierfourier-sarjoina. Tekstuuri voi olla myös muu kuin kuva: esimerkiksi [[bump mapping]]-tekniikassa vaikutetaan valaistuksessa käytettäviin parametreihin.
 
==Lähteet==