1 / 52

Vektorok különbsége

Vektorok különbsége. e-x = [e x -x x e y -x y e z -x z ]. szempozíció. nézeti irány (nem normalizált). e. e-x. x. árnyalt felületi pont pozíciója. Vektorok hossza. |v| = √ ( v x *v x + v y *v y + v z *v z ). | v |. v. Normaliz ált nézeti irány.

kizzy
Download Presentation

Vektorok különbsége

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. Vektorok különbsége e-x = [ex-xx ey-xy ez-xz] szempozíció nézeti irány (nem normalizált) e e-x x árnyalt felületi pont pozíciója

  2. Vektorok hossza |v|= √ (vx*vx + vy*vy + vz*vz) |v| v

  3. Normalizált nézeti irány e-x = [ex-xx ey-xy ez-xz] szempozíció V: nézeti irány (normalizált) e V= (e-x)/|e-x| x árnyalt felületi pont pozíciója

  4. Két vektor skalárszorzata(dot product) a·b= axbx+ ayby + azbz skalár (egy szám) a·b= |a||b| cos q a b q

  5. Mire jó a skalárszorzat? 1.v-nek n irányú része derékszögű háromszög |n| = 1 |vn| = |v| cos Q = |v| |n| cos Q = v·n vn = n |vn| v vtöbbi skalárszorzat vn q n egységnyi hosszú kell legyen n

  6. Például: falról visszapattanó labda,tökéletes visszaverődés iránya V= Vpárhuzamos+ Vmerőleges V: bejövő sebesség Vout= Vpárhuzamos- Vmerőleges V Vpárhuzamos Vmerőleges= -N(V·(-N)) Vpárhuzamos= V - Vmerőleges Vout= V - 2N(V·N) Vmerőleges N Fal Vout kimenő sebesség N: fal normálvektora

  7. Mire jó a skalárszorzat? 2.a és b közötti szög cosinusa |a| = |b| = 1 cos Q= |a| |b| cos Q = a·b a q a és b egységnyi hosszú kell legyen b

  8. Például: diffúz felület árnyalása kd: diffúz BRDF paraméter Iout= Iin kd cosQ Iin: bejövő radiancia Iout= Iin kd L·N Q: fény beesési szöge L: fényirány (normalizált) L q N Fal N: árnyalt felület normálvektora (normalizált) Iout kimenő radiancia (nem függ a nézeti iránytól, mert diffúz)

  9. Két vektor vektoriális szorzata(keresztszorzat, cross product) a×b= [aybz-azby azbx-axbz axby-aybx] |a×b|= |a||b|sinQ a merőleges a-ra és b-re a×b a·|a×b|= 0 b·|a×b|= 0 b q

  10. Mire jó a keresztszorzat? • Ha valami vektorra kell egy merőleges • keresztszorozzuk pl. a felfele vektorral • (pl. [0, 0, 1]) • Két vektorra is merőleges • a két vektor keresztszorzata • ha nem 1 hosszúak vagy nem derékszögben állnak ne felejtsünk el normalizálni • Példa: paraméteres felület normálvektora egy pontban

  11. Példa: felület normálvektora felület paraméteres egyenlete legyen: x(u,v)= u y(u,v)= v z(u,v)= sin(2u + 3v ) Mi a normálvektora a u=v=0 pontban? x(u,v) / u= 1 y(u,v) / u= 0 T érintő (tangens) z(u,v)/ u = cos(2u + 3v) 2 = 2 x(u,v) / v= 0 B érintő (binormál) y(u,v) / v= 1 z(u,v)/ v = cos(2u + 3v) 3 = 3 normalizálás: / sqrt(14) N = B×T = [0-2 0-3 1-0] = [-2 -3 1]

  12. Koordináta-rendszerek • Egy pont valamilyen viszonyítási ponthoz képest (origo) adható meg kitüntetett vektorok lineáris kombinációjaként (bázisvektorok, koordinátatengely-irányok) • Más origóval és irányokkal ugyanannak a pontnak mások a koordinátái • Más számításokhoz más bázisok előnyösek

  13. Modellezési: ebben adottak a koordináták [34] P = OM+ 3Mx + 4My My OM origó Mx

  14. Világ: kitüntetett fő-rendszer ebben legyen minden az árnyaláshoz modell origo itt van [33] Lokális Model Ezekkel adjuk meg az objektum elhelyezkedését [34] P = 3Mx + 4My Mx= 3/25 Wx – 4/25 Wy My= 4/25 Wx + 3/25 Wy Wy OW origó Wx

  15. Világkoordináták kiszámolása OM [3,3] P = 4Wx + 3Wy [43] Lokális Model [34] P = 3Mx + 4My Mx= 3/25 Wx – 4/25 Wy My= 4/25 Wx + 3/25 Wy P = OM+ 3Mx + 4My P = 3 Wx+ 3 Wy+ 3 (3/25 Wx – 4/25 Wy)+ 4 (4/25 Wy + 3/25 Wy) = 3 Wx+ 3 Wy+ (9 + 16)/25 Wx + (12-12) Wy = 4Wx + 3Wy Wy OW origó Wx

  16. Mx My OM Ez a számítás mátrix formában (modellezési transzformáció) P = 3 Wx+ 3 Wy+ 3 (3/25 Wx – 4/25 Wy)+ 4 (4/25 Wy + 3/25 Wy) [4 3] = [3+3*3/25+4*4/25 3-3*4/25+4*3/25] mindig fix 3/25 -4/25 0 4/25 3/25 0 3 3 1 [43 1]= [3 4 1] mindig fix

  17. Vnézeti irány V Árnyalás világ-koordinátákban Xárnyalt felületi pont Eszem pozíciója [43] L = (S-X)/|S-X| V = (E-X)/|E-X| [63] L Lmegvilágítás iránya [4 1] Wy S fényforrás pozíciója OW origó Wx Minden világ-ban adott

  18. Hova kell ezt 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]

  19. Kamera koordináta rendszer Cx= [-11] kamera koordináták E [43] [63] [43] = E + xC*Cx + zC*Cz Cz= [-1-1] egyenletrendszer x,z-re 4= 6 + xC*(-1) + zC*(-1) 3= 3 + xC*(-1) + zC*(1) xC= 1, zC = 1 Wy OW origó Wx

  20. Cx Cy E Kamera koordináta számítás mátrix formában(NEM a kamera trafó mátrix) [43] = E + xC*Cx + zC*Cz [43] = E + xC*[-1 -1] + zC*[-1 1] mindig fix -1 -1 0 -1 1 0 6 3 1 [43 1]= [1 11] mindig fix

  21. Kamera trafó mátrix -1 -1 0 -1 1 0 6 3 1 [43 1]= [1 11] -1 -1 -1 0 -1 1 0 6 3 1 [43 1]= [1 11]

  22. Képernyő koordináta rendszer hova vetül a képernyőn xJ Jx 1 milyen messze (takaráshoz kell) zJ Jz Wy ablak a virtuális világra OW origó Wx

  23. Képernyőkoordináta számítása hasonló háromszögek xC= xJ * zC xJ = xC / zC xJ Jx 1 xC zC zJ Jz ablak a virtuális világra

  24. Ha a látószög nem 90 fok itt van az 1.0 így ez 0.5 hasonló háromszögek Jx xC= xJ * zC xJ = xC / zC xJ FOV 1 xC zC Jx az egység Osztani kell az ablakunk fél szélességével zJ Jz xJ = (xC / zC) / tan(FOV/2) ablak a virtuális világra Ha FOV = 90 fok akkor ez 1 FOV látószög

  25. Perspektív transzformáció • A vetítés is homogén linearis transzformáció: ezt is lehet mátrixszorzással • DE nem affin: utolsó oszlop nem [0 0 1] • homogén koordinátákban kapjuk meg az eredményt, és h általában nem 1 • utána osztani kell h-val hogy rendes Descartes koodinátákat kapjunk xJhomo / hJhomo = (xC / zC) / tan(FOV/2)

  26. Perspektív trafó mátrix xJhomo / hJhomo = (xC / zC) / tan(FOV/2) ez a képernyő-pozíció szempontjából nem érdekes 1/tan(FOV/2) ? 0 0 ? 1 0 ? 0 [xJhomo? hJhomo]= [xCzC 1] zC xC / tan(FOV/2)

  27. Mi legyen a Z? • A takaráshoz kell • Tartsa meg a kamera koordinátarendszer-beli sorrendet (legyen monoton a látható objektumok részén) • Ha [0 A 0] lenne a mátrixban: kell valamit ide is írni 1/tan(FOV/2)00 0 A1 0 00 [xJhomo? hJhomo]= [xCzC 1] = A A*zC zC mindig A: elveszne a mélység info

  28. 0 < ZJ<1 tartomány legyenfp < ZC< bp 1/(tg(fov/2)) 0 0 0 (fp+bp)/(bp-fp) 1 0 -2fp*bp/(bp-fp) 0 3D ben, asp a képernyő magassága a szélességhez képest (a függőleges és vízszintes FOV nem ugyanakkora ) 1/(tg(fov/2)*asp) 0 0 0 0 1/(tg(fov/2)) 0 0 0 0 (fp+bp)/(bp-fp) 1 0 0 -2fp*bp/(bp-fp) 0

  29. OpenGL ehhez képest ide rakja az ablakot Jz -1 Jx kamera a –z felé néz

  30. Ezért a z sor - 1/(tg(fov/2)*asp) 0 0 0 0 1/(tg(fov/2)) 0 0 0 0 -(fp+bp)/(bp-fp) -1 0 0 -2fp*bp/(bp-fp) 0 de ezt összrakja az OpenGL gluPerspective()

  31. Miért jó, hogy minden számítás mátrix-szorzás? (((r M1) M2) M3) = r (M1 M2 M3) több lépést is lehet egyetlen mátrixszorzással, ha a szorzatmátrixot használjuk LINEÁRIS: háromszögből háromszög lesz 3Dben érintkező háromszögekből 2Dben illeszkedő hszek nemlineárisnál a hszből valami más lesz, mi meg csak hszet tudunk hatékonyan rajzolni pixelekből

  32. Vágás • Cohen-Sutherland: szakasz • Sutherland-Hodgeman: sokszög (hsz is) • A lényeg hogy egy szakasz metszéspontját megtaláljuk a vágósíkkal • szakasz paraméteres egyenlete (t) • vágósík (2D ben egyenes) egyenlete • meg kell oldani az egyenletrenszert t-re r(t) = t*r0 + (1-t)r1 ; 0 < t < 1

  33. Vágás példa 2Dben vágjuk erre a fésíkra: x+y > 4 4 + 4 > 4, bent van r1 = [4 4] r0 = [1 1] 1 + 1 < 4, kint van

  34. Egyenletek • Szakasz egyenlete • Ezzel az egyenessel kell a metszéspont • Behelyettesítve x(t) = t x0 + (1-t)x1 y(t) = t y0 + (1-t)y1 x+ y = 4 t x0 + (1-t)x1+ t y0 + (1-t)y1 = 4 t (x0 - x1 + y0 – y1) + x1 + y1 = 4 t (1 - 4 + 1 - 4) + 4 + 4 = 4 -6 t = -4 t = 2/3; x(2/3) = 1 * 2/3 + 4 * 1/3 = 6/3 = 2 y(2/3) = 1 * 2/3 + 4 * 1/3 = 6/3 = 2

  35. Vágás példa 2Dben vágjuk erre a fésíkra: x+y > 4 4 + 4 > 4, bent van r1 = [4 4] rc = [2 2] r0 = [1 1] 1 + 1 < 4, kint van

  36. Háromszögek vágása • Nem valami általános félsíkra szokott előfordulni, inkább pl. x > -1 • Sutherland-Hodgeman • VAGY 4 eset • mind kint: nincs bent semmi • mind bent: az eredeti hsz marad • 2 kint: a két szakaszra vágunk, 3 csúcs marad, 1 db hsz • 1 kint: a két szakaszra vágunk, 4 csúcs lesz, 2 db hsz

  37. Szakasz vágás 3D • Ugyanez a menete • De volt egy perspektív trafó • eredeti szakaszokat homogén szakaszokba viszi, ami nem biztos hogy tényleg szakasz

  38. ide vetül ide vetül Átfordulási probléma itt kellene látszania nem a két vetületi pont között 1 ablak a virtuális világra

  39. Ezért először vágunk, aztán vetítünk ami ezen kívül van, nem kerül a képernyőre, erre vágunk itt kellene látszania nem a két vetületi pont között ide vetül metszéspont ablak a virtuális világra

  40. Szakasz vágás homogén koordinátákban • Szakasz egyenlete ugyanaz • Vágósík egyenlete lesz más r(t) = t*r0 + (1-t)r1 ; 0 < t < 1 pl. x > -1 helyett xh > -h

  41. Példa ez bent van ez kint van • Vágjuk a [2 3 4 1] – [5 6 -7 -1] szakaszt a z > 1 féltérre (homogénben: z > h) • Szakasz egyenlete (csak a z meg a h fog kelleni a t meghatározásához) • Vágósík egyenlete x(t) = t x0 + (1-t)x1 y(t) = t y0 + (1-t)y1 z(t) = t z0 + (1-t)z1= (4 + 7)t - 7 = 11t - 7 h(t) = t h0 + (1-t)h1 = (1 - (-1))t - 1 = 2t - 1 z(t) = h(t); 11t - 7 = 2t - 1; t = 6/9 = 2/3

  42. t vissza a szakasz egyenletébe x(t) = 2/3 x0 + (1-2/3)x1 = 2/3 * 2 + 1/3 * 5 = 9/3 = 3 y(t) = 2/3y0 + (1-2/3)y1 = 2/3 * 3 + 1/3 * 6 = 12/3 = 4 z(t) = 2/3 z0 + (1-2/3)z1= 2/3 * 4+ 1/3 * (-7) = 1/3 h(t) = 2/3 h0 + (1-2/3)h1 = 2/3 - 1/3 = 1/3 az eredmény [3 4 1/3 1/3] jöhet a homogén osztás (minden / 1/3) [9 12 1 1] az eredményül kapott vágott szakasz: [2 3 4 1] - [9 12 1 1]=> [2 3 4] - [9 12 1] a pont a vágósíkon kell legyen

  43. Vizsgapélda x y h x y h Vágósíkok x <= h bent kint x >= -h bent bent y <= h bent bent y >= -h bent kint x = 1 t + 1 (1 -t) = 1 y = 1 t - 11 (1 - t) = 12t - 11 h = 3 t - 1 (1 - t) = 4t - 1 [1 31] Tp = [1 1 3] [1 -1 1]Tp = [1 -11 -1] x=h; 1 = 4t - 1; t = ½ y=-h; 12t - 11 = -4t +1; t = ¾ t = ¾ van közelebb a belső ponthoz ¾ [1 1 3] + ¼ [1 -11 -1] = [1 -8/4 8/4] = [1 -2 2] -> [0.5 -1]

  44. Felületi pont árnyalása OpenGL kamerakoordinátában csinálja de az is jó • Kellhet hozzá (VILÁG koordinátában) • L fényirány (|L|=1), bejövő radiancia I(L) (minden irányból ahonnan jön fény) • N normálvektor (|N|=1) • V szemirány, nézeti irány (|V|=1) • BRDF(felület fényvisszaverő tulajdonsága) • diffúz kd • spekuláris ks, n (exponens) • ideális kr

  45. Árnyalás jelölések N normálvektor V nézeti irány L fényirány R ideális visszaverődési irány Q Y x: felületi pont

  46. Absztrakt fényforrás típusok • Irány (pl. [5 3 2] irányból [2 3 4] RGB radiancia) • L adott, csak normalizálni kell • I(L) adott, mindenhol ugyanannyi, minden más irányból 0 • Pontszerű (pl. [2 3 4] pozícióban [4 5 6] Watt RGB teljesítményű) • L = (S-X)/|S-X|; S a fény pozíció X az árnyalt pont • I(L) = F / (4|S - X|2 p) fény távolsága teljesítmény 4r2p : gömb felülete, ekkora felületen oszlik el a teljesítmény

  47. Égboltfény • I(L) adott, általában konstans (minden bejövő irányra ugyananyi a radiancia) • minden pontban érvényes • diffúz és ideális tükör visszaverődés esetén könnyű, spekulárisnál integrálni kellene

  48. L, N, V-ből számítható • cosQ – fény beesési szögének cosinusa • cosQ= L·N • R – ideálisan visszavert fény iránya • L “tükörképe” a normálvektorra • R = 2N(L·N) – L (lásd skalárszorzat mire jó) • cosY – nézeti mennyire tér el az ideálistól • cosY= R·V

  49. A alapegyenlet (rendering equ) L(x,w)=Le(x,w)+L(h(x,-w’),w’) fr(’,x,) cos’dw’ A mi jelöléseinkkel a lényeg: beesési szög BRDF IV=I(L) cosfr( V,L) dL V irányú kimenő radiancia összegezni minden bejövő irányra az onnan bejövő radiancia egységnyi felületre beeső és V irányba visszavert részét

  50. Irány és pontfényforrás esetén • Csak egy irányból jön be fény, nem kell integrálni IV=I(L) cosfr( V,L) ezek mind adottak vagy számíthatóak • diffúz (BRDF = kd) IV=Iin (N·L) BRDF IV=Iin (N·L) kd • ideális (ha R=V, BRDF = kr/ cos) IV=Iinkr • Phong (BRDF = kscosnY / cos) IV=Iin(R·V)n ks

More Related