Inkrementlis 3 D kpszintzis SzirmayKalos Lszl Inkrementlis kpszintzis

  • Slides: 58
Download presentation
Inkrementális 3 D képszintézis Szirmay-Kalos László

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

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) koherencia: oldjuk

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) koherencia: oldjuk meg nagyobb egységekre l feleslegesen ne számoljunk: vágás l transzformációk: minden feladathoz megfelelő koordinátarendszert l – vágni, transzformálni nem lehet akármit: tesszelláció

Koordinátarendszerek: modelltér

Koordinátarendszerek: modelltér

Koordinátarendszerek: világtér

Koordinátarendszerek: világtér

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

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

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

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

Koordinátarendszerek: viewport pixelx pixely p resolutiony resolutionx

Koordinátarendszerek: viewport pixelx pixely p resolutiony resolutionx

Transzformációk l Ha egy pont koordinátái adottak egy térben, mik a koordinátái egy másik

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

Az inkrementális képalkotási feladat l Adott egy háromszögesített 3 D modell – háromszögek csúcsaival

Az inkrementális képalkotási feladat l Adott egy háromszögesített 3 D modell – háromszögek csúcsaival [modelltérben] l 2 D 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

Mi befolyásolja ezt? l Hol helyezzük el a modellt a virtuális világban – model-transzformáció,

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ó

Plusz feladat: láthatóság l takarási probléma – a 2 D pixel koordináták mellett kell

Plusz feladat: láthatóság l takarási probléma – a 2 D 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

Plusz feladat: árnyalás l Felületi pont, fények koordinátái, szempozíció, felületi normálisok. . . –

Plusz feladat: árnyalás l Felületi pont, fények koordinátái, szempozíció, felületi normálisok. . . – ugyanabban a 3 D 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

3 D inkrementális képszintézis Tmodell Modell referencia helyzetben Tesszelláció Tpersp Tview Világkoordináta r. Kamerakoordináta

3 D inkrementális képszintézis Tmodell Modell referencia helyzetben Tesszelláció Tpersp Tview Világkoordináta r. Kamerakoordináta r. Tviewport z 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

Tesszelláció l l l Felületi pontok kijelölése: rn, m = r(un, vm) r(u, v)

Tesszelláció l l l Felületi pontok kijelölése: rn, m = r(un, vm) r(u, v) Normálvektor: N(un, vm)= u v „Paramétertérben szomszédos” pontokból háromszögek u, v r(u, v) N 2 N 3 r 2 N 1 r 3

Transzformációs csővezeték model transform model space modelling view transform world space proj transform camera

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

Modell és világkoordináták (statikus interpretáció) de o m world l

Modell és világkoordináták (statikus interpretáció) de o m world l

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

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

Modellezési transzformáció z 1. skálázás: sx, sy, sz 2. orientáció: , , 3. pozíció:

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

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

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

z (R 21, R 22, R 23) (R 31, R 32, R 33) Orientáció

z (R 21, R 22, R 23) (R 31, R 32, R 33) Orientáció y (R 11, R 12, R 13) x TM = 0 0 0 0 1 R cos sin -sin cos Csavaró: Roll Orientáció = ortonormált mátrix 1 1 sin -sin 1 cos Billentő: Pitch Orientácó: 3 szabadságfok Orientáció = három szög+fix tengelyek vagy tengely+szög 1 1 cos sin -sin cos Forduló: Yaw 1

Emlékeztető: Más algebrai alap? l Idáig (2 D-ben) Forgatás = egység abszolút értékű komplex

Emlékeztető: Más algebrai alap? l Idáig (2 D-ben) Forgatás = egység abszolút értékű komplex számmal szorzás – 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 eiφ

Kvaterniók l l l Komplex számok általánosítása q = [s, x, y, z] =

Kvaterniók l l l Komplex számok általánosítása q = [s, x, y, z] = [s, w] = s+xi+yj+zk q 1+q 2 = [s 1+s 2, x 1+x 2, y 1+y 2, z 1+z 2] aq = [as, ax, ay, az] |q| = s 2+x 2+y 2+z 2 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]

Egység kvaternió = forgatás az origón átmenő w tengely körül q = [cos( /2),

Egység kvaternió = forgatás az origón átmenő w tengely körül q = [cos( /2), w sin( /2)], l q [0, u] q-1 = [0, v] l |w| = 1 – 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 gl. Rotate(alpha, wx, wy, wz);

Specifikációhoz és főleg interpolációhoz kvaternió Kvaternió versus mátrix l Orientáció specifikációja: – Kvaternió: tengely

Specifikációhoz és főleg interpolációhoz kvaternió 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. Az orientáció váltás l Orientációváltás végrehajtása: végrehajtásához mátrix – 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ó!

Transzformációk Modellezési transzformáció: [r, 1] Tmodell = [rvilág, 1] -1 [N, 0] (Tmodell)T =

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

Hova kell a pontot rajzolni a képernyőn? l Az összes többi transzformáció ennek a

Hova kell a pontot rajzolni a képernyőn? l 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ó • [-1 -1] hova vetül ez az ablak téglalapjára – viewport transzformáció • melyik pixel [0 0] [345 234] [1 1]

szem Nézeti téglalap Kamera modell fp eye z vup fov vrp (lookat) y Mi:

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

Kamera-transzformáció (statikus interpretáció) ra e cam world

Kamera-transzformáció (statikus interpretáció) ra e cam world

w z w Kamera transzformáció vup eye v lookat u w = (eye-lookat)/|eye-lookat| u

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

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

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

Világból a képernyőre Bal!!! y eye 1 z z 2. Kamera y 3. 2.

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

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

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

Normalizálás utáni perspektív transzformáció (-mx·z, -my·z, z) -z -fp -bp (mx, my, -1) (mx,

Normalizálás utáni perspektív transzformáció (-mx·z, -my·z, z) -z -fp -bp (mx, my, -1) (mx, my, z*) 1 z* (-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]

Perspektív transzformáció kitalálás Tpersp 1 0 0 0 -fp -bp 0 1 0 0

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

y z -fp -bp Teljes perspektív transzformáció 1/(tg(fov/2)·asp) 0 0 1/tg(fov/2) 0 0 -(fp+bp)/(bp-fp)

y z -fp -bp Teljes perspektív transzformáció 1/(tg(fov/2)·asp) 0 0 1/tg(fov/2) 0 0 -(fp+bp)/(bp-fp) -1 0 0 -2 fp·bp/(bp-fp) 0 glu. Perspective(fov, asp, fp, bp) 1 [Xh, Yh, Zh, h] = [xc, yc, zc, 1] Tpersp [X, Y, Z, 1] = [Xh/h, Yh/h, Zh/h, 1] h = -zc

Képszintézis csővezeték primitívek csúcspontok Modell: x, y, z Rasztertár: X, Y Tmodell Vetítés Tview

Képszintézis csővezeték primitívek csúcspontok Modell: x, y, z Rasztertár: X, Y Tmodell Vetítés Tview Tpersp Vágás Takarás Tviewport Homogén osztás Huzalváz képszintézis esetén kimaradhat 1

Vágni a homogén osztás előtt kell [X(t) , Y(t) , Z(t), h(t)]=[X 1 ,

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. h = -zc Szakasz zc<0 zc>0 Ideális pont zc<0

Vágás homogén koordinátákban Cél: -1 < X = Xh/h < 1 -1 < Y

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 -h < Xh < h -h < Yh < h -h < Zh < h Kívül [3, 0, 0, 2 ] h = 2 < Xh = 3 Belül [2, 0, 0, 3 ] h = 3 > Xh = 2

Szakasz/poligon vágás -h < Xh < h -h < Yh < h -h <

Szakasz/poligon vágás -h < Xh < h -h < Yh < h -h < Zh < h h = Xh [Xh 1, Yh 1, Zh 1, h 1] h = h 1·(1 -t)+h 2 ·t = = Xh 1·(1 -t) + Xh 2·t t=… [Xh 2, Yh 2, Zh 2, h 2] Xh = Xh 1 · (1 -t) + Xh 2 · t Yh = Yh 1 · (1 -t) + Yh 2 · t Zh = Zh 1 · (1 -t) + Zh 2 · t h = h 1 · (1 -t) + h 2 · t

Huzalváz képszintézis Modell: x, y, z poligon (Xh, Yh, Zh, h) élek Tesszel. Vágás

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

Tömör képszintézis l Képernyő koordinátarendszerben – vetítősugarak a z tengellyel párhuzamosak! l Objektumtér algoritmusok

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

r 3 r 2 n = (r 3 - r 1) (r 2 -

r 3 r 2 n = (r 3 - r 1) (r 2 - r 1) Hátsólab eldobás: back-face culling r 1 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

Z-buffer algoritmus 2. 1. 3. =1 z 0. 3 Szín buffer 0. 6 0.

Z-buffer algoritmus 2. 1. 3. =1 z 0. 3 Szín buffer 0. 6 0. 8 0. 6 0. 3 Mélység buffer Z-buffer

Z: lineáris interpoláció Z (X 2, Y 2, Z 2) Z(X, Y) = a.

Z: lineáris interpoláció Z (X 2, Y 2, Z 2) Z(X, Y) = a. X + b. Y + c Y (X 1, Y 1, Z 1) (X 3, Y 3, Z 3) Z(X, Y) X Z(X+1, Y) = Z(X, Y) + a

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

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

Z (X 2, Y 2, Z 2) Inkremens (triangle setup) n Y (X 1,

Z (X 2, Y 2, Z 2) Inkremens (triangle setup) n Y (X 1, Y 1, Z 1) (X 3, Y 3, Z 3) -nx X Z(X, Y) = a. X + b. Y + c nx. X+ny. Y+nz. Z+d = 0 Z 1= a. X 1 + b. Y 1 + c Z 2= a. X 2 + b. Y 2 + c Z 3= a. X 3 + b. Y 3 + c 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) a= (X 3 -X 1)(Y 2 -Y 1) - (Y 3 -Y 1)(X 2 -X 1) i j n = (r 3 - r 1) (r 2 - r 1) = X 3 -X 1 Y 3 -Y 1 X 2 -X 1 Y 2 -Y 1 k Z 3 -Z 1 Z 2 -Z 1 nz

Árnyalás L (V) Sl Ll (Ll)* fr (Ll , N, V) cos ’ l

Árnyalás L (V) Sl Ll (Ll)* fr (Ll , N, V) cos ’ l l 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)

Gouraud (per-vertex) árnyalás N 2 N 3 N 1 r 2 r 3 r

Gouraud (per-vertex) árnyalás N 2 N 3 N 1 r 2 r 3 r 1 R(X, Y) = a. X + b. Y + c G(X, Y) =… B(X, Y) =… Modell [+kamera] N 1 r L 1 1 V 1 L Perspektív N 2 2 L 3 + nézeti N r r 2 3 3 (per-vertex shading) R(X, Y) R(X+1, Y) = R(X, Y) + a Képernyő

Z-buffer + Gouraud árnyaló hw. X Z R G B z regiszter R regiszter

Z-buffer + Gouraud árnyaló hw. X Z R G B z regiszter R regiszter G regiszter B regiszter S S X számláló az a. R a. G a. B

Gouraud árnyalás hasfájásai spekuláris ambiens diffúz További bajok: • anyagtulajdonság konstans • árnyék nincs

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

Phong (per-pixel) árnyalás N 2 N 3 N 1 r 2 N(X, Y) =

Phong (per-pixel) árnyalás N 2 N 3 N 1 r 2 N(X, Y) = AX + BY + C L(X, Y) =… V(X, Y) =… r 1 r 3 Modell [+kamera] L 1 N 1 r 1 L 1 lás o s á m r Vekto V 1 L 2 N 2 L 3 Pontokra: perspektív N 3 r r 2 3 + nézeti V 1 N 1 L N V (per-pixel shading) Képernyő Normalizálás!

Phong árnyalás

Phong árnyalás

Gouraud versus Phong Gouraud Phong

Gouraud versus Phong Gouraud Phong

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

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

Inkrementális képszintézis Model-camera-perspective-viewport transzformáció Paraméterezés v x=ax u+bxv+cx y=ayu+byv+cy z=azu+bzv+cz (u 1, v 1)

Inkrementális képszintézis Model-camera-perspective-viewport transzformáció Paraméterezés v x=ax u+bxv+cx y=ayu+byv+cy z=azu+bzv+cz (u 1, v 1) [Xh, Yh, Zh, h] = [x, y, z, 1]TC (X, Y)= [Xh/h, Yh/h] (x 1, y 1, z 1) z Y (x 2, y 2, z 2) (u 3, v 3) (u 2, v 2) u (x 3, y 3, z 3) y (X 1, Y 1) (X 3, Y 3) (X 2, Y 2) x [X h, Y h, h] = [u, v, 1] T, ahol h = -zc [u/h, v/h, 1/h] = [X, Y, 1] T-1 X

Lineáris interpoláció v Y (u 1, v 1) (u 3, v 3) (u ,

Lineáris interpoláció v Y (u 1, v 1) (u 3, v 3) (u , v ) 2 2 u=au X+bu. Y+cu v=av X+bv. Y+cv (X 1, Y 1) (X 3, Y 3) u X Interpolációs kényszerek: u 1=au X 1+bu. Y 1+cu u 2=au X 2+bu. Y 2+cu u 3=au X 3+bu. Y 3+cu v 1=av X 1+bv. Y 1+cv v 2=av X 2+bv. Y 2+cv v 3=av X 3+bv. Y 3+cv (X 2, Y 2) referencia lineáris

Perspektíva helyes textúrázás v Y (u 1, v 1) (X 3, Y 3) (u

Perspektíva helyes textúrázás v Y (u 1, v 1) (X 3, Y 3) (u 3, v 3) (u , v ) 2 2 u u/h =Au X+Bu. Y+Cu v/h = Av X+Bv. Y+Cv 1/h =Ah X+Bh. Y+Ch h = -zc u= Au X+Vu. Y+Cu Ah X+Bh. Y+Ch v = Av X+Bv. Y+Cv Ah X+Bh. Y+Ch (X 1, Y 1) (X 2, Y 2) X

Perspektíva helyes interpolációs hw. Y R G B X Textúra memória u X számláló

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