Tietokonegrafiikan perusteet T-111.4300 3 op Luento 7: Lokaalit valaistusmallit Lauri Savioja 11/07 Lokaalit valaistusmallit / 1 Sävytys Interpolointi Sisältö Lokaalit valaistusmallit / 2 1
Varjostustekniikat (shading) kuvapisteen intensiteettiin vaikuttavat: taustavalo (ambient light) erilliset valolähteet (yleensä pistemäisiä) pinnan asento (normaalivektori) katselusuunta pinnan ominaisuudet heijastuskerroin läpinäkyvyys karkeus väri, jne... Lokaalit valaistusmallit / 3 BRDF Bi-directional Reflectance Distribution Function 6-vapausasteen funktio, joka kuvaa valon heijastumisen pinnan mistä tahansa pisteestä mistä tahansa suunnasta mihin tahansa suuntaan Mitattavissa -> paljon dataa Käytännön toteutukset approksimaatioita täydestä funktiosta Lokaalit valaistusmallit / 4 2
Shading (jatkuu) Intensiteetti lasketaan eri tekijöiden summana: I = I a + i (I di + I si ) I = kuvapisteen intensiteetti I a = taustavalon osuus I di = valopisteen i mattaheijastus (diffuse) I si = valopisteen i kiiltoheijastus (specular) Huom! sekä valon intensiteetti että pintojen heijastuskertoimet ovat vektoreita, joissa on komponentti kutakin pääväriä (R,G,B) kohti. Lokaalit valaistusmallit / 5 Shading (jatkuu) Taustavalo oletetaan yleensä samaksi kaikkialla: I a = k a I o, k a = pinnan heijastuskerroin (ambient) I o = yleisvalon voimakkuus Lokaalit valaistusmallit / 6 3
Shading (jatkuu) Diffuusi heijastus (mattapinnoilta) Lambert'in lain mukaan kullekin valolähteelle erikseen: I di = k d cos ß i = k d (N L i ), = valopisteen i voimakkuus k d = pinnan heijastuskerroin (diffuusi) L i = valopisteen i suunta pinnasta katsoen N = pinnan normaali ß = pinnan normaalin ja valosuunnan välinen kulma N ß L Lokaalit valaistusmallit / 7 Shading (jatkuu) Etäisyyden vaikutus pitäisi olla neliöllinen (d 2 ), mutta otetaan yleensä huomioon lineaarisena korjaustekijänä: I di = [k d (N L i )] / (d i + d o ), d i = valopisteen i etäisyys pinnasta d o = vakio, joka estää nollalla jakamisen d Lokaalit valaistusmallit / 8 4
Shading (jatkuu) Kiiltoheijastus ilmenee lähellä kohtaa, jossa kiiltävää pintaa katsotaan peiliheijastussuunnassa. Se voidaan approksimoida kaavalla: I si = W(ø) cos n ø i = k s (V R i ) n, W(ø) = materiaalista ja suunnasta riippuva heijastuskerroin, joka voidaan yksinkertaistaa vakioksi k s (specular) V = katselijan suunta pintaan nähden R = valopisteen ideaalinen peiliheijastussuunta ø = katselu- ja peiliheijastussuunnan välinen kulma N n = pinnan kiiltävyys, 1 = hyvin karhea R... 200 = kiillotettu ß ß V ø L Lokaalit valaistusmallit / 9 Shading (jatkuu) vektori R voidaan määrittää L:n ja N:n avulla: R = N (2 N L) - L vaihtoehtoisesti voidaan käyttää helpommin laskettavaa V:n ja L:n puolivälissä sijaitsevaa vektoria: B = (V + L) / V + L, jolloin heijastuskaavassa käytetään cos ø :n sijasta lauseketta B N = cos α, missä α = ø / 2 I si = W(ø) cos n ø i = k s (V R i ) n R B N APPLETTI! V ø α =ø/2 L Lokaalit valaistusmallit / 10 5
Interpolointimenetelmät Juovakonversion yhteydessä voidaan sävyttää kunkin pyyhkäisyjuovan monikulmiosta sisältämä osa. Vakiosävytys (constant shading, flat shading), ei interpolointia monikulmiot kokonaisuudessaan samalla värillä äkilliset muutokset reunoilla näkyvät selvästi I = vakio Lokaalit valaistusmallit / 11 Interpolointimenetelmät (jatkuu) Gouraud'n menetelmä intensiteettiarvojen interpolointi pyyhkäisyjuovaa pitkin monikulmion sisällä Ia Id Ia Ib Iab I Ic Icd Ic Ib I = (Ia+Ib+Ic+Id)/4 Id intensiteetit nurkissa joko annetaan valmiina tai lasketaan kaikkien nurkassa kohtaavien tahojen keskiarvona monikulmion sisälle ei voi syntyä mitään uusia sävyjä, kuten esim. kiiltoheijastusta Lokaalit valaistusmallit / 12 6
Interpolointimenetelmät (jatkuu) Phong'in menetelmä normaalivektorien interpolointi (vrt. edellä intensiteetit) Na Nd Nab N Nb I Ncd Nc valaistus lasketaan joka pisteessä erikseen vastaavan normaalivektorin perusteella kiiltoheijastukset myös tahojen sisällä Lokaalit valaistusmallit / 13 Phong (jatkuu) normaalivektorit nurkissa joko annetaan valmiina (esim. lasketaan splinipinnalta, kun sitä approksimoidaan monitahokkaana) tai lasketaan naapureista ongelmatapaus: vuorottelevat normaalisuunnat (pyykkilauta) tuottavat keskimäärin tasaisen pinnan! N = vakio! Na Nc Nb N = (Na+Nb+Nc+Nd)/4 Na Nb Nc Nd Nd sekä Gouraud'n että Phongin sävytys toteutettu myös laitetasolla z- puskuroinnin yhteydessä (sama inkrementaalinen laskentaperiaate) Lokaalit valaistusmallit / 14 7
Lokaalit valaistusmallit / 15 8