TIES471 Reaaliaikainen renderöinti

Samankaltaiset tiedostot
TIES471 Reaaliaikainen renderöinti

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

Luento 7: Lokaalit valaistusmallit

Tietokonegrafiikka. Jyry Suvilehto T Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2014

T Johdatus tietoliikenteeseen ja multimediatekniikkaan Tietokonegrafiikka

Visualisoinnin perusteet

Luento 3: 3D katselu. Sisältö

TIES471 Reaaliaikainen renderöinti

BM20A5800 Funktiot, lineaarialgebra ja vektorit Harjoitus 4, Syksy 2016

Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat

T Tietokonegrafiikan perusteet. OpenGL-ohjelmointi

Yksinkertaistaminen normaalitekstuureiksi

Tilanhallintatekniikat

Esityksen sisältö. Peruskäsitteitä. 3D Grafiikka tietokonepeleissä. Piirto- ja taustapuskuri

Ratkaisu: Maksimivalovoiman lauseke koostuu heijastimen maksimivalovoimasta ja valonlähteestä suoraan (ilman heijastumista) tulevasta valovoimasta:

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

TIES471 Reaaliaikainen renderöinti

Insinöörimatematiikka D, laskuharjoituksien esimerkkiratkaisut

10.2. Säteenjäljitys ja radiositeettialgoritmi. Säteenjäljitys

Sisällys. T Tietokonegrafiikan perusteet. OpenGL-ohjelmointi 11/2007. Mikä on OpenGL?

Reaaliaikainen karvapeitteen piirtäminen näytönohjaimella

Juuri 4 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Kertaus. b) B = (3, 0, 5) K2. ( )

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

5. Grafiikkaliukuhihna: (1) geometriset operaatiot

kaikki ( r, θ )-avaruuden pisteet (0, θ ) - oli θ

8.7. Kolmiulotteiset tekstuuritekniikat. Kolmiulotteinen kohina eli häiriö. Turbulenssin simulointi. turbulence

Vektorit, suorat ja tasot

4. Esittäminen ja visualisointi (renderöinti)

z 1+i (a) f (z) = 3z 4 5z 3 + 2z (b) f (z) = z 4z + 1 f (z) = 12z 3 15z 2 + 2

3D-renderöinti OpenGL-ohjelmointirajapinnalla

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

T Vuorovaikutteinen tietokonegrafiikka Tentti

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 9: Muuttujanvaihto taso- ja avaruusintegraaleissa

Muodonmuutostila hum

Reaaliaikaiset varjoalgoritmit. Atso Kauppinen

(ks. kuva) ja sen jälkeen x:n ja y:n suhteen yli xy-tasossa olevan alueen projektion G:

A B = (1, q, q 2 ) (2, 0, 2) = 2 2q q 2 = 0 q 2 = 1 q = ±1 A(±1) = (1, ±1, 1) A(1) A( 1) = (1, 1, 1) (1, 1, 1) = A( 1) A(1) A( 1) = 1

MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 10: Moninkertaisten integraalien sovelluksia

Tekijä Pitkä matematiikka Suoran pisteitä ovat esimerkiksi ( 5, 2), ( 2,1), (1, 0), (4, 1) ja ( 11, 4).

3D animaatio: liikekäyrät ja interpolointi. Tommi Tykkälä

Luento 7: 3D katselu. Sisältö

Tekstuurien sovellukset

3D-Maailman tuottaminen

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 10: Moninkertaisten integraalien sovelluksia

VEKTORIT paikkavektori OA

T Johdatus tietoliikenteeseen ja multimediatekniikkaan Tietokonegrafiikka

Lauseen erikoistapaus on ollut kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa seuraavassa muodossa:

Tapio Takala / Lauri Savioja Teknillinen korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio

Ristitulolle saadaan toinen muistisääntö determinantin avulla. Vektoreiden v ja w ristitulo saadaan laskemalla determinantti

8. Kuvaustekniikat. Tämän kuvauksen esittäminen ei ole kuitenkaan suoraviivaista. Niinpä se käydään läpi kaksivaiheisena

MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 10: Napa-, sylinteri- ja pallokoordinaatistot. Pintaintegraali.

MATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ Merkitään f(x) =x 3 x. Laske a) f( 2), b) f (3) ja c) YLIOPPILASTUTKINTO- LAUTAKUNTA

Antti Rasila. Kevät Matematiikan ja systeemianalyysin laitos Aalto-yliopisto. Antti Rasila (Aalto-yliopisto) MS-A0204 Kevät / 16

Tik Tietokoneanimaatio

Osoita, että kaikki paraabelit ovat yhdenmuotoisia etsimällä skaalauskuvaus, joka vie paraabelin y = ax 2 paraabelille y = bx 2. VASTAUS: , b = 2 2

3D-mallinnus ja teksturointi tietokonepeleissä

a(t) = v (t) = 3 2 t a(t) = 3 2 t < t 1 2 < 69 t 1 2 < 46 t < 46 2 = 2116 a(t) = v (t) = 50

MS-A0305 Differentiaali- ja integraalilaskenta 3 Luento 3: Vektorikentät

Ota tämä paperi mukaan, merkkaa siihen omat vastauksesi ja tarkista oikeat vastaukset klo 11:30 jälkeen osoitteesta

Vektoreiden A = (A1, A 2, A 3 ) ja B = (B1, B 2, B 3 ) pistetulo on. Edellisestä seuraa

T Tietotekniikan peruskurssi: Tietokonegrafiikka. Tassu Takala TKK, Tietoliikenneohjelmistojen ja multimedian laboratorio

Koordinaatistot 1/6 Sisältö ESITIEDOT: reaaliluvut

läheisyydessä. Piirrä funktio f ja nämä approksimaatiot samaan kuvaan. Näyttääkö järkeenkäyvältä?

763306A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 2 Kevät 2017

3D-grafiikkamoottorin toteutus

Neliömatriisi A on ortogonaalinen (eli ortogonaalimatriisi), jos sen alkiot ovat reaalisia ja

A-osio. Tehdään ilman laskinta ja taulukkokirjaa! Valitse tehtävistä A1-A3 kaksi ja vastaa niihin. Maksimissaan tunti aikaa suorittaa A-osiota.

Käyrien välinen dualiteetti (projektiivisessa) tasossa

Yleistä vektoreista GeoGebralla

Suorien ja tasojen geometriaa Suorien ja tasojen yhtälöt

KRISTALLOGRAFIASSA TARVITTAVAA MATEMA- TIIKKAA

Anssi Höykinpuro OPENGL ES VARJOSTIMET KAJAK3D PELIMOOTTORISSA

Avaruuden kolme sellaista pistettä, jotka eivät sijaitse samalla suoralla, määräävät

T Johdatus Tietoliikenteeseen ja Multimediaan

x = y x i = y i i = 1, 2; x + y = (x 1 + y 1, x 2 + y 2 ); x y = (x 1 y 1, x 2 + y 2 );

Vektorialgebra 1/5 Sisältö ESITIEDOT: vektori

Rendaaminen Brazililla

11. Tilavuusrenderöinti

Kuva 1: Tehtävä 1a. = 2π. 3 x3 1 )

Tassu Takala Teknillinen korkeakoulu Mediatekniikan laitos

Suora. Määritelmä. Oletetaan, että n = 2 tai n = 3. Avaruuden R n suora on joukko. { p + t v t R},

NORMAL MAP -TEKNIIKAN KÄYTTÖ 3D-MALLINNUKSESSA

Kahden suoran leikkauspiste ja välinen kulma (suoraparvia)

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

F dr = F NdS. VEKTORIANALYYSI Luento Stokesin lause

ELEC C4140 Kenttäteoria (syksy 2015)

7.6. Fysikaalinen peiliheijastus. Pinnan mikrogeometrian mallintaminen. Varjostus ja peittämisvaikutukset

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47

ELEC-A4130 Sähkö ja magnetismi (5 op)

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Esimerkkejä ym., osa I

Suorat ja tasot, L6. Suuntajana. Suora xy-tasossa. Suora xyzkoordinaatistossa. Taso xyzkoordinaatistossa. Tason koordinaattimuotoinen yhtälö.

12. Derivointioperaattoreista geometrisissa avaruuksissa

TIMO SALOKAS MICROSOFTIN DIRECTX-TEKNIIKKA JA ANTIALIASOINTI. Kandidaatintyö

6 MATRIISIN DIAGONALISOINTI

Suora 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste

Transkriptio:

TIES471 Reaaliaikainen renderöinti

5.1 Valonlähteet Yksinkertaisin valolähde on pistemäinen valo (point light), joka säteilee joka suuntaan annetulla voimakkuudella ja värillä. Suunnattu valo (directional light) säteilee näkymän jokaiseen pisteeseen samansuuntaisesti; esim. aurinko. Ympäröivä valo (ambient light) on ympäristöstä heijastuva valo. Kohdevalo (spotlight) säteilee kartion muotoiseen kiilaan. Valo on voimakkaampi kartion keskellä. http://www.cs.uic.edu/~jbell/coursenotes/computergraphics/lightingandshading.html

5.2 Varjostus (sävytys) Varjostusprosessissa lasketaan materiaalin pinnasta ulospäin suuntautuva valon määrä L 0 katselusädettä pitkin materiaalin ominaisuuksien ja valonlähteiden perusteella. Peiliheijastustermi (specular) termi kertoo materiaalin pinnasta heijastuneen valon määrän : M spec = c spec E L cosθ i, missä E L valon tehotiheys tasolla, joka kohtisuorassa valon suuntavektoria l vastaan Diffuusiheijastustermi kertoo siirtyneen (transmission), imeytyneen n (absorption) ja sironneen (scattering) valon määrän: M diff = c diff E L cosθ i, missä E L valon tehotiheys tasolla, joka kohtisuorassa valon suuntavektoria l vastaan p θ i l

5.2 Varjostus (sävytys) h n Varjostusfunktio materiaalista lähtevälle valolle, kun käytetään yhtä valon lähdettä: v θ h θ i l L O v = ( c diff π + m + 8 8π cosm θ h c spec ) E L cosθ i p missä m on pinnan sileyttä kuvaava parametri ja c diff ja c spec ovat vakioita.

5.2 Varjostus (sävytys) Varjostusfunktiota lasketaan yleensä verteksi- ja pikselivarjostimilla. Varjostinfunktion toteutuksessa tulee huomioida laskentojen taajuus : *Mallikohtainen (per-model) : ilmiön koskiessa koko mallia voidaan laskenta suorittaa yhdellä kertaa sovelluksessa ja antaa tulos grafiikka-api:lle. *Primitiivikohtainen (per-primitive) : ilmiön koskiessa piirtoprimitiiviä (kolmio, viivasegmentti) laskenta suoritetaan geometriavarjostimella (tai verteksivarjostimella, mikäli viereisten verteksien tietoja tarvita). *Verteksikohtainen (per-vertex) : ilmiön koskiessa verteksiä laskenta suoritetaan verteksi-varjostimella ja tulokset lineaarisesti interpoloidaan yli verteksiin liittyvän kolmion käyttäen pikselivarjostinta. *Pikselikohtainen (per pixel) : pikselikohtaiset laskennat suoritetaan pikselivarjostimella.

5.2 Varjostus (sävytys) h n Erotetaan mallikohtaiset alilausekkeet : n v θ h θ i l L O v = (K d + K S cos m θ hk ) E Lk cosθ ik k=1 p missä K d = c diff /π, K s = ((8 + m) / 8 π)*c spec Käytettäessä yhdensuuntaisia valonlähteitä l k ja E Lk ovat vakioita. θ hk ja θ ik muuttuvat läpi monikulmion. cos θ lasketaan l k ja n välisellä tai h k ja n välisellä pistetulolla. n = pinnan normaali h = puolivektori v = katselusuunta l = valon suunta l+v h =, p = p v p l+v p v p

5.2 Varjostus (sävytys) h n float3 Shade ( float3 p, float3 n, uniform float3 pv, uniform float3 Kd, uniform float3 Ks, uniform float m, uniform uint lightcount, uniform float3 1[MAXLIGHTS], uniform float3 EL[MAXLIGHTS]) { float3 v = normalize(pv - p); float3 Lo = float3(0.0f,0.0f,0.0f); v θ h θ i p l for (uint k = 0; k < lightcount; k++) { float3 h = normalize(v + l[k]); float costh = saturate(dot(n, h)); float costi = saturate(dot(n, l[k])); Lo += ((Kd + Ks * pow(costh, m)) * EL[k] * costi; } } return Lo;

5.2 Varjostus (sävytys) Koska suoritetaan Shade-kutsu? Verteksinormaaleja käytettäessä primitiivikohtainen varjostuslaskenta ei tuota sulavaa lopputulosta (flat shading). Verteksikohtainen varjostus ja sen jälkeinen lineaarinen interpolointi tuottaa paremman lopputuloksen; Gouraud ( guh row ) varjostus. Verteksin normaali ja paikka maailmankoordinaateissa annetaan syötteenä Shade-funktiolle. Pikselivarjostin tulostaa suoraan interpoloidun arvon. Gouraud-varjostus toimii hyvin mattapinnoilla. Phong-varjostuksessa verteksivarjostin kirjoittaa maailman koordinaatistossa sijaitsevat verteksien normaalit ja positiot interpoloituihin arvoihin. Pikselivarjostin antaa ne Shade-funktiolle, jonka paluuarvo kirjoitetaan kehyspuskuriin.

5.3 Aliasoituminen ja antialisointi Monikulmion reunat näyttävät näytöllä kulmikkailta ja porrastuneilta. Reunojen porrastumista sanotaan aliasoitumiseksi. Aliasoituminen johtuu riittämättömästä näyttökehyksen resoluutiosta esittämään yksityiskohdat selvästi. Nyquist: kuvasignaalin näytteenottotiheys pitää olla vähintään kaksi kertaa yhtäsuuri kuin näytteistettävän signaalin maksimitaajuus. On mahdotonta välttää täysin aliasoitumista käytettäessä pisteitä (näytteitä) näkymän renderöintiin. Antialisointimenetelmiä esitellään teksturoinnin yhteydessä. http://www.niksula.cs.hut.fi/~pjryynan/stu4portfolio/antialiasointi/antialiasointi.html

6.1 Tekstuuriliukuhihna Teksturointi muokkaa varjostusfunktiossa käytettävien parametrien arvoja perustuen pinnan positioon. Toisin sanoen näkymän kappaleen pinnan väriksi tietyssä pisteessä asetetaan tekstuurin (kuvan) diffuusivärin arvo. Esimerkiksi kiilloon (gloss) visualisointiin tarkoitettu tekstuuri vaikuttaa sitä vastaavaan parametriin tai kyhmytykseen (bumb mapping) tarkoitettu tekstuuri vaikuttaa pinnan normaalin arvoon. Kuvatekstuurin pikseleitä kutsutaan tekseleiksi (texel). Projektiofunktio Vastaavuusfunktio Tulos Muunnosfunktio paikka mallikoordinaatistossa paikka uvkoordinaatistossa paikka tekstuurikoordinaatistossa tekstuurin (väri)arvo muunettu tekstuurin (väri)arvo

6.1 Tekstuuriliukuhihna Liukuhihnan alussa tekstuurin paikka esitetään mallikoordinaatistossa (tai maailman koordinaatistossa). Projektiofunktio muuntaa mallikoordinaatit kaksiulotteisiin (u,v)- koordinaatteihin (tekstuurikoordinaatit). Esimerkiksi ortografista projektiota voidaan käyttää muunnoksessa. Puhutaan tekstuurimappauksesta (texture mapping). Vastaavuusfunktiolla (corresponder function) (u,v) -koordinaatit skaalataan tekstuurin koon alueeseen. Skaalatut (u,v) -koordinaatit osoittavat tekselin väriarvoon. Lopuksi saadut väriarvot muunnetaan varjostusfunktiolle sopiviksi.

6.1.1 Teksturoinnin projektiofunktio 1. askel teksturointiliukuhihnalla projisoi pinnan pisteen kaksiulotteiseen (u,v) -avaruuteen. Projektiofunktion tarkoitus on tuottaa tekstuurikoordinaatteja. Mallinnussovelluksissa (u,v) koordinaatit määritellään (yleensä) verteksi kohtaisesti. Mallinnusohjelmistoissa voidaan käyttää esimerkiksi pallomaisia (spherical), sylinterimäisiä (cylindrical) ja tasomaisia projektiofunktiota. Projektiofunktioina käytetään myös parametrisoitu kaarevia pintoja, jotka sisältävät itsessään (u,v) koordinaatit. Tässä tapauksessa ei ole siis kysymys projektiosta. Yleensä projektiofunktiota käytetään mallinnusvaiheessa ja tulokset tallentaan vertekseihin. Joissakin tapauksissa voi kuitenkin olla järkevää toteuttaa projektiofunktio verteksi- tai pikselivarjostimessa; animointi.

6.1.1 Projektiofunktio Parametriavaruus voi olla kolmi- tai neliulotteinen. Kolmiulotteisessa tapauksessa tekstuurikoordinaatit esitetään vektorina (u, v, w), missä w projektiosuunnan syvyys. Parametriavaruus voi olla tyypiltään suuntaava, jossa jokainen piste edustaa jotakin suuntaa; esimerkiksi kuutiokartta (cube map). Käytettäessä moniteksturointia (multitexturing) tarvitaan jokaiselle tekstuurille omat tekstuurikoordinaatit. Lopullisten tekseli arvojen saantiin käytetään interpolointia.

6.1.2 Vastaavuusfunktio Vastaavuusfunktio muuntaa (skaalaa) parametriavaruuden koordinaatit tekstuuriavaruuden koordinaateiksi. Vastavuusfunktio tarjoaa joustavan tavan asettaa tekstuuri näkymän kappaleen pinnalle. Vastaavuusfunktio voi olla muunnosmatriisi, joka suoritetaan verteksille tai pikselivarjostimelle. Muunnosmatriisilla tekstuuria voidaan siirtää, pyörittää, skaalata, vääntää,... Vastaavuusfunktiolla voidaan valita jokin tekstuurin osa käytettäväksi kappaleen teksturoinnissa. Vastaavuusfunktiolla voidaan hallita tekstuurin käyttäytymistä määritellyn alueen sisä- ja ulkopuolella.

6.1.2 Vastaavuusfunktio Käärintä (wrap, DirectX), toisto (repeat, OpenGL) tai laatoitus (tile): kuvaa toistetaan koko pinnan yli. Peilaus (mirror): Kuvaa toistetaan koko pinnan yli, mutta sen peilikuvaa käytetään joka toisella toistolla. Puristus (clamp) tai purista reunaan (clamp to edge). Tekstuuriarvot lukualueen ulkopuolella [0..1) puristetaan alueelle. Toiminnallisuus on estää vastakkaisen puolen tekselien käytön bilineaarisessa interpoloinnissa. Rajoitus (border) tai purista rajaa (clamp to border). Tekstuurialueen ulkopuoliset arvot renderöidään erikseen määritellyllä värillä. Esiteltyjä vastaavuusfunktioita voidaan käyttää eri akseleilla; tekstuuri voidaan puristaa u-akselilla ja toistaa v-akselilla.