Tietokonegrafiikka Jyry Suvilehto T-110.1100 Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2014
1. Sovellusalueita 2. Rasterigrafiikkaa 3. Vektorigrafiikkaa 4. 3D-grafiikkaa 1. Säteenheitto 2. Säteenseuranta Luennon sisältö Luento pohjautuu Timo Tossavaisen ja Jaakko Lehtisen vastaavan luennon esityksiin 2
1991 Wolfenstein 3D 2014 Wolfenstein: The New Order 3
Animaatio, elokuvat http://vimeo.com/16292363 vs 4
Simulointi 5
The Light of Mies van der Rohe http://graphics.stanfor d.edu/~henrik/animati ons/ Arkkitehtuuri 6
KAIKKI SOVELLUKSET RAKENTUVAT SAMOILLE PERUSPERIAATTEILLE 7
Digitaaliset kuvat koostuvat pikseleistä hilassa Pikselillä voi olla väri Tyypillinen esitys muistissa Pikselit peräkkäin Saman pikselin värikomponentit peräkkäin Rasterigrafiikka 8
Rasteriarkkitehtuuri 9
Rasteriesityksen ongelmia Rakenteeton Pelkkiä pikseleitä Tarvitsee paljon tilaa Vaikea muokata (zoomata, kiertää) Toimivuus riippuu näytön tarkkuudesta 10
Vektorigrafiikka Kuvataan piirrettävä kuva matemaattisten primitiivien avulla Ääretön tarkkuus Primitiivit muodostavat kokonaisuuksia Renderoidaan eli muodostetaan kuva rasterille Resoluutioriippumaton: tarkkuuden voi valita renderointivaiheessa Osat erikseen muokattavissa 11
Täytyy määritellä Primitiivit Operaatiot: Vektorigrafiikka Siirto, skaalaus, kierto Leikkaukset, etäisyyksien määritteleminen Rasterointi eli piirtäminen 12
Muunnokset vektorigrafiikassa Siirrot, kierrot ja skaalaukset on esitettävissä matriiseilla, kun koordinaattivektoreiden loppuun lisätään 1 Esim siirto x y verran matriisimuodossa 1 0 0 0 1 0 x x x x y y y y 1 1 1 Kuvauksien yhdistäminen = matriisikertolasku Käänteismatriisi = käänteiskuvauksen matriisi Projektiiviset muunnokset esitettävissä homogeenisilla koordinaateilla operoivilla matriiseilla samaistamalla (wx, wy, w) w 0 pisteen (x, y) koordinaateiksi 13
Vektorigrafiikan primitiivit Säilyttävä muunnoksissa, projektiivisissa esim. Suora suora Kolmio kolmio Hypertaso hypertaso Tehokas kuvata, leikata ja piirtää Suora, puolisuora, jana, hypertaso, pallo, ellipsoidi, kolmio, monikulmio, kartioleikkaus 14
Geometrinen laskenta Piirtoalgoritmit rakentuvat primitiivien välisten geometristen laskelmien päälle Etäisyydet ja leikkaukset C Q X1 X2 P u B P C r A 15
Piirretään kuva geometrisesta primitiivistä Rasterointi 16
Mallintaminen Koostetaan kuvio matemaattisista primitiiveistä Muunnoksilla voidaan muokata kaikkia pisteitä yksi kerrallaan Kierto Siirto Mittakaava Voidaan piirtää eri resoluutioisille näytöille 17
Katselu ja renderöinti Piirrosta katsellaan ikkunan (window) läpi Ikkunasta näkyvä osuus piirretään näyttöalueeseen (viewport) esim. primitiivi kerrallaan 18
Leikkaaminen Näyttöalueen ulkopuolisia osia ei piirretä Hidasta laskea joka pikselille piirretäänkö se Yleensä primitiivit leikataan näyttöalueeseen ennen piirtoa 19
Antialiasointi Primitiivit ovat äärettömän tarkkoja Pikselin värin poimiminen pistemäisestä näytteestä aiheuttaa laskostumista (aliasing) Optimi: alipäästösuodatetaan ideaalikuvaa Käytännössä: piirretään korkeammalla resoluutiolla ja pienennetään tai käsitellään osittainen pikselin peitto fiksusti 20
3D-vektorigrafiikka Periaatteet samat kuin 2D-grafiikassa Ulottuvuuksia yksi lisää Primitiivit kolmiulotteisia Muunnokset kolmiulotteisia (eli 4x4-matriisi, koska lisätään loppuun 1) Pitää tehdä projektio tasolle Perspektiiviprojektio Yhdensuuntaisprojektio (esim. Tekniset piirrokset) Näkyvyysongelma, asiat voivat peittää toisensa Sävytys, valolla voi olla suunta ja kappaleet voivat olla varjossa 21
Perspektiiviprojektio n projektio u P katsoja ikkuna Katselutaso projektiotaso 22
Näkyvyysongelma Myöhemmin piirretyt primitiivit peittävät aiemmin piirretyt Kuution voi piirtää sivu kerrallaan monella eri tavalla 23
Säteenheitto Heitetään säde jokaisen kuvapisteen läpi Etsitään säteen leikkaukset primitiivien kanssa Lähin leikkauspiste on näkyvä pinnan piste 24
Syvyyspuskuri (Z-buffer) Pidetään kirjaa jokaiseen pikseliin piirretyn pinnan pisteen syvyydestä Piirretään uudelleen pikseli, jos pinnan pistä lähempänä kuin aiempi Läpinäkymättömät primitiivit voidaan piirtää mielivaltaisessa järjestyksess Nopea: käytetyin tekniikka reaaliaikaisessa grafiikassa 25
Sävytys Pinnalta havaitun värin muodostaminen Valaistus, teksturointi, kuhmutus 26
Valaistus Lambertin malli: pinnan normaali määrittää pisteen valoisuuden määrän Phongin malli: taustavalo (ambient) + hajaheijastuva valo (diffuse, mattapinta) + peiliheijastuva valo (specular) Yksinkertaiset valonlähteet Spotti Yleisvalo (ambient) Suuntavalo 27
Valaistus Lambertin malli: pinnan normaali määrittää pisteen valoisuuden määrän Phongin malli: taustavalo (ambient) + hajaheijastuva valo (diffuse, mattapinta) + peiliheijastuva valo (specular) Yksinkertaiset valonlähteet Spotti Yleisvalo (ambient) Suuntavalo n r θ θ α e 28
Lambert shading Pupu koostuu kolmioista Ei tekstuuria Phongin malli Tekstuuri Kolmion sisällä pisteiden normaalit interpoloidaan 29
Ohjelmoitava sävytys Liitetään mallin kulmapisteisiin tietoa, joka interpoloidaan kolmioiden yli Sävytysfunktio (pixel/fragment shader) laskee pinnan värin vakioista ja interpoloidusta tiedosta, mm. Valonlähteiden paikat ja tyypit Materiaalin valaistusominaisuudet Tekstuurit ja tekstuurikoordinaatit Pinnan hienorakenne Joissakin tekniikoissa useita piirtokertoja (mm. varjot) 30
Grafiikan liukuhihna 1. Mallinna geometria Tässä verkko kolmioita Pinnnan materiaali on hyvä olla tiedossa Objektin koordinaatit 31
Grafiikan liukuhihna 1. Mallinna geometria Tässä verkko kolmioita Pinnnan materiaali on hyvä olla tiedossa 2. Lisää objektit maailman koordinaatistoon Jokaisella objektilla on oma koordinaatistonsa Vain yksi maailman koordinaatisto objekti Objektin koordinaatit Maailman koordinaatit Toinen objekti Maailman origo 32
Grafiikan liukuhihna 1. Mallinna geometria Tässä verkko kolmioita Pinnnan materiaali on hyvä olla tiedossa 2. Lisää objektit maailman koordinaatistoon Jokaisella objektilla on oma koordinaatistonsa Vain yksi maailman koordinaatisto 3. Valitse katselupaikka ja suunta objekti Objektin koordinaatit Maailman koordinaatit Kameran koordinaatit Toinen objekti Maailman origo 33
Grafiikan liukuhihna 1. Mallinna geometria Tässä verkko kolmioita Pinnnan materiaali on hyvä olla tiedossa 2. Lisää objektit maailman koordinaatistoon Jokaisella objektilla on oma koordinaatistonsa Vain yksi maailman koordinaatisto 3. Valitse katselupaikka ja suunta 4. Muuta objektit katselukoordinaatistoon ja projisoi kuvatasolle Laske valaistus ja piirrä kuva! Objektin koordinaatit Maailman koordinaatit Kameran koordinaatit Kuvan koordinaatit 34
Grafiikan liukuhihna Objektin koordinaatit Maailman koordinaatit Kameran koordinaatit Kuvan koordinaatit 35
Grafiikkaliukuhihnan ominaisuuksia Piirtää primitiivin kerrallaan Ei tarvitse tietoa koko näkymästä Läpinäkymättömien primitiivien piirtojärjestys vapaa Laitteistokiihdytetty Monta rinnakkaista liukuhihnaa (pipelineä) laskee yhtä aikaa Suurelta osin ohjelmoitavissa Maiseman geometriaa tarvitsevien tekniikoiden toteutus hankalaa (heijastukset, varjot, globaali valaistus) 36
Animaatio Animaatiossa muutetaan koordinaattimuutoksia ajan funktiona Objektin koordinaatit Maailman koordinaatit Kameran koordinaatit Kuvan koordinaatit 37
Liikkeen mallintaminen Määritellään mallille luuranko ja sidotaan pinnan primitiivit luurankoon Käännetään luurankoa nivelien kohdalta ja pinta seuraa mukana Haaste: pehmeät kudokset, joustavuus 38
Virtuaalimaailmaa tehtäessä otettava huomioon Virtuaalimaailma Fysiikka, törmäykset Maailman kanssa vuorovaikuttaminen 39
Säteenseuranta Säteenseurannassa (ray tracing) grafiikkaliukuhihnan askeleet tehdään käänteisessä järjestyksessä Objektin koordinaatit Maailman koordinaatit Kameran koordinaatit Kuvan koordinaatit 40
Säteenseurannassa ammutaan valonsäteitä kamerasta rasterihilan läpi kohti objekteja Säteet heijastuvat kohtaamistaan pinnoista kunnes päätyvät valonlähteeseen Laskennallisesti raskasta, tarvitsee tietoa koko maailmasta Läpinäkyvyys, taittuminen ja heijastukset mahdollisia Säteenseuranta 41
Säteenseuranta / Fotorealismi 42
ME-C3100 ME-E4100 Grafiikkaa Aallossa Tuore proffa maailmalta, pitänyt vastaavia kursseja MIT:ssä viimeaikoina Suositeltavia, mutta raskaita Ohjelmointi ja matematiikka olisi hyvä osata riittävän hyvin etukäteen 43