3D képszintézis fizikai alapmodellje Szirmay-Kalos László Science is either physics or stamp collecting. Rutherford
Képszintézis = valós világ illuziója Tone mapping Valós világszínérzet pixelVirtuális világ
Sugársűrűség (Radiancia): L(x, ) l Egy egységnyi látható felület által egységnyi térszög alatt kibocsátott teljesítmény [Watt/ sr/ m 2 ] dd dAdA dd L(x, V ) = V d dA cos d d =L(x, V )dA cos d
L(x, V ) = L in (x, L) f r (L,x,V) cos ’ Sugársűrűség = Bejövő BRDF Geometria x Fény-felület kölcsönhatás ’’ ’’ L in f r (L,x,V) = f r (V,x,L) Helmholtz törvény: V L f r (L,x,V) = L (x,V) L in (x,L)cos ’ def
Fénynél a hullámhosszok külön kezelhetők l Relativisztikus tömeg kicsi: E = mc 2 = hf l A foton energia (hullámhossz) nem változik rugalmas ütközésnél l Elnyelődési valószínűség energiafüggő e-e- e-e-
Gamma fotonnál a relativisztikus tömeg az elektron tömegével összevethető Foton energia (hullámhossz) változik az ütközésnél (Compton szórás) Foszforeszkáló, fluoreszkáló anyagoknál sem kezelhetők a hullámhosszak függetlenül e-e- e-e- Nem mindig van így!
F =F = cos ’ - (n+k j ) cos cos ’+ (n+k j ) cos 2 cos - (n+k j ) cos ’ cos + (n+k j ) cos ’ ’’ n =n = sin ’ sin 2 ’’ F F0 + (1-F0) (1-cos ’) 5, F0 = (n -1) 2 + k 2 (n+1) 2 + k 2 Sima felületek Fresnel egyenletek L in F L in (1-F) L in „Sima” = 1 pixelben látható felület síknak tekinthető
Fresnel függvény ’’ ’’ arany ezüst F (, ’)
Tükörirány számítása v r = v + 2 N cos vrvr v v + N cos N N cos L = v r, V= v ReflectDir( L, N, V ) { L = V - N * (N * V) * 2; } cos = - ( v ·N) x
Törési irány v t = v n + N (cos n - 1- (1 - cos 2 )/ n 2 ) vtvt v v + Ncos N NN N sin -Ncos v Ncos sin N =N = n =n = sin Snellius- Descartes v t = N sin Ncos v t = v n + N (cos n cos ) cos 1- sin 2 1- sin 2 / n 2
Fénytörő anyagok
Sima felület class SmoothSurface { Color F0; // r,g,b float n; // we ignore here the wavelength dependency public: void ReflectionDir(Vector& R, Vector& N, Vector& V) { float cosa = -N* V; R = V + N * cosa * 2; } BOOL RefractionDir(Vector& T, Vector& N, Vector& V) { float cosa = -N * V, cn = n; if (cosa < 0) { cosa = -cosa; N = -N; cn = 1/n; } float disc = 1 - (1 - cosa * cosa) / cn / cn; if (disc < 0) return FALSE; T = V / cn +N * (cosa / cn - sqrt(disc)) ; return TRUE; } Color Fresnel(Vector& N, Vector& V) { float cosa = fabs(N * V); return F0 + (1-F0) * pow( 1-cosa, 5 ); // F F0 + (1-F0) (1-cos ) 5 } }; v t = v n + N (cos n - 1- (1 - cos 2 )/ n 2 ) (n -1) 2 + k 2 (n+1) 2 + k 2
„Rücskös” felületek ’’ Cook-Torrance He-Torrance 1 pixelben látható felület Mi: viselkedésileg érvényes modell
Diffúz visszaverődés l Radiancia = Bejövő BRDF cos ’ a nézeti iránytól független l A BRDF a nézeti iránytól független l Helmholtz: a BRDF megvilágítási iránytól is független l A BRDF irányfüggetlen: l Diffúz visszaverődés = nagyon rücskös –sokszoros fény-anyag kölcsönhatás –színes! f r (L,x,V) = k d (x, ) ’’ L N V x
Lambert törvény l Pont/irány fényforrásra válasz –BRDF irányfüggetlen, DE a sugársűrűség függ a megvilágítási iránytól L ref = L in k d cos + ’ ’’ L N cos ’ N·L
Spekuláris visszaverődés: Phong modell ’’ V R = diffúz + Kell egy függvény, ami nagy =0 -ra és gyorsan csökken L ref = L in k s ( cos + n f r (L,x,V) = k s cos n cos ’ Nem szimmetrikus! cos R·V R V
Diffúz+Phong anyagok n = diffúz Phong diffúz + Phong Egyszeres fény-anyag kölcsönhatás, nemfémeknél hullámhossz független Sokszoros fény-anyag kölcsönhatás „Saját szín”
Phong-Blinn modell (OpenGL) H = (L+V)/|L+V| ’’ Felezővektor V L H cos · L ref = L in k s ( cos + n f r (L,x,V) = k s cos n cos ’ N
Rücskös felületek class RoughSurface { Color kd, ks; // r,g,b float shininess; public: Color ReflectedRadiance(Vector& L, Vector& N, Vector& V, Color Lin) { float costheta = N * L; if (costheta < 0) return Color(0, 0, 0); Color Lref= Lin * kd * costheta;// diffuse reflection Vector H = L + V; H.Normalize ( ); float cosdelta = N * H; if (cosdelta < 0) return Lref; Lref = Lref + Lin * ks * pow(cosdelta, shininess);// glossy reflection return Lref; } };
l Geometria+sugárűsűség: l Absztrakt fényforrások: –Irány fényforrások: egyetlen irányba sugároz, a fénysugarak párhuzamosak, az intenzitás független a pozíciótól –Pozicionális fényforrás: egyetlen pontból sugároz, az intenzitás a távolság négyzetével csökken Fényforrás modellek iránypozicionális d L e (x,V, ) V x
Képszintézis pixelVirtuális világ f r LeLe l Pixelben látható felület meghatározása l A látható pont szem irányú sugársűrűsége l R, G, B konverzió L L L L R, G, B
Megoldási kompromisszumok pixel lokális illumináció rekurzív sugárkövetés globális illumináció
Színérzékelés: monokromatikus fény színérzet: r, g, b r(r( g(g( b(b( r, g, b nm 1 2
Színérzékelés: nem monokromatikus fény r = r d g = g d b = b d
Spektrális versus RGB model Képszintézis sok hullámhosszon R, G, B kép Látható spektrum R, G, B színillesztés model Képszintézis 3 hullámhosszon R,G,B kép R, G, B
D = HRDI(R,G,B) LDRI(r,g,b) konverzió 1.Luminancia: I = 0.21R G B 2.Adaptált luminancia: I’ 3.Relatív luminancia: 4.Megjelenített luminancia: 5.Szín: I I’ I’ I r I r 1+ I r 1+ I r (r,g,b) = (R,G,B) DI Ir=Ir=Ir=Ir= Tone mapping