Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "Inkrementális 3D képszintézis Szirmay-Kalos László."— Előadás másolata:

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

2 Inkrementális képszintézis l Sugárkövetés számítási idő  Pixelszám × Objektumszám × (Fényforrás szám+1) l koherencia: oldjuk meg nagyobb egységekre l feleslegesen ne számoljunk: vágás l 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 Modell referencia helyzetben TesszellációVilágkoordináta r. Kamerakoordináta r. Normalizált eszközkoordináta r. Vágás Képernyőkoordináta r. Láthatóság + vetítés Takarás és vetítés triviális! Árnyalt kép T modell T view T persp T viewport z

4 Tesszelláció l Felületi pontok kijelölése: r n,m = r(u n,v m ) l Normálvektor: l „Paramétertérben szomszédos” pontokból háromszögek u,v r(u,v) N1N1 N2N2 N3N3 N(u n,v m )=  r(u,v)  u  r(u,v)  v  r3r3 r1r1 r2r2 N(u,v)

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

6 cos  sin  -sin  cos  1 Orientáció T M = 0 0 0 0 1 cos  -sin  1 sin  cos  1 cos  sin  -sin  cos  1 Csavaró: Roll Billentő: Pitch Forduló: Yaw R = z y x (R 11,R 12,R 13 ) (R 21,R 22,R 23 ) (R 31,R 32,R 33 ) 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? l 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 l 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 e iφ Forgatás = egység abszolút értékű komplex számmal szorzás

8 Kvaterniók l Komplex számok általánosítása l q = [s,x,y,z] = [s,w] = s+xi+yj+zk l q 1 +q 2 = [s 1 +s 2, x 1 +x 2, y 1 +y 2, z 1 +z 2 ] l aq = [as,ax,ay,az] l |q| =  s 2 +x 2 +y 2 +z 2 l Szorzás: –i 2 = j 2 = k 2 = 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 l q = [cos(  /2), w sin(  /2)], |w| = 1 l q  [0,u]  q -1 = [0,v] –v az u elforgatottja a w körül  szöggel l w egységvektor körül  szöggel forgató mátrix: –(0, R 11,R 12,R 13 ) = q  [0,1,0,0]  q -1 –(0, R 21,R 22,R 23 ) = q  [0,0,1,0]  q -1 –(0, R 31,R 32,R 33 ) = q  [0,0,0,1]  q -1 l Rodriquez formula glRotate(alpha, wx, wy, wz);

10 Kvaternió versus mátrix l 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) l Orientáció interpolációja: –Kvaternió: „közbülső” egységkvaterniók, természetes –Mátrix: Euler szögek, természetellenes l 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ó! Specifikációhoz és főleg interpolációhoz kvaternió Az orientáció váltás végrehajtásához mátrix

11 Transzformációk l Modellezési transzformáció: [r,1] T modell = [r világ,1] [N,0] (T modell ) T = [N világ,0] l Kamera transzformáció: [r világ,1] T view = [r kamera, 1] [N világ,0] (T view ) T = [N kamera,0] l Perspektív transzformáció: [r kamera,1] T persp = [r képernyő h, h] l Összetett transzformáció: T modell T view T persp = T C

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

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

14 Kamera transzformáció x y z lookat vup w = (eye-lookat)/|eye-lookat| u = (vup  w)/|w  vup| v = w  u [x’,y’,z’,1] = [x,y,z,1] u x u y u z 0 v x v y v z 0 w x w y w z 0 0 0 0 1 eye w u v 1 0 0 0 0 1 0 0 0 0 1 0 -eye x -eye y -eye z 1 w u v u x v x w x 0 u y v y w y 0 u z v z w z 0 0 0 0 1 gluLookAt(eye,lookat,vup)

15 -fp -bp Perspektív transzformáció bp · tg(fovy/2) 1 z* fp · tg(fovy/2) (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) -1,1 +1,1

16 [X h,Y h,Z h,h] = [xc,yc,zc,1] T persp [X,Y,Z,1] = [X h /h, Y h /h, Z h /h,1] Perspektív transzformáció 1/(tg(fov/2)·asp) 0 0 0 0 1/tg(fov/2) 0 0 0 0 -(fp+bp)/(bp-fp) -1 0 0 -2fp · bp/(bp-fp) 0 gluPerspective(fov,asp,fp,bp) h = -zc [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)

17 Képszintézis csővezeték Modell: x,y,z T modell T view T persp Homogén osztás TakarásVetítés Rasztertár: X, Y Vágás Huzalváz képszintézis esetén kimaradhat T viewport csúcspontok primitívek 1

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

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

20 Szakasz/poligon vágás h = X h [X h 1,Y h 1,Z h 1,h 1 ] [X h 2,Y h 2,Z h 2,h 2 ] X h = X h 1 · (1-t) + X h 2 · t Y h = Y h 1 · (1-t) + Y h 2 · t Z h = Z h 1 · (1-t) + Z h 2 · t h = h 1 · (1-t) + h 2 · t h = h 1 ·(1-t)+h 2 ·t = = X h = X h 1 ·(1-t) + X h 2 ·t t = … -h < X h < h -h < Y h < h -h < Z h < h

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

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

23 Hátsólab eldobás: back-face culling n z > 0 n z < 0 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 r1r1 r3r3 r2r2 n = (r 3 - r 1 )  (r 2 - r 1 ) z

24 Z-buffer algoritmus  = 1 0.6 0.3 0.6 0.3 0.8 1.2.3. z Szín buffer Mélység buffer Z-buffer

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

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

27 X Y Z Z(X,Y) = aX + bY + c n x X+n y Y+n z Z+d = 0 (X1,Y1,Z1)(X1,Y1,Z1) (X2,Y2,Z2)(X2,Y2,Z2) (X3,Y3,Z3)(X3,Y3,Z3) Inkremens (triangle setup) Z 3 -Z 1 = a(X 3 -X 1 ) + b(Y 3 -Y 1 ) Z 2 -Z 1 = a(X 2 -X 1 ) + b(Y 2 -Y 1 ) (Z 3 -Z 1 )(Y 2 -Y 1 ) - (Y 3 -Y 1 )(Z 2 -Z 1 ) (X 3 -X 1 )(Y 2 -Y 1 ) - (Y 3 -Y 1 )(X 2 -X 1 ) a= Z 1 = aX 1 + bY 1 + c Z 2 = aX 2 + bY 2 + c Z 3 = aX 3 + bY 3 + c i j k X 3 -X 1 Y 3 -Y 1 Z 3 -Z 1 X 2 -X 1 Y 2 -Y 1 Z 2 -Z 1 n = (r 3 - r 1 )  (r 2 - r 1 ) = n nznz -nx-nx

28 Árnyalás L (V)   l  L l (L l )* f r (L l,N,V)  cos  ’ l Koherencia: ne mindent pixelenként l 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 R(X,Y) = aX + bY + c G(X,Y) =… B(X,Y) =… R(X,Y) R(X+1,Y) = R(X,Y) + a N1N1 N2N2 N3N3 r3r3 r1r1 r2r2 N1N1 N2N2 N3N3 r3r3 r1r1 r2r2 Modell [+kamera] Perspektív + nézeti Képernyő (per-vertex shading) V1V1 L1L1 L2L2 L3L3

30 Z-buffer + Gouraud árnyaló hw. Z X számláló z regiszter azaz X  R regiszter aRaR  G regiszter aGaG  R G B regiszter aBaB  B

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

32 Phong (per-pixel) árnyalás N(X,Y) = AX + BY + C L(X,Y) =… V(X,Y) =… N1N1 N2N2 N3N3 r3r3 r1r1 r2r2 N1N1 N2N2 N3N3 r3r3 r1r1 r2r2 Modell [+kamera] Pontokra: perspektív + nézeti Képernyő (per-pixel shading) V1V1 L1L1 L2L2 L3L3 Vektor másolás N1N1 V1V1 L1L1 N V L Normalizálás!

33 Phong árnyalás

34 Gouraud versus Phong Gouraud Phong Gouraud

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

36 u v (u 1, v 1 ) (u 3, v 3 )(u 2, v 2 ) Paraméterezés Model-camera-perspective-viewport transzformáció Inkrementális képszintézis x z X Y (x1,y1,z1) y (X 1,Y 1 ) (x3,y3,z3) [X h, Y h, Z h, h] = [x,y,z,1]T C (X,Y)= [X h /h, Y h /h] (x2,y2,z2) (X 2,Y 2 ) (X 3,Y 3 ) [X  h, Y  h, h] = [u,v,1]  T, ahol h = -zc [u/h, v/h, 1/h] = [X, Y, 1]  T -1 x=a x u+b x v+c x y=a y u+b y v+c y z=a z u+b z v+c z

37 Lineáris interpoláció u v (u 1, v 1 ) (u 3, v 3 ) (u 2, v 2 ) u 1 =a u X 1 +b u Y 1 +c u u 2 =a u X 2 +b u Y 2 +c u u 3 =a u X 3 +b u Y 3 +c u v 1 =a v X 1 +b v Y 1 +c v v 2 =a v X 2 +b v Y 2 +c v v 3 =a v X 3 +b v Y 3 +c v u=a u X+b u Y+c u v=a v X+b v Y+c v X Y (X 1,Y 1 ) (X 2,Y 2 ) (X 3,Y 3 ) Interpolációs kényszerek: referencialineáris

38 Perspektíva helyes textúrázás u = v = A u X+V u Y+C u A v X+B v Y+C v A h X+B h Y+C h u/h =A u X+B u Y+C u v/h = A v X+B v Y+C v 1/h =A h X+B h Y+C h u v (u 1, v 1 ) (u 3, v 3 ) (u 2, v 2 ) X Y (X 1,Y 1 ) (X 2,Y 2 ) (X 3,Y 3 ) h = -zc

39 Perspektíva helyes interpolációs hw. [u/h](X,Y) X számláló [u/h] regiszter auau X  CLK [v/h](X,Y) [v/h] regiszter avav  [1/h](X,Y) [1/h] regiszter ahah  Div u v Textúra memória R G B Y Y X


Letölteni ppt "Inkrementális 3D képszintézis Szirmay-Kalos László."

Hasonló előadás


Google Hirdetések