1 / 39

Inkrementális 3D képszintézis

Inkrementális 3D képszintézis. Szirmay-Kalos László. Inkrementális képszintézis. Sugárkövetés számítási idő  Pixelszám × Objektumszám × (Fényforrás szám+1) koherencia: oldjuk meg nagyobb egységekre feleslegesen ne számoljunk: vágás

eshe
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 • Sugárkövetés számítási idő  Pixelszám × Objektumszám × (Fényforrás szám+1) • 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ó = ortonormált mátrix Orientácó: 3 szabadságfok Orientáció = három szög+fix tengelyek vagy tengely+szög

  7. Emlékeztető: Más algebrai alap? Forgatás = egység abszolút értékű komplex számmal szorzás • Idáig (2D-ben) • Pont = számpár • Eltolás = számpár (vektor) • Elforgatás, skálázás, nyírás, stb. = 22-s mátrix • Más lehetőség? • Pont = komplex szám (z) • Eltolás = komplex szám (összeadás): z’ = z + v • Forgatás, skálázás (forgatva nyújtás) = komplex szám (szorzás): • z’ = z * f , ahol f = r eiφ

  8. 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, konjugált/absnégyzet mint a komplexnél: q-1 = [s,-w]/|q|2, q-1q= qq-1=[1,0,0,0]

  9. 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 • wegységvektor körül  szöggel forgató mátrix: • (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);

  10. Specifikációhoz és főleg interpolációhoz kvaternió Kvaternió versus mátrix • Orientáció specifikációja: • Kvaternió: tengely + szög • Mátrix: három Euler szög (elemi forgatások a koordinátatengelyek körül) • Orientáció interpolációja: • Kvaternió: „közbülső” egységkvaterniók, természetes • Mátrix: Euler szögek, természetellenes • Orientációváltás végrehajtása: • Kvaternió: 2 kvaternió szorzás, forgatásokkal konkatenálható! • Mátrix: vektor-mátrix szorzás, bármilyen homogén-lináris transzformációval konkatenálható! Az orientáció váltás végrehajtásához mátrix

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

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

  13. Világból a képernyőre y eye z z 2. Kamera 1 Bal!!! y 4. Képernyő 1 x 1. Világ 3. Normalizált képernyő

  14. 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)

  15. Perspektív transzformáció +1,1 -1,1 bp·tg(fovy/2) fp·tg(fovy/2) z* 1 -1 -fp -bp (x, y, -fp) (x/(fp·tg(fovx/2)), y/(fp·tg(fovy/2)), -1) (x, y, -bp) (x/(bp·tg(fovx/2)), y/(bp·tg(fovy/2)), +1)

  16. Perspektív transzformáció gluPerspective(fov,asp,fp,bp) 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 [x, y, -fp, 1] [x/(tg(fovx/2)), y/(tg(fovy/2)), -fp, fp] (x/(fp·tg(fovx/2)), y/(fp·tg(fovy/2)), -1) [x, y, -bp, 1] [x/(tg(fovx/2)), y/(tg(fovy/2)), bp, bp] (x/(bp·tg(fovx/2)), y/(bp·tg(fovy/2)), +1) [Xh,Yh,Zh,h] = [xc,yc,zc,1] Tpersp [X,Y,Z,1] = [Xh/h, Yh/h, Zh/h,1] h = -zc

  17. 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

  18. 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 = -zc Szakasz zc<0 zc<0 zc>0 zc<0

  19. 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

  20. 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]

  21. 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)

  22. 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!

  23. 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

  24. 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

  25. 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

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

  27. 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)=

  28. Á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)

  29. Gouraud (per-vertex) á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ő

  30. 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

  31. 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

  32. Phong (per-pixel) á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ő

  33. Phong árnyalás

  34. Gouraud Phong Phong Gouraud versus Phong Gouraud

  35. Textúra leképzés:anyagjellemzők változnak a felületen

  36. v u Inkrementális képszintézis Model-camera-perspective-viewport transzformáció Paraméterezés x=axu+bxv+cx y=ayu+byv+cy z=azu+bzv+cz [Xh, Yh, Zh, h] = [x,y,z,1]TC (X,Y)=[Xh/h, Yh/h] (x1,y1,z1) (u1, v1) Y (X1,Y1) z (x2,y2,z2) (X3,Y3) (u3, v3) (u2, v2) (x3,y3,z3) (X2,Y2) y X x [Xh, Yh, h] = [u,v,1] T, aholh = -zc [u/h, v/h, 1/h] = [X,Y, 1] T-1

  37. v u Lineáris interpoláció Y (u1, v1) (X1,Y1) (X3,Y3) (u3, v3) u=au X+buY+cu v=av X+bvY+cv (u2, v2) (X2,Y2) X Interpolációs kényszerek: u1=au X1+buY1+cu u2=au X2+buY2+cu u3=au X3+buY3+cu referencia lineáris v1=av X1+bvY1+cv v2=av X2+bvY2+cv v3=av X3+bvY3+cv

  38. v u Perspektíva helyes textúrázás Y (u1, v1) (X1,Y1) (X3,Y3) (u3, v3) (u2, v2) (X2,Y2) Au X+VuY+Cu u = v = Ah X+BhY+Ch X Av X+BvY+Cv u/h =Au X+BuY+Cu v/h = Av X+BvY+Cv 1/h =Ah X+BhY+Ch Ah X+BhY+Ch h = -zc

  39. Perspektíva helyesinterpolációs hw. R G B X Y X Y Textúra memória v u Div Div [1/h](X,Y) [v/h](X,Y) [u/h](X,Y) [1/h] regiszter [v/h] regiszter X számláló [u/h] regiszter S S S CLK ah av au

More Related