1 / 58

Inkrementális 3D képszintézis

Inkrementális 3D képszintézis. Szirmay-Kalos László. Inkrementális képszintézis. 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 feleslegesen ne számoljunk: vágás

finn-goff
Télécharger la présentation

Inkrementális 3D képszintézis

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Inkrementális képszintézis • 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 • 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. Koordinátarendszerek:modelltér

  4. Koordinátarendszerek:világtér

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

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

  7. Koordinátarendszerek:viewport pixelx resolutionx pixely p resolutiony

  8. Transzformációk • Ha egy pont koordinátái adottak egy térben, mik a koordinátái egy másik térben? • statikus felfogás • 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 • Adott egy háromszögesített 3D modell • háromszögek csúcsaival [modelltérben] • 2D háromszögrajzoló algoritmus • színezendő képpontok [viewport koordináták] • A feladat: • a csúcspont modellezési koordinátáibólszámítsuk ki, mely pixelre esik

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

  11. Plusz feladat: láthatóság • takarási probléma • a 2D pixel koordináták mellett kell egy mélységértéket is számolni • 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 • 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ó • kameratérben

  13. 3D inkrementális képszintézis Tmodell Tview Modell referencia helyzetben Kamerakoordináta r. Tesszelláció Világkoordináta r. Tpersp Tviewport z Képernyőkoordináta r. Láthatóság + vetítés Takarás és vetítés triviális! Normalizált eszközkoordináta r. Vágás Árnyalt kép

  14. Tesszelláció r(u,v) u r(u,v) v • Felületi pontok kijelölése: rn,m = r(un,vm) • Normálvektor: • „Paramétertérben szomszédos” pontokból háromszögek  N(un,vm)= N1 u,v r(u,v) N2 r2 N(u,v) N3 r1 r3

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

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

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

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

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

  20. (R21,R22,R23) z Orientáció (R31,R32,R33) y (R11,R12,R13) x cos -sin 1 sin cos 1 cos sin -sincos 1 1 1 cossin -sincos 1 0 0 0 0 0 0 1 R TM = = Csavaró: Roll Billentő: Pitch Forduló: Yaw 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? Forgatás = egység abszolút értékű komplex számmal szorzás • 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 • 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φ

  22. 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, • Ö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 • q= [cos(/2), w sin(/2)], |w| = 1 • q[0,u]q-1 = [0,v] • v az u elforgatottja a w körül  szöggel • wegységvektor körül  szöggel forgató mátrix: • (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);

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

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

  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 [11] [-1-1] [0 0] [345 234]

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

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

  29. eye v w u w v u Kamera transzformáció vup w = (eye-lookat)/|eye-lookat| u = (vupw)/|wvup| v = wu lookat z -1 ux uy uz0 vx vy vz0 wx wy wz0 0 0 0 1 y 1 0 00 01 00 0 0 10 -eyex-eyey -eyez1 x [x’,y’,z’,1] = [x,y,z,1] uxvxwx0 uyvywy0 uzvzwz0 0 0 0 1 gluLookAt(eye,lookat,vup)

  30. 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)

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

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

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

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

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

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

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

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

  39. 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]

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

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

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

  43. Z-buffer algoritmus 2. 1. 3.  = 1 z 0.6 0.3 0.3 0.6 0.8 Mélység buffer Z-buffer Szín buffer

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

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

  46. Inkremens (triangle setup) (X2,Y2,Z2) Z Z1= aX1 + bY1 + c Z2= aX2 + bY2 + c Z3= aX3 + bY3 + c n (X1,Y1,Z1) Y Z3-Z1= a(X3-X1) + b(Y3-Y1) Z2-Z1= a(X2-X1) + b(Y2-Y1) (X3,Y3,Z3) -nx X (Z3-Z1)(Y2-Y1)-(Y3-Y1)(Z2-Z1) (X3-X1)(Y2-Y1)- (Y3-Y1)(X2-X1) a= Z(X,Y) = aX + bY + c nxX+nyY+nzZ+d = 0 i jk X3-X1Y3-Y1 Z3-Z1 X2-X1Y2-Y1 Z2-Z1 nz n = (r3 -r1)(r2 -r1)=

  47. Árnyalás L(V) SlLl (Ll)*fr (Ll,N,V)cos ’ • 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)

  48. Gouraud (per-vertex) árnyalás N1 r2 N2 R(X,Y) = aX + bY + c G(X,Y) =… B(X,Y) =… N3 r1 r3 Modell [+kamera] Perspektív + nézeti N1 r1 R(X,Y) L1 V1 L2 N2 L3 r2 N3 r3 R(X+1,Y) = R(X,Y) + a (per-vertex shading) Képernyő

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

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

More Related