3D képszintézis fizikai alapmodellje Szirmay-Kalos László
Képszintézis = valós világ illuziója Tone mapping pixel Virtuális világ színérzet Valós világ Sugársűrűség = egységnyi látható felület egységnyi térszögbe kisugárzott teljesítménye
Ugyanolyan teljesítmény F(DA1, Dw1) = F(DA2, Dw2) Dw1 DA1 2 DA2 cos2 DA2 Dw2 r1 pixel r2 r22 r12 Dw1 Dw2 DA2 cos2 DA1 cos1 = = F(DA1, Dw1) F(DA2, Dw2) DA1 cos1 Dw1 DA2 cos2 Dw2 = = L
Sugársűrűség (Radiancia): L(x,w) Egy egységnyi látható felület által egységnyi térszög alatt kibocsátott teljesítmény [Watt/ sr/ m2] V dw dF L(x,V) = dF / (dA cos dw) dA
Fény-felület kölcsönhatás Sugársűrűség = Bejövő BRDF Geometria L(x,V) = Lin(x, L) fr (L,x,V) cos’ Helmholtz törvény: V ’ L fr (L,x,V) = fr (V,x,L) Ilumination computation can also be interpreted as the solution of an integral equation, called the rendering equation. This equation expresses the radiance of a point into a given direction as the sum of the own emission of this surface and the reflection of the radiance of those points that are visible from here. From mathematical point of view, the rendering problem is equivalent to the solution of this integral equation at every visible point, that is for every pixel of the screen. Lin x ’
Spektrális versus RGB képszintézis Le() F () Képszintézis Színleképzés R, G, B f r() szorzás lineáris Le[r], Le[g], Le[b] Le() Színleképzés Képszintézis R, G, B Színleképzés f r() f r[r], f r[g], f r[b]
Sima felületek Lin F Lin Lin (1-F) 1 2 1 2 F = + (n -1)2 + k2 ’ ’ Lin F Lin sin’ n = Lin (1-F) sin 2 2 1 2 cos - (n+k j ) cos’ 1 2 cos ’ - (n+k j ) cos F = + cos+ (n+k j ) cos’ cos’+ (n+k j ) cos (n -1)2 + k2 F F0 + (1-F0) (1-cos’)5, F0 = (n+1)2 + k2
Fresnel függvény F (, ’) F(, ’) ’ ’ arany ezüst
Tükörirány számítása N a a x cos a = - (v·N) v + N cosa v + N cosa vr L = vr, V= v ReflectDir( L, N, V ) { L = V - N * (N * V) * 2; } a a x cos a = - (v·N) vr = v + 2 cos a N
Törési irány N a N N = cosb = 1-sin2b = 1-sin2a/n2 sin a v + Ncosa Snellius- Descartes sin a v + Ncosa n = sin b v a v +Ncosa Nsinb N N = sina -Ncosb vt = N sinb - Ncosb b vt = v /n + N(cosa/n- cosb) cosb = 1-sin2b = 1-sin2a/n2 vt vt = v/n + N (cosa/n -(1-(1-cos2 a)/n2))
Fénytörő anyagok
Sima felület class IdealSurface { Color F; double n; public: void ReflectionDir(Vec& L, Vec& N, Vec& V) { double cosa = -N * V; L = V + N * cosa * 2; } BOOL RefractionDir(Vec& L, Vec& N, Vec& V, BOOL out) { double cn = n; if ( !out ) cn = 1.0/cn; double disc = 1 - (1 - cosa * cosa) / cn / cn; if (disc < 0) return FALSE; L = N * (cosa / cn - sqrt(disc)) + V / cn; return TRUE; };
Rücskös felületek Cook-Torrance He-Torrance q’
Diffúz visszaverődés q’ Radiancia a nézeti iránytól független L Helmholtz: a megvilágítási iránytól is független A BRDF konstans: N L q’ fr (L,x,V) = kd(l)
Lambert törvény Lref = Lin kd cos+’ q’ Pont/irány fényforrásra válasz cos’ = N·L
Spekuláris visszaverődés: Phong modell cosy = R·V R R q’ q’ = diffúz + y V V Kell egy függvény, ami nagy y=0 -ra és gyorsan csökken Lref = Lir ks (cos+y)n fr (L,x,V) = ks cosn y /cos’ Nem szimmetrikus!
Diffúz+Phong anyagok diffúz „Saját szín” Phong diffúz + Phong n= műanyagoknál hullámhossz független Phong diffúz + Phong n= 5 10 20 50
Phong-Blinn modell (OpenGL) Felezővektor H H = (L+V)/|L+V| N q’ cos+d = N·H V L Lref = Lir ks (cos+d)n fr (L,x,V) = ks cosn d /cos’
Képszintézis R, G, B L () Le() L () f r() pixel Virtuális világ L () Le() L () f r() Pixelben látható felület meghatározása A látható pont szem irányú sugársűrűsége
Megoldási kompromisszumok pixel lokális illumináció rekurzív sugárkövetés globális illumináció