Teksturointi

Wikipedia
Loikkaa: valikkoon, hakuun
Teksturointi on myös kasviproteiinin valmistusmenetelmä, ks. Soijarouhe.
Kaksi M1A2 Abrams -taistelupanssarivaunua esittävää kolmiulotteista mallia, joista alempi teksturoitu.

Teksturoinnilla eli pintakuvioinnilla tai tekstuurimappauksella tarkoitetaan tietokonegrafiikassa geometrisen perusmuodon pinnoittamista useimmiten bittikarttakuvalla eli tekstuurilla. Teksturointia käytetään etenkin 3d-grafiikassa tuomaan kuvaan lisää todenmukaisuutta 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[muokkaa | muokkaa wikitekstiä]

Teksturoinnin perusajatuksen 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 perspektiivikorjaukseen.

Suodatus[muokkaa | muokkaa wikitekstiä]

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. Kaukana olevien tekstuurien laskostumisongelmaa voi korjata mipmapping-tekniikalla, jossa tekstuuri vaihdetaan esimuodostettuun pienempään versioon kappaleen siirtyessä kauemmas. Tämä parantaa myös etenkin monimutkaisempien suodatusalgoritmien tehoa, koska niiden ei tarvitse laskea kaukana olevien kappaleiden pikseleitä lukuisten tekstuuripikseleiden keskiarvona. Mipmapping ei kuitenkaan auta palikoitumiseen tekstuurien ollessa lähellä.

Kehittyneempi mutta myös hieman enemmän tehoa vievä on bilineaarinen suodatus, jossa pikseli lasketaan neljän lähimmän tekstuuripikselin etäisyyksillä painotettuna keskiarvona. Tämä parantaa lähellä olevien tekstuurien ulkonäköä (tosin myös sumentaa niitä). Laskostumisongelmaa bilineaarinen suodatus sen sijaan ei korjaa, joten siihen yhdistetään lähes aina mipmapping.

Trilineaarinen suodatus huomioi bilineaariseen interpolointiin lisäksi lähimmän toisen mipmapping-tason pikselit, mikä korjaa häiriötä mipmappien vaihtumiskohdassa. Kehittynein nykyisten yksityiskäyttäjätasoisten näytönohjainten tukema suodatusmenetelmä on anisotrooppinen suodatus, joka interpoloi pikseleitä katselukulman mukaan muodostetun puolisuunnikkaan mukaan trilineaarisen ja bilineaarisen suodatuksen käyttämän neliön sijaan. Tämä parantaa tulosta epäsuorissa kulmissa ja kaukaisuudessa.

Tekstuuri[muokkaa | muokkaa wikitekstiä]

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 esimerkiksi fourier-sarjoina. Tekstuuri voi olla myös muu kuin kuva: esimerkiksi bump mapping-tekniikassa vaikutetaan valaistuksessa käytettäviin parametreihin.

Lähteet[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]