Teknillinen Korkeakoulu 29.3.2004 Tietoliikenneohjelmistojen ja multimedian laboratorio Tik-111.500 Tietokonegrafiikan seminaari Kevät 2004: Kuvapohjaiset menetelmät Kohokuviopinnoitus eli relief texture mapping Jarno Elonen 48078K
Kohokuviopinnoitus eli relief texture mapping Jarno Elonen TKK, Tietoliikenneohjelmistojen ja multimedian laboratorio elonen@iki.fi Tiivistelmä Kohokuviopinnoitus eli relief texture mapping on tasomaisen kuvapinnoituksen (texture mapping) laajennus syvyyssuuntaan samaan tapaan kuin bump mappingja displacement mapping-tekniikat: kuvaan värin lisäksi tallennettuja syvyyskoordinaatteja käytetään piirtovaiheessa syvyysvaikutelman aikaansaamiseksi. Syvyyskuvan pikseleitä väännetään yksinkertaisella 1D-algoritmilla ensin vaakaja sitten pystysuunnassa minkä jälkeen kuva piirretään ruudulle syvyyskoordinaateista välittämättä esim. kolmion pinnalle projisoituna. Vaikka tulos näyttää vakuuttavan kolmiulotteiselta ja on matemaattisesti oikein, vääntöön tarvittava laskenta on kevyttä ja sopisi hyvin 3D-kiihdyttimen integroidulle piirille. 1 JOHDANTO Kolmiulotteisten kappaleiden mallinnuksessa geometria ja materiaali on perinteisesti erotettu toisistaan varsin tarkasti: mallin muoto koostetaan esim. kolmioista, splinepinnoista tai metakappaleista ja niille määritellään erikseen väri- ja heijastusparametrit piirtoa varten. Periaatteessa näin voidaan esittää mielivaltaisen tarkkoja kappaleita. Toisaalta mallinnus voidaan tehdä kuvapohjaisesti. Ottamalla valokuvia tarpeeksi monesta kuvakulmasta voidaan myös esittää mielivaltaisen tarkkoja näkymiä. Tyypillinen esimerkki on panoraamakuva, jossa joko kameran kohde tai sen projektiokeskuksen sijainti pysyvät vakiona. Molemmat lähestymistavat ovat äärimmilleen vietynä varsin tehottomia ja parhaaseen tulokseen päästäänkin niiden sopivilla yhdistelmillä. Tasomainen kuvapinnoitus (texture mapping) on yhdistelmistä tunnetuin, mutta toimii hyvin vain tasaisten pintamateriaalien esittämisessä. Sen sijaan, että kuva yhdistettäisiin geometriaan, voidaan geometriatieto myös yhdistää kuvaan. Syvyyskuvissa pikseleistä tallennetaan väriarvon lisäksi syvyys ja niille lasketaan yksitelleen piirtokohta näytöllä katselukulman mukaan. Näin voidaan vähentää merkittävästi kuvapohjaisessa mallinnuksessa tarvittavien kuvakulmien määrää tasomaisten kuvien käyttöön verrattuna. 1
Tässä seminaarityössä käsiteltävä kohokuviopinnoitus (relief texture mapping) on perinteisen kuvapinnoituksen ja puhtaiden syvyyskuvien yhdistelmä. Paperi pohjautuu enimmäkseen Manuel M. Oliveiran julkaisuihin; hyvä tiivistelmä löytyy Oliveiran ja kahden muun kirjoittajan SIGGRAPH 2000-paperista (Oliveira et al., 2000) ja aiheen täydellisempi käsittely Oliveiran väitöskirjasta (Oliveira, 2000). 2 TAUSTAA (a) Tasomaisen kuvan projektio (kuvapinnoitus) (b) Syvyyskuvan projektio (täpläys) Kuva 1: Tasomaisen kuvan käänteisprojektiossakin yksi kohdekameran piste vastaa tasan yhtä alkuperäisen kameran pistettä. Syvyyskuvien tapauksessa kohdekameran piste voi vastata nollaa tai useampaa alkuperäisen kameratason pistettä. (Kuvat: Mc- Millan, hieman muokattuina.) Syvyyspinnoitteiden käyttö kolmioiden piirrossa ei ole uusi keksintö. Suoraviivaisin tekniikka tunnetaan nimellä displacement mapping. Siinä pinnoitettava kolmio jaetaan useampaan pienempään osaan (mikropolygoniin), joiden kulmia sitten siirretään ennen piirtoa pinnan normaalin suuntaisesti pinnoitekuvan pikseleiden syvyyskoordinaattien perusteella. Koska kolmioiden määrä kasvaa, ei tekniikka nopeuta piirtämistä vaan lähinnä helpottaa mutkikkaiden kappaleiden mallintamista. Yleisemmin käytetty ja tehokkaampi tekniikka on painannekuviointi (bump mapping), jossa geometria-alkioita ei lisätä vaan pinnoitekuvia piirrettäessä käännetään aina kulloisenkin pinnoitepikselin (tekseli, texel) normaalia syvyysarvon perusteella sopivaan suuntaan. Tämä vaikuttaa varjostuksessa pikselin kirkautteen. Tulos on parhaimmillaan erittäin vakuuttava, mutta sen heikkoutena on, että pinnoitekuvan pikselit eivät näennäisistä korkeuseroista huolimatta koskaan peitä toisiaan. Leonard McMillan käsittelee väitöskirjassaan (1997) syvyyskuvien piirtoa yleisesti, rajoittumatta perinteiseen kolmiopohjaiseen piirtotekniikkaan. Sen tärkeintä an- 2
Kuva 2: Saman pisteen projektio kahdelle eri perspektiivikameralle tia nyt esiteltävän tekniikan kannalta ovat yhtälöt, joilla voidaan laskea miltä yhdellä kameralla otettu syvyyskuva näyttäisi toisen kameran läpi tarkasteltuna (kuva 1(b)). Kuva 2 esittää asian eksaktimmin: syvyyskuvan pikselin vaaka-, pysty- ja syvyyskoordinaattien (u s, v s ja d s (u s, v s )) sekä kuvan ottaneen kameran s ja kohdekameran t parametrien perusteella voidaan määrätään mihin kohtaan (u t, v t ) piste on piirrettävä kohdekameran projektiotasolla. Kun merkitään ẋ = Ċ + c + u a + v b = P[u, v, 1] T, on (Oliveira et al., 2000): [u t, v t, 1] T = P 1 t P s ẋ s + P 1 t (Ċs Ċt)δ(u s, v s ) (1)...missä δ on ns. yleistetty dispariteetti, joka saadaan syvyyskoordinaatin d s (u s, v s ) = ṗ Ċs perusteella seuraavasta yhtälöstä (McMillan, 1997): δ(u s, v s ) = P sẋ s d s (u s, v s ) Pisteen ṗ etäisyys kohdekameran t projektiokeskuksesta ( C t ) voidaan tarvittaessa laskea soveltamalla yhtälöä 2 toiseen suuntaan: d t (u t, v t ) = P t x t δ(u t, v t ) Tasomaisissa pinnoitekuvissa yksi piste kameralla vastaa aina yhtä pistettä alkuperäisessä kuvassa, minkä vuoksi piirron aikana oikea lähdepikseli määräytyy yksikäsitteisesti kohdekameran pikselin sijainnista (kuva 1(a)). Kun kuvaan lisätään värin lisäksi syvyys, yksikäsitteisyys menetetään; eri kulmasta katsottaessa kuvassa saattaa näkyä reikiä ja osa pikseleistä voi piirtyä päällekäin (kuva 1(b)). Syvyyskuvien piirtoon yleisimmin käytetty tekniikka on täpläys (splatting), jossa pikselit piiretään projisoinnin jälkeen sopivan muotoisina täplinä kohdekameran kuvatasolle (Popescu, 2001). Täplän muodon valinta vaikuttaa syntyvän kuvan laatuun ja piirtotehoon. Popescun mukaan esim. gauss-täplät, joiden läpinäkyvyys kasvaa keskeltä reunoja kohti, tuottavat laadukkaita kuvia mutta ovat hitaita piirtää kun taas neliskulmaiset, tasaväriset täplät ovat nopeita piirtää, mutta tuottavat karkeampia kuvia. Kuvassa 1(b) on piirrettynä Utahin teepannun kylki pyöreitä täpliä käyttäen. 3 (2) (3)
Sprites with depth (Shade et al., 1998) on kohokuviopinnoitusta edeltänyt yritys yhdistää McMillanin yleisiä syvyyskuvia ja kolmiopohjaista grafiikkaa. Siinä syvyyskuva ensin perspektiivimuunnetaan laskennan nopeuttamiseksi, minkä jälkeen se piirretään täpläystekniikalla ruudulle. Tekniikassa käytetyt kaavat kuitenkin vain approksimoivat yhtälöä 1, eikä siinä täpläyksen vuoksi voida hyödyntää nykyisiä 3Dkiihdyttimiä (Oliveira et al., 2000). Kohokuviopinnoitus korjaa osittain molemmat puutteet. 3 KOHOKUVIOPINNOITUS (a) Kappaleen korvaaminen kohokuvapinnoitetulla nelikulmiolla. (b) Väännetty pinnoittuskuva. Vaalennettu osa ei mahtunut alkuperäisen kuvan alueelle vaan leikkautui pois. Kuva 3: Kohokuviopinnoituksen perusperiaate. (Kuvat muokattu Oliveiran paperista) Kuvassa 3 on esitettynä kohokuviopinnoituksen perusperiaate: kameralla 3 otetaan kuva talosta ja tallennetaan pisteiden värin lisäksi myös niiden etäisyys kamerasta 1. Alkuperäinen talo-objekti korvataan sitten nelikulmiolla, jonka pintaan saatu kuva piirretään tavanomaisella, tasomaisella kuvapinnoituksella. Jos katselukulmaa muutetaan 1 Kuvassa on selityksen yksinkertaistamiseksi käytetty perspektiivikameraa myös syvyyskuvan ottamiseen. Edempänä käsiteltävistä syistä siihen käytetään kuitenkin yleensä ortografista kameraa. 4
(esim. katsotaan taloa kameran 2 kautta), väännetään kuvan pikseleitä ennen piirtoa siten, että syntyy haluttu vaikutelma pinnan kolmiulotteisuudesta. Ei ole intuitiivisesti selvää, että edellä kuvatulla menetelmällä vääntämällä pinnoitekuvan pikseleitä ennen pinnoitettavan kolmion kiertoa, perspektiivimuunnosta ja piirtoa voitaisiin tuottaa korrektin näköistä 3D-grafiikkaa. Seuraavaksi esiteltävä todistus onkin kohokuvapinnoituksen tärkein innovaatio: Yhtälön 1 oikeaa puolta tarkastelemalla havaitaan, että sen ensimmäinen termi P s ẋ s ) on syvyyskoordinaatista riippumaton (tasomainen) projektio ja jälkimmäinen termi (P 1 t (Ċs Ċt)δ(u s, v s )) kameratason suuntainen siirtymä. Tasoprojektio, joka sisältää kierron ja perspektiivimuunnoksen, vastaa tavanomaista kuvapinnoitusta. Koska lisäksi vektorien yhteenlaskussa termien paikkaa voidaan vapaasti vaihtaa, on kameratason suuntainen siirtymä esitettävissä pinnoitekuvan pikselien siirrolla ennen pinnoitusta. Kierto ja perspektiivimuunnos voidaan siis jättää esim. 3D-kiihdyttimen hoidettavaksi. Kuvassa 3(b) on väännetty pinnoitekuva ennen kiertoa ja perspektiivimuunnosta (alkuperäinen esittää talon julkisivua suoraan edestä). (P 1 t 3.1 Pinnoitekuvan vääntö Kuva 4: Ortografinen kamera, perspektiivikamera ja kuvan vääntöä varten yhdistetty malli Vaikka syvyyskuva voidaan periaatteessa tuottaa McMillanin kaavojen tapaan perspektiivikameralla, kannattaa tarkoitukseen käyttää mieluummin paralleeliprojektiota 5
eli ortografista kameraa (kuvan 4 vasen yläkulma), sillä pikselisiirtymien laskenta yksinkertaistuu huomattavasti. Kun yhtälön 1 lähdekameramatriisi P s vaihdetaan ortogonaalisen kameran matriisiksi, korvataan yhtälön vasen puoli ([u t, v t, 1] T ) tasomaista kuvapinnoitusta esittävällä kaavalla, kerrotaan matriisit auki ja ratkaistaan u ja v, saadaan pikselien uudet paikat seuraavasti (Oliveira et al., 2000): u = u + k 1d(u, v) 1 + k 3 d(u, v) (4) v = v + k 2d(u, v) 1 + k 3 d(u, v) Koordinaatti (u, v ) on kuvapikselin (u, v) uusi paikka väännön jälkeen, d(u, v) on kyseisen pikselin syvyysarvo ja k 1, k 2, k 3 koko kuvalle yhteisiä, kohde- ja alkuperäiskameran parametreista laskettuja vakioita, joita käsitellään seuraavaksi. Kuvassa 3(a) kameroilla 1 ja 2 on sama projektiokeskus (ċ t ). Talon seinistä kameralle piirrettyjä säteitä tarkastelemalla huomataan, että näkökentän suuruuden muuttaminen tai projektiotason siirto eivät tuo näkyviin aiemmin toisten pisteiden taakse peittyneitä pisteitä tai päinvastoin. Tätä havaintoa hyödynnetään mm. panoraamakuvissa, joissa kameran projektiokeskus pysyy paikallaan, mutta näkymää voi pyöritellä ja zoomata vapaasti ilman, että kuva alkaa näyttää epärealistiselta. Samasta syystä myöskään kohokuviopinnoituksessa vääntö ei alkuperäisen kuvan ottaneen kameran parametrien lisäksi riipu muusta kuin kohdekameran projektiokeskuksen paikasta (ċ t ). Pinnoitettavan kuvan vääntö voidaan siis tehdä varsinaisen kohdekameran sijaan minkä tahansa muunkin samankeskisen kameran parametrien perusteella. Esim. kuvassa 3(a) kameraa 2 varten väännetty pinnoitekuva toimisi aivan yhtä hyvin myös kamerasta 1 katsottuna. Tietoa voidaan käyttää yksinkertaistamaan yhtälöissä 4 ja 5 mainittujen vakioiden k 1, k 2 ja k 3 laskemista: Kun kuvan 4 yläosassa esitetyn kohdekameran (t) projektiotasoa kuvaavat vektorit valitaan samansuuntaisiksi kuin syvyyskuvaa esittävän lähdekameran (s) vektorit, saadaan syntyneen yhdistelmäkameran (kuvan alaosa) avulla yhtälöistä 4 ja 5 puuttuvat vakiot seuraavasti (Oliveira et al., 2000): (5) k 1 = f ( b c) a ( b c) k 2 = f ( c a) a ( b c) k 3 = 1 c f (6) (7) (8) 6
Kuva 5: Kaksivaiheinen kuvapikselien vääntöalgoritmi. Ylärivillä vaakasuuntainen vaihe ja alarivillä pystysuuntainen. (Kuva: Oliveira) 3.2 Kaksivaiheinen toteutus Kun pinnoitekuvan pikselien uudet koordinaatit on laskettu, voitaisiin väännetty kuva tuottaa esim. 2D-täpläyksen avulla. Oliveira esittää kuitenkin paperissaan tehokkaamman tekniikan, joka myös interpoloi pisteiden välit oikein ja välttää siten kuvassa 1(b) näkyvät reiät. Tekniikka edellyttää toimiakseen, että väännettävä syvyyskuva on otettu ortografisella kameralla. Toteutuksessa on kaksi 1-ulotteista vaihetta: kaikkia pikseleitä siirretään ensin vain vaakasuunnassa (yhtälön 4 mukaan) ja sitten vain pystysuunnassa (yhtälön 5 mukaan). Kuvaan 5(a) on merkittynä kaksi pikseliä, A ja B, ja niiden lopulliset sijainnit. Koska A on aivan kuvan reunassa, siirretään se ilman minkäänlaista interpolointia oikeaan kohtaan vaakasuunnassa (kuva 5(b)). Sitten siirretään B:tä ja A:n ja B:n väliin jäävä aukko täytetään interpoloimalla päätepisteiden värejä lineaarisesti (5(c)). Vaakasuuntainen vaihe toimii täsmälleen samalla tavalla. Kuviin 5(d)-(f) on lisätty ylimääräinen piste C kuvaamaan päällekkäisten pikselien interpolointia vaakasuunnassa. Toisin kuin B:tä, A:ta ei tässä vaiheessa interpoloida minkään kanssa, sillä sen päällä tai alla ei ole toista pikseliä. Eri syvyyksillä olevat syvyyskuvan pikselit saattavat tietysti peittää toisensa, joten ne on piirrettävä oikeassa järjestyksessä. Pikseleitä ei kuitenkaan tarvitse eksplisiittisesti järjestää syvyyden mukaan, sillä piirtoon voidaan käyttää McMillanin (1997) esittelemää syvyyskuvan partitiointimenetelmää (kuva 6). Väännettävä kuva jaetaan neljään osaan (6(a)) ja pikselit käydään läpi kuvan 6(b) mukaisessa järjestyksessä. Kuvan jakavien suorien leikkauspiste on kohdekameran projektiokeskuksen Ċt projektio väännettävää kuvaa esittävän ortogonaalikameran projektiotasolla. Kyseinen piste, englanniksi epipole, saattaa osua myös väännettävän kuvan ulkopuolelle. Kaksivaiheinen vääntöalgortimi ei valitettavasti ole aivan täydellinen. Se toimii yleensä hyvin, mutta voi joissain tapauksissa aiheuttaa suorien viivojen kaareutumista, värien interpolointivirheitä ja väärien pisteiden peittymistä (Oliveira, 2000). Oliveira 7
(a) Väännettävän kuvan jako neljään osaan. (Kuva: Oliveira) (b) Pikselien peittyvyyden huomioiva piirtojärjestys. (Kuva: Popescu) Kuva 6: Syvyyskuvan pikseleitä ei tarvitse järjestää syvyyssuunnassa, mikäli vääntöjärjestys valitaan viisaasti. esittää väitöskirjassaan useita tapoja korjata kyseiset virheet. Ne mutkistavat jonkin verran vääntöprosessia, mutta eivät merkittävästi lisää tarvittavaa laskentaa. Väitöskirjassa käsitellään lyhyesti myös vääntövaiheen anti-alias-suodatusta. 4 ONGELMAKOHTIA Käytännön toteutuksissa kohokuviopinnoitus vaatii edellä esiteltyjen perusteiden lisäksi muutamien erikoistapausten käsittelyä. 4.1 Pikseleiden ylivuoto Kuten kuvasta 3 nähdään, pinnoitekuvan pikselit saattavat väännettäessä joutua alkuperäisen kuvan ulkopuolelle. Oliveira käyttää ongelman ratkaisuun yhtä ylimääräistä, alkuperäiseen pinnoitettavaan tasoon nähden kohtisuorassa olevaa nelikulmiota, jolle ylivuotavat pikselit piirretään (kuva 7(a)). Parilov ja Stuerzlinger (2002) ehdottavat toisenlaista ratkaisua. Siinä alkuperäistä monikulmiota suurennetaan siten, että koko väännetty kuva mahtuu sen pinnalle (kuva 7(b)). Vaikka Oliveiran ratkaisu vaatii piirtovaiheessa ylimääräisen nelikulmion ja mutkistaa hieman kuvan vääntövaihetta, on se luultavasti yleensä Parilovin ja Stuerzlingerin menetelmää parempi ratkaisu. Alkuperäistä monikulmiota voidaan nimittäin joutua suurentamaan erittäin paljon, jos sitä katsotaan hyvin jyrkästä kulmasta. 8
(a) Oliveira (b) Parilov ja Stuerzlinger Kuva 7: Kaksi ratkaisua pikseleiden ylivuoto-ongelmaan. 4.2 Epäjatkuvuuskohdat Aiemmin esitelty pinnoitekuvan pikselien välinen interpolointi voi aiheuttaa epätoivottuja tuloksia, jos interpoloitavat pisteet eivät todellisuudessa kuulukaan samaan kappaleeseen. Esimerikkikuvan talossa tätä ongelmaa ei ole, mutta vaikkapa alun perin suoraan edestä kuvattuja ihmisen kasvoja ylhäältä päin katsottaessa voitaisiin silmälasien kehykset helposti interpoloida kiinni kulmakarvoihin. Oliveira käsittelee epäjatkuvuuskohdat paperissaan tunnistamalla ne äkkinäisistä syyvyden vaihteluista ja jättämällä niiden eri puolille jäävät naapuripikselit interpoloimatta. 4.3 Z-buffer Tässä esitetty menetelmä näyttää oikealta vain, jos muut kappaleet eivät leikkaa kohokuvioitua pintaa tai jos syvyysvaihtelut ovat hyvin pieniä. Ongelman korjaamiseksi on värien lisäksi interpoloitava myös kohdekamerasta riippuvia Z-arvoja, jotka voidaan laskea seuraavasta yhtälöstä (Oliveira et al., 2000): Zẋ = c 1 + u s c 2 + v s c 3 + d(u, v)c 4 (9) Luvut c 1 = c n, c 2 = a s n, c 3 = b s n ja c 4 = f s n ovat vakioita koko pinnoitettavan tason alueella, vektori n on tason yksikkönormaali ja muut muuttujat samoja kuin aiemmin esitellyissä vääntöyhtälöissä. 9
4.4 Tehokkuusnäkökohtia Oliveiran testien mukaan n. 94% suoritinajasta menee pinnoitekuvan vääntöön ja vain n. 0.066% kolmioiden piirtoon. Nykyisellään kohokuviopinnoituksen hyödyt siis alkavat näkyä vasta, kun syvyyspikselien määrä on suuri pienillä määrillä mikropolygonien käyttö on kannattavampaa. Vika ei ole itse menetelmässä; pinnoitekuvien vääntö ei ole perspektiivikorjattuun, tasomaiseen kuvapinnoitukseen verrattuna erityisen raskas operaatio, mutta 3Dkiihdyttimet on optimoitu erittäin pitkälle jälkimmäistä varten. Kiihdyttimiin voitaisiin väännön 1-ulotteisen luonteen vuoksi kohtuullisen helposti ohjelmoida sisään tuki myös kohokuviopinnoitukselle, jolloin tekniikan hyödyt saataisiin todella käytöön. Jos piirrettävät pinnoitekuvat ovat suuria niiden kohdekameralla näkyvään projektioon verrattuna, tehdään vääntövaiheessa paljon turhaa työtä kun suurin osa pikseleistä ei näy lopullisessa kuvassa lainkaan. Ongelma voidaan ratkaista helposti käyttämällä samasta pinnoitekuvasta useaan eri tarkkuuteen skaalattuja versiota mip-maptekniikan tapaan (Oliveira et al., 2000). 5 LAAJENNUKSIA 5.1 Kiinteiden objektien mallinnus Kuva 8: Kolmiulotteisen kappaleen esittäminen kohokuviopinnoitetun, suorakulmaisen särmiön avulla. (Kuva: Oliveira) Kohokuviopinnoituksella voidaan esittää esimerkkinä käytetyn talon julkisivun kaltaisten "kulissien"lisäksi myös kokonaisia, kiinteitä kappaleita. Kuva 8 esittelee idean kaikessa yksinkertaisuudessaan. Satyyripatsaasta on otettu yksi kuva jokaista kuution tahkoa kohti. 10
5.2 Monikerroksiset syvyyskuvat Tässä paperissa esitellyllä tekniikalla ei voida esittää monikerroksisia pintoja. Oliveira ehdottaa useamman kohokuvion piirtämistä päällekäin, mikä tietysti toimii, mutta vaatii jo kahdella kerroksella kaksinkertaisesti muistia ja piirtotehoa. Parilov ja Stuerzlinger (2002) esittävät pidemmälle mietityn laajennuksen. Siinä syvyyskuvan jokaisella pikselillä voi olla useampia kerroksia. Tekniikassa yhdellä kohokuviolla voidaan periaatteessa esittää mielivaltaisen mutkikkaita kappaleita. Parilovin ja Stuerzlingerin LRT (Layered Relieft Texture)-tekniikka vaatii monikerroksisuutensa vuoksi täpläyksen käyttöä, mutta vain 2-ulotteisessa pinnoitekuvan vääntövaiheessa. LRT siis hyödyntää edellä esitettyä yhtälön 1 faktorointia vääntöja kierto-/perspektiivimuunnosvaiheiden erottamisessa. Tehokkaasti piirrettävillä neliskulmaisilla täplillä saavutetaan sen ansiosta lähes aiemmin mainittujen pehmeäreunaisten gauss-täplien tasoisia kuvia. 5.3 Sylinterimäiset pinnat Yhtälöt 4 ja 5 soveltuvat vain paralleeliprojisoitujen, tasomaisten syvyyskuvien käyttöön. ElHelw ja Yang (2003) ovat julkaisseet yhtälöistä sylinteripintoja tukevat versiot. Niiden avulla sylinterimäisissä panoraamakuvissa voidaan sallia kameran liikkuvan jonkin verran alkuperäisen projektiokeskuksensa ympärillä illuusion rikkoutumatta. 6 YHTEENVETO Tässä seminaarityössä esiteltiin kohokuviopinnoitus- eli relieft texture mapping-tekniikkaa, joka yhdistää kuvapohjaisen mallinnuksen geometriapohjaiseen. Sen erityisenä hyötynä on, että syvyyskuvien edut voidaan helposti tuoda tavanomaisten, kolmioiden piirtoon perustuvien järjestelmien kuten OpenGL:n osaksi, ja hyödyntää siten nykyisin edullisia 3D-kiihdyttimiä. Vaikka tarvittava laskenta on periaatteessa kevyttä, kohokuviopinnoituksen käytännöllisyyttä reaaliaikaisissa sovelluksissa rajoittaa toistaiseksi suoran kiihdytintuen puuttuminen. Pinnoitekuvien vääntö voidaan tehdä kahdella peräkkäisellä 1-ulotteisella ajolla, mikä olisi helposti toteutettavissa integroidun piirin avulla. Kohokuviopinnoitusta on laajennettu myös sylinterimäisten pintojen ja monikerroksisten syvyyskuvien piirtoon. Kiinnostavia jatkotutkimuksen aiheita voisivat laitteistokiihdytyksen lisäksi olla esim. kohokuvioiden varjostaminen ja tuki pallomaisille pinnoille. LÄHTEET McMillan Leonard. 1997 (Apr). An Image-Based Approach to Three-Dimensional Computer Graphics. Ph.D. thesis, University of North Carolina. 11
Oliveira Manuel M. 2000 (Mar). Relief Texture Mapping. Ph.D. thesis, University of North Carolina. Oliveira Manuel M., Bishop Gary & McAllister David. 2000. Relief Texture Mapping. Pages 359 368 of: Akeley Kurt (ed), Siggraph 2000, Computer Graphics Proceedings. ACM Press / ACM SIGGRAPH / Addison Wesley Longman. Popescu Voicu S. 2001 (May). Forward Rasterization: A Reconstruction Algorithm for Image-Based Rendering. Ph.D. thesis, University of North Carolina. Shade Jonathan W., Gortler Steven J., He Li-Wei & Szeliski Richard. 1998. Layered Depth Images. Computer Graphics, 32(Annual Conference Series), 231 242. 12