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 Koordinátarendszerek: modelltér

4 Koordinátarendszerek: világtér

5 Koordinátarendszerek: kameratér x y z up eye ahead right

6 Koordinátarendszerek: normalizált eszközkoordináták 1 1 x

7 Koordinátarendszerek: viewport pixel x pixel y resolution x resolution y p

8 Transzformációk l Ha egy pont koordinátái adottak egy térben, mik a koordinátái egy másik térben? –statikus felfogás l Milyen műveletet végezzünk az eredeti koordinátákon, hogy a másik térbe vigyük őket? –dinamikus felfogás

9 Az inkrementális képalkotási feladat l Adott egy háromszögesített 3D modell –háromszögek csúcsaival [modelltérben] l 2D háromszögrajzoló algoritmus –színezendő képpontok [viewport koordináták] l A feladat: –a csúcspont modellezési koordinátáiból számítsuk ki, mely pixelre esik

10 Mi befolyásolja ezt? l Hol helyezzük el a modellt a virtuális világban –model-transzformáció, a.k.a. (world transformation) l Hol a kamera, merre néz –kamera-transzformáció l Mekkora a látószög (és képméretarány) –perspektív projekció l Mekkora a felbontás (hány pixelre rajzolunk) –viewport transzformáció

11 Plusz feladat: láthatóság l takarási probléma –a 2D pixel koordináták mellett kell egy mélységértéket is számolni l fix pontos z-buffer –[0, 1]-beli értékeket tud összehasonlítani –a távolság, amihez a 0-t rendeljük: első vágósík –amihez az 1-et: hátsó vágósík

12 Plusz feladat: árnyalás l Felületi pont, fények koordinátái, szempozíció, felületi normálisok... –ugyanabban a 3D koordináta rendszerben legyenek –logikusan a modellezési transzformáció után –de a kamera trafó szög és távolságtartó l kameratérben

13 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

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

15 Transzformációs csővezeték model transform model space modelling world space view transform camera space proj transform clip space norm. device space viewport transform pixel coordinates viewport space

16 Modell és világkoordináták (statikus interpretáció) world model

17 Modell és világkoordináták (dinamikus interpretáció)

18 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

19 Eltolás homogén koordinátákkal 1 px py pz 1 x y z 1 = x+px y+py z+pz1

20 cos  sin  -sin  cos  1 Orientáció T M = 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

21 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

22 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]

23 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);

24 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

25 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

26 Hova kell a pontot rajzolni a képernyőn? Az összes többi transzformáció ennek a kiszámolására megy –kamera transzformáció hol van a pont a kamerához képest –vetítési transzformáció hova vetül ez az ablak téglalapjára –viewport transzformáció melyik pixel [-1 -1] [1 1] [0 0] [ ]

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

28 world Kamera-transzformáció (statikus interpretáció) camera

29 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 eye w u v 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 gluLookAt(eye,lookat,vup)

30 Projekció (statikus interpretáció) z y képernyőkoordináta: (y/z, 1) homogén koordinátákkal (y/z, 1, 1) vagy (y, z, z) 1 1

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

32 fp bp 90 látószög 1/(tg(fov/2)·asp) /tg(fov/2) T norm Normalizálás bp · tg(fov/2)

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

34 T persp  -1  0 -fp Perspektív transzformáció kitalálás -z·z*=  ·z +   z*= -  -  /z fp·(-1)=  (-fp) +   = -(fp+bp)/(bp-fp) bp·(1)=  (-bp) +   = -2fp·bp/(bp-fp) -bp-bp [-mx·z, -my·z, z, 1]  [-mx·z, -my·z, -z·z*, -z]

35 1 [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] Teljes perspektív transzformáció z y 1/(tg(fov/2)·asp) /tg(fov/2) (fp+bp)/(bp-fp) fp · bp/(bp-fp) 0 gluPerspective(fov,asp,fp,bp) h = -zc -fp -bp-bp

36 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

37 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

38 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

39 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

40 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

41 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

42 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

43 Z-buffer algoritmus  = z Szín buffer Mélység buffer Z-buffer

44 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)

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

46 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

47 Á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)

48 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

49 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

50 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

51 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!

52 Phong árnyalás

53 Gouraud versus Phong Gouraud Phong Gouraud

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

55 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

56 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

57 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

58 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