1 / 37

Inkrementális 3D képszintézis

Inkrementális 3D képszintézis. Szirmay-Kalos László. Inkrementális képszintézis. koherencia: oldjuk meg nagyobb egységekre feleslegesen ne számoljunk: vágás transzformációk: minden feladathoz megfelelő koordinátarendszert vágni, transzformálni nem lehet akármit: tesszelláció.

hedda
Download Presentation

Inkrementális 3D képszintézis

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Inkrementális 3D képszintézis Szirmay-Kalos László

  2. Inkrementális képszintézis • koherencia: oldjuk meg nagyobb egységekre • feleslegesen ne számoljunk: vágás • transzformációk: minden feladathoz megfelelő koordinátarendszert • vágni, transzformálni nem lehet akármit: tesszelláció

  3. 3D inkrementális képszintézis Tmodell Tview Modell referencia helyzetben Kamerakoordináta r. Tesszelláció Világkoordináta r. Tpersp Tviewport z Képernyőkoordináta r. Láthatóság + vetítés Takarás és vetítés triviális! Normalizált eszközkoordináta r. Vágás Árnyalt kép

  4. Tesszelláció r(u,v) u r(u,v) v • Felületi pontok kijelölése: rn,m = r(un,vm) • Normálvektor: • „Paramétertérben szomszédos” pontokból háromszögek  N(un,vm)= N1 u,v r(u,v) N2 r2 N(u,v) N3 r1 r3

  5. Modellezési transzformáció z 1. skálázás: sx, sy, sz 2. orientáció: , ,  3. pozíció: px, py, pz y x 1 1 1 px py pz 1 sx sy sz 1 1 R TM=

  6. (R21,R22,R23) z Orientáció (R31,R32,R33) y (R11,R12,R13) x cos -sin 1 sin cos 1 cos sin -sincos 1 1 1 cossin -sincos 1 0 0 0 0 0 0 1 R TM = = Csavaró: Roll Billentő: Pitch Forduló: Yaw Orientáció = ortogonális mátrix Orientácó: 3 szabadságfok Orientáció = három szög+fix tengelyek vagy tengely+szög

  7. Kvaterniók • Komplex számok általánosítása • q= [s,x,y,z] = [s,w] = s+xi+yj+zk • q1+q2 = [s1+s2, x1+x2, y1+y2, z1+z2] • aq = [as,ax,ay,az] • |q| =  s2+x2+y2+z2 • Szorzás: • i2 = j2 = k2 = ijk = -1, ij=k, ji=-k, jk=i, kj=-i, ki=j, ik=-j • Szorzás asszociatív, de nem kommutatív, • Összeadásra disztributív • Van egységelem: [1,0,0,0] • Van inverz: q-1 = [s,-w]/|q|2, q-1q= qq-1=[1,0,0,0] [a,0][s,w]=[as, aw] [s,w][a,0]=[as, aw] [0,w][0,u]=[-wu, wu] [s,w][s,-w]=s2-sw+sw+[w2,-ww] =s2+w2

  8. Egység kvaternió = forgatás az origón átmenő w tengely körül • q= [cos(/2), w sin(/2)], |w| = 1 • q[0,u]q-1 = [0,v] • v az u elforgatottja a w körül  szöggel • Bizonyítás: • Ha w||u, akkor u megmarad • Ha wu: • [C, Sw][0,u]=[-Swu, Cu+Swu] • =[0, Cu+Swu] • [0,u’][C,-Sw]=[Su’w, Cu’-Su’w] • =[0, Cu’+Swu’] [cos(/2), w sin(/2)]= [C, Sw] w S C wu /2 u’ u

  9. Origón átmenő w tengely körül  szöggel forgató mátrix: R • wegységvektor, q = [cos(/2), w sin(/2)] • (0, R11,R12,R13) = q[0,1,0,0]q-1 • (0, R21,R22,R23) = q[0,0,1,0]q-1 • (0, R31,R32,R33) = q[0,0,0,1]q-1 • Rodriquez formula • glRotate(alpha, wx, wy, wz); fokban!!!

  10. Transzformációk  • Modellezési transzformáció: [r,1] Tmodell = [rvilág,1] [N,d] (Tmodell)T= [Nvilág,dvilág] • Kamera transzformáció: [rvilág,1] Tview =[rkamera, 1] [Nvilág,dvilág] (Tview)T= [Nkamera,dkamera] • Perspektív transzformáció: [rkamera,1] Tpersp =[rképernyőh, h] • Összetett transzformáció: TmodellTviewTpersp =TC -1 -1

  11. Nézeti téglalap Kamera modell szem vup fp fov eye asp bp vrp (lookat) z y x Mi: Camera obscura

  12. Világból a képernyőre Bal!!! y eye 1 z z 3.2. Normalizált képernyő 2. Kamera 90 látószög y x 3.1. Normalizált kamera 1 1. Világ 4. Képernyő

  13. eye v w u w v u Kamera transzformáció vup w = (eye-lookat)/|eye-lookat| u = (vupw)/|wvup| v = wu lookat z -1 ux uy uz0 vx vy vz0 wx wy wz0 0 0 0 1 y 1 0 00 01 00 0 0 10 -eyex-eyey -eyez1 x [x’,y’,z’,1] = [x,y,z,1] uxvxwx0 uyvywy0 uzvzwz0 0 0 0 1 gluLookAt(eye,lookat,vup)

  14. Normalizálás bp·tg(fov/2) Tnorm 1/(tg(fov/2)·asp) 0 0 0 0 1/tg(fov/2) 0 0 0 0 1 0 0 0 0 1 fp bp 90 látószög

  15. Normalizálás utáni perspektív transzformáció [-mx·z, -my·z, z] [mx, my, 1] [mx, my, -1] 1 -bp -fp (mx·fp, my·fp, -fp) (mx, my, -1) (mx·bp, my·bp, -bp) (mx, my, 1)

  16. Perspektív transzformáció kitalálás:első vágósíkon lévő pont Tpersp • 0 • 01 • 00 • 00 t11 t12 t13 t14 t21 t22 t23 t24 t31t32 t33 t34 t41t42 t43 t44 0 0 0 0 -fp [mx·fp, my·fp, -fp,1] * [mx, my, -1, 1]a [mx·fp, my·fp, -fp,1] * [mx·fp, my·fp, -fp, fp] -fp·t33+t43 = -fp -fp·t34+t44 = fp

  17. Perspektív transzformáció kitalálás:hátsó vágósíkon lévő pont Tpersp • 0 • 01 • 00 • 00 t11 t12 t13 t14 t21 t22 t23 t24 t31t32 t33 t34 t41t42 t43 t44 0 0 0 0 -bp -(fp+bp)/(bp-fp) -1 -2fp·bp/(bp-fp) 0 [mx·bp,my·bp,-bp,1] * [mx·bp, my·bp bp, bp] [mx·bp,my·bp,-bp,1] * [mx, my, 1, 1] b -fp·t33+t43 = -fp -fp·t34+t44 = fp Szem: [0,0,0,1] [0,0, -2fp·bp/(bp-fp),0] [0,0,1,0] -bp·t33+t43 = bp -bp·t34+t44 = bp

  18. y Teljes perspektív transzformáció z 1/(tg(fov/2)·asp) 0 0 0 0 1/tg(fov/2) 0 0 00 -(fp+bp)/(bp-fp) -1 00 -2fp·bp/(bp-fp) 0 gluPerspective(fov,asp,fp,bp) 1 [Xh,Yh,Zh,h] = [xc,yc,zc,1] Tpersp [X,Y,Z,1] = [Xh/h, Yh/h, Zh/h,1] h = -zc

  19. Képszintézis csővezeték primitívek csúcspontok Vágás Modell: x,y,z Tmodell Tpersp Tview Tviewport Vetítés Takarás Homogén osztás Rasztertár: X, Y Huzalváz képszintézis esetén kimaradhat 1

  20. Vágni a homogén osztás előtt kell Ha a homogén osztás után vágnánk h = -zc zc<0 zc<0 zc>0 zc<0

  21. Vágni a homogén osztás előtt kell [X(t),Y(t),Z(t),h(t)]=[X1,Y1,Z1 ,h1]·t + [X2,Y2,Z2,h2]·(1-t) Homogén lineáris transzformáció konvex kombinációkat konvex kombinációkba visz át. Ideális pont h>0 Szakasz h = -zc zc<0 h>0 zc<0 h>0 zc>0 zc<0 h<0

  22. Vágás homogén koordinátákban Cél: -1 < X = Xh/h < 1 -1 < Y = Yh/h < 1 -1 < Z= Zh/h < 1 Vegyük hozzá: h > 0 (mert h = -zc) h = Xh Belül Kívül -h < Xh < h -h < Yh < h -h < Zh < h [3, 0, 0, 2] h = 2< Xh = 3 [2, 0, 0, 3] h = 3> Xh = 2

  23. Szakasz/poligon vágás -h < Xh < h -h < Yh < h -h < Zh < h h = h1·(1-t)+h2 ·t = = Xh = Xh1·(1-t) + Xh2·t t = … h = Xh [Xh1,Yh1,Zh1,h1] Xh = Xh1 · (1-t) + Xh2 · t Yh = Yh1 · (1-t) + Yh2 · t Zh = Zh1 · (1-t) + Zh2 · t h = h1 · (1-t) + h2 · t [Xh2,Yh2,Zh2,h2]

  24. Huzalváz képszintézis poligon élek (Xh,Yh,Zh,h) Modell: x,y,z Tesszel- láció Vágás TC Homogén osztás Szín (X,Y,Z) 2D szakasz rajzolás Nézet transzf Vetítés Rasztertár: X, Y (X,Y)

  25. Tömör képszintézis 1 • Képernyő koordinátarendszerben • vetítősugarak a z tengellyel párhuzamosak! • Objektumtér algoritmusok (folytonos): • láthatóság számítás nem függ a felbontástól • Képtér algoritmusok (diszkrét): • mi látszik egy pixelben • Sugárkövetés ilyen volt!

  26. r3 Hátsólab eldobás: back-face culling n = (r3 -r1)(r2 -r1) r2 r1 nz < 0 nz> 0 z • Lapok a nézeti irányban: • Kívülről: lap, objektum: elülső oldal • Belülről: objektum, lap: hátsó oldal • Feltételezés: • Ha kívülről, akkor csúcsok óramutatóval megegyező körüljárásúak

  27. Z-buffer algoritmus 2. 1. 3.  = 1 z 0.6 0.3 0.3 0.6 0.8 Mélység buffer Z-buffer Szín buffer

  28. Z: lineáris interpoláció (X2,Y2,Z2) Z Z(X,Y) = aX + bY + c (X1,Y1,Z1) Y (X3,Y3,Z3) Z(X,Y) X Z(X+1,Y) = Z(X,Y) + a

  29. Z-interpolációs hardver X Z(X,Y) X számláló Z regiszter CLK S a

  30. Inkremens (triangle setup) (X2,Y2,Z2) Z Z1= aX1 + bY1 + c Z2= aX2 + bY2 + c Z3= aX3 + bY3 + c n (X1,Y1,Z1) Y Z3-Z1= a(X3-X1) + b(Y3-Y1) Z2-Z1= a(X2-X1) + b(Y2-Y1) (X3,Y3,Z3) -nx X (Z3-Z1)(Y2-Y1)-(Y3-Y1)(Z2-Z1) (X3-X1)(Y2-Y1)- (Y3-Y1)(X2-X1) a= Z(X,Y) = aX + bY + c nxX+nyY+nzZ+d = 0 i jk X3-X1Y3-Y1 Z3-Z1 X2-X1Y2-Y1 Z2-Z1 nz n = (r3 -r1)(r2 -r1)=

  31. Árnyalás L(V) SlLl (Ll)*fr (Ll,N,V)cos ’ • Koherencia: ne mindent pixelenként • Háromszögenként: • csúcspontonként 1-szer, belül az L „szín” lineáris interpolációja: Gouraud árnyalás, (per-vertex shading) • pixelenként, a Normál (View, Light) vektort interpoláljuk: Phong árnyalás, (per-pixel shading)

  32. Gouraud árnyalás N1 r2 N2 R(X,Y) = aX + bY + c G(X,Y) =… B(X,Y) =… N3 r1 r3 Modell [+kamera] Perspektív + nézeti N1 r1 R(X,Y) L1 V1 L2 N2 L3 r2 N3 r3 R(X+1,Y) = R(X,Y) + a (per-vertex shading) Képernyő

  33. Z-buffer + Gouraud árnyaló hw. X Z B R G X számláló R regiszter G regiszter B regiszter z regiszter S S S S aR aG aB az

  34. Gouraud árnyalás hasfájásai • További bajok: • anyagtulajdonság konstans • árnyék nincs • különben a színt nem lehet • interpolálni spekuláris ambiens diffúz

  35. Phong árnyalás N1 r2 N2 N(X,Y) = AX + BY + C L(X,Y) =… V(X,Y) =… N3 r1 r3 Modell [+kamera] N N1 L L1 Vektor másolás V1 Normalizálás! N1 V L1 r1 Pontokra: perspektív + nézeti V1 L2 N2 L3 r2 N3 r3 (per-pixel shading) Képernyő

  36. Phong árnyalás

  37. Gouraud Phong Phong Gouraud versus Phong Gouraud

More Related