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

Hasonló előadás


Az előadások a következő témára: "Inkrementális 3D képszintézis"— Előadás másolata:

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

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

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

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

6 Orientáció R TM = z (R21,R22,R23) (R31,R32,R33) y (R11,R12,R13) x =
cos -sin 1 sin cos 1 cos sin -sin cos 1 1 cos sin -sin cos 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

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 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] (q1q2)-1=q2-1q1-1

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

9 Origón átmenő w tengely körül  szöggel forgató mátrix: R
w egysé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ó: [rlokális,1] TM = [rvilág,1] Nézeti transzformáció: [rvilág,1] Tv = [rképernyőh, h] Összetett transzformáció: [rlokális,1] TMTv = [rlokális,1] TC = [rképernyőh, h]

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

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

13 Kamera transzformáció gluLookAt(eye,lookat,vup)
w u v w = (eye-lookat)/|eye-lookat| u = (vup x w)/ |w x vup| v = w x u lookat z w u v -1 y ux uy uz 0 vx vy vz 0 wx wy wz 0 -eyex -eyey -eyez 1 x [x’,y’,z’,1] = [x,y,z,1] ux vx wx 0 uy vy wy 0 uz vz wz 0

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

15 Perspektív transzformáció: gluPerspective(fov, aspect, fp, bp)
[-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 ] [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ó
bp Tpersp t t t t14 t t t t24 t t t t34 t t t t44 -fp*t33+t43 = -fp -fp*t34+t44 = fp 90 látószög [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 1, 1 -bp*t33+t43 = bp -bp*t34+t44 = bp (fp+bp)/(bp-fp) -1 fp*bp/(bp-fp) 0

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

18 Nézeti csővezeték Modell: x,y,z TM TPERSP TVIEW Vágás Vetítés Takarás
transzf Homogén osztás Rasztertár: X, Y Huzalváz képszintézis esetén kimaradhat

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

20 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 (h = -z a kamera koordinátarendszerben) h = Xh Belül -h < Xh < h -h < Yh < h -h < Zh < h Kívül [3, 0, 0, 2 ] h = 2 < Xh = 3 [2, 0, 0, 3 ] h = 3 > Xh = 2

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

22 Huzalváz képszintézis
(Xh,Yh,Zh,h) Modell: x,y,z TM TV Vágás TC Homogén osztás Szín (X,Y,Z) 2D szakasz rajzolás Rasztertár: X, Y Nézet transzf Vetítés (X,Y)

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

24 Hátsólab eldobás: back-face culling
r3 Hátsólab eldobás: back-face culling n = (r3 - r1) (r2 - r1) r2 r1 nz < 0 nz > 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

25 Z-buffer algoritmus 2. 1. 3. 1325 628 628 1325 3325

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

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

28 Árnyalás Koherencia: ne pixelenként kelljen
az árnyalási egyenletet megoldani 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 (X2,Y2,R2) R(X,Y) = aX + bY + c (X1,Y1,R1) (X3,Y3,R3)
R,G,B R(X,Y) = aX + bY + c (X1,Y1,R1) Y (X3,Y3,R3) R(X,Y) R(X+1,Y) = R(X,Y) + a X

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

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

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 Gouraud Phong Phong


Letölteni ppt "Inkrementális 3D képszintézis"

Hasonló előadás


Google Hirdetések