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 Árnyalás, láthatóság nehéz, különösen általános helyzetű objektumokra 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 Lokális k.r. Világ k.r. Képernyő k.r.

4 Tesszelláció l felületi pontok kijelölése: r n,m = r(u n,v m ) l felületi pontok összekötése: háromszögháló, huzalváz

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 = 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ó = ortogonális mátrix Orientácó: 3 szabadságfok Orientáció = három szög

7 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 –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] –(q 1  q 2 ) -1 =q 2 -1  q 1 -1

8 Kvaternió = forgatás az origón átmenő w tengely körül l q = [s,x,y,z] = [s,w] l q  [0,u]  q -1 = [0,v] –v az u elforgatottja a w körül  szöggel –cos  = 1 – 2(x 2 +y 2 +z 2 )/(s 2 +x 2 +y 2 +z 2 ) –q abszolút értéke nem számít l Elforgatás legyen egység hosszú kvaternió –[cos  /2, w sin  /2], |w| = 1 l Elforgatások fűzése –q 1  (q 2  [0,u]  q 2 -1 )  q 1 -1 = (q 1  q 2 )  [0,u]  (q 1  q 2 ) -1 l Egység hosszú kvaternió = orientáció

9 Origón átmenő w tengely körül  szöggel forgató mátrix: R l w egységvektor, q = [cos  /2, w sin  /2] l (0, R 11,R 12,R 13 ) = q  [0,1,0,0]  q -1 l (0, R 21,R 22,R 23 ) = q  [0,0,1,0]  q -1 l (0, R 31,R 32,R 33 ) = q  [0,0,0,1]  q -1 l Rodriquez formula l glRotate(alpha, wx, wy, wz); fokban!!!

10 Transzformációk l Modellezési transzformáció: [r lokális,1] T M = [r világ,1] l Nézeti transzformáció: [r világ,1] T v = [r képernyő h, h] l Összetett transzformáció: [r lokális,1] T M T v = [r lokális,1] T C = [r képernyő h, h]

11 Nézeti transzformáció: Kamera modell x y z vrp (lookat) vup eye fp bp fov aspect

12 Nézeti transzformáció lépései x y z eye z y látószög 1. Világ 2. Kamera 3. Normalizált kamera 4. Normalizált képernyő 5. Képernyő Bal!!!

13 Kamera transzformáció gluLookAt(eye,lookat,vup) x y z lookat vup w = (eye-lookat)/|eye-lookat| u = (vup x w)/ |w x vup| v = w x 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

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

15 -fp -bp 1 Perspektív transzformáció: gluPerspective(fov, aspect, fp, bp) [-mx*z, -my*z, z] [mx, my, 1] [mx, my, -1] [mx*fp, my*fp, -fp]  [mx, my, -1 ] [mx*bp, my*bp, -bp]  [mx, my, 1 ] [mx*fp, my*fp, -fp, 1]  [mx, my, -1, 1]  a // mi: a = fp [mx*bp, my*bp, -bp, 1]  [mx, my, 1, 1]  b // ekkor: b = bp [mx*fp, my*fp, -fp, 1]  [mx*fp, my*fp, -fp, fp]

16 Perspektív transzformáció fp bp 90 látószög 1, 1 t11 t12 t13 t14 t21 t22 t23 t24 t31 t32 t33 t34 t41 t42 t43 t44 T persp [mx*fp,my*fp,-fp,1] * [mx*fp, my*fp, -fp, fp] [mx*bp,my*bp,-bp,1]*[mx*bp, my*bp, bp, bp] (fp+bp)/(bp-fp) fp*bp/(bp-fp) 0 -fp*t33+t43 = -fp -fp*t34+t44 = fp -bp*t33+t43 = bp -bp*t34+t44 = bp

17 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] Perspektív transzformáció: gluPerspective(fov,asp,fp,bp) z y 1/(tg(fov/2)·asp) /tg(fov/2) (fp+bp)/(bp-fp) fp*bp/(bp-fp) 0

18 Nézeti csővezeték Modell: x,y,z TMTM 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 Nézet transzf

19 Mélységi vágás a homogén osztás előtt kell 1 Homogén osztás: [X,Y,Z,1] = [X h /h, Y h /h, Z h /h,1] [1, 1,-2, 1] * [ ] [1/2 1/2 1/2 1] [1, 1, 2, 1] * [ ] [-1/2 -1/2 7/2 1] -(fp+bp)/(bp-fp) -2fp*bp/(bp-fp) fp=1 bp=3 [1,1,2] [1,1,-2]

20 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 (h = -z a kamera koordinátarendszerben) -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

21 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

22 Huzalváz képszintézis Modell: x,y,z TMTM TVTV 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) TCTC Szín

23 Tömör képszintézés l Képernyő koordinátarendszerben, a szem a z irányba néz l Objektumtér algoritmusok: láthatóság számítás nem függ a felbontástól l Képtér algoritmusok: mi látszik egy pixelben

24 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: első lap Belülről: objektum, lap: hátsó lap Feltételezés: Ha kívülről, akkor csúcsok óramutóval megegyező körüljárásúak r1r1 r3r3 r2r2 n = (r 3 - r 1 )  (r 2 - r 1 )

25 Z-buffer algoritmus 

26 Z-koordináta: lineáris interpoláció X Y Z Z(X,Y) = aX + bY + c Z(X,Y) Z(X+1,Y) = Z(X,Y) + a (X 1,Y 1,Z 1 ) (X 2,Y 2,Z 2 ) (X 3,Y 3,Z 3 )

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

28 Árnyalás l Koherencia: ne pixelenként kelljen az árnyalási egyenletet megoldani l Háromszögenként: –1-szer sem: saját színnel árnyalás –1-szer: konstans árnyalás –csúcspontonként 1-szer, belül lineáris interpoláció: Gouraud árnyalás –pixelenként, a normál (view, light, reflection) vektort interpoláljuk: Phong árnyalás

29 Árnyalás saját színnel

30 Konstans árnyalás

31 Gouraud árnyalás X Y R,G,B R(X,Y) = aX + bY + c R(X,Y) R(X+1,Y) = R(X,Y) + a (X 1,Y 1,R 1 ) (X 2,Y 2,R 2 ) (X 3,Y 3,R 3 )

32 Gouraud árnyalás ambiens diffúz spekuláris

33 Phong árnyalás X Y N(X,Y) = A X + BY + C L(X,Y) =... V(X,Y) =... N(X,Y) N V L

34 Illumináció: világkoordinátarendszerben Nézeti transzformáció Pixelenként: vektorok lin. interpolációja vektorok normalizálása illuminációs képlet

35 Phong árnyalás

36 Gouraud, Phong Gouraud Phong Gouraud


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

Hasonló előadás


Google Hirdetések