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

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

Hasonló előadás


Az előadások a következő témára: "Vektorok különbsége e x e-x szempozíció árnyalt felületi pont pozíciója nézeti irány (nem normalizált) e-x = [e x -x x e y -x y e z -x z ]"— Előadás másolata:

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

2 Vektorok hossza v |v| = √ (v x *v x + v y *v y + v z *v z ) |v||v|

3 Normalizált nézeti irány e x szempozíció árnyalt felületi pont pozíciója V: nézeti irány (normalizált) e-x = [e x -x x e y -x y e z -x z ] V= (e-x)/|e-x|

4 Két vektor skalárszorzata (dot product) a b a·b = a x b x + a y b y + a z b z skalár (egy szám) a·b = |a||b| cos  

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

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

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

8 Például: diffúz felület árnyalása L  N L: fényirány (normalizált) kimenő radiancia (nem függ a nézeti iránytól, mert diffúz) I out Fal N: árnyalt felület normálvektora (normalizált) I out = I in k d cos  I in : bejövő radiancia k d : diffúz BRDF paraméter  : fény beesési szöge I out = I in k d L·N

9 Két vektor vektoriális szorzata (keresztszorzat, cross product) a b a×b = [a y b z -a z b y a z b x -a x b z a x b y -a y b x ]  a×b |a×b| = |a||b|sin  a·|a×b| = 0b·|a×b| = 0 merőleges a-ra és b-re

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

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 O M origó MxMx MyMy [3 4] P = O M + 3M x + 4M y

14 Világ: kitüntetett fő-rendszer ebben legyen minden az árnyaláshoz O W origó WxWx WyWy Lokális Model [3 4] P = 3M x + 4M y modell origo itt van [3 3] Ezekkel adjuk meg az objektum elhelyezkedését M x = 3/25 W x – 4/25 W y M y = 4/25 W x + 3/25 W y

15 Világkoordináták kiszámolása WxWx WyWy Lokális Model [3 4] P = 3M x + 4M y O M [3,3] M x = 3/25 W x – 4/25 W y M y = 4/25 W x + 3/25 W y P = 4W x + 3W y [4 3] O W origó P = O M + 3M x + 4M y P = 3 W x + 3 W y + 3 (3/25 W x – 4/25 W y )+ 4 (4/25 W y + 3/25 W y ) = 3 W x + 3 W y + (9 + 16)/25 W x + (12-12) W y = 4W x + 3W y

16 Ez a számítás mátrix formában (modellezési transzformáció) [4 3 1] = [3 4 1] 3/25 -4/25 0 4/25 3/ P = 3 W x + 3 W y + 3 (3/25 W x – 4/25 W y )+ 4 (4/25 W y + 3/25 W y ) [4 3] = [3+3*3/25+4*4/25 3-3*4/25+4*3/25] OMOM MyMy MxMx mindig fix

17 Árnyalás világ-koordinátákban O W origó WxWx WyWy [4 3] [4 1] [6 3] S fényforrás pozíciója E szem pozíciójaX árnyalt felületi pont L L megvilágítás iránya V V nézeti irány Minden világ-ban adott L = (S-X)/|S-X| V = (E-X)/|E-X|

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

19 Kamera koordináta rendszer O W origó WxWx WyWy [4 3] [6 3] C x = [-1 1] C z = [-1 -1] [4 3] = E + x C *C x + z C *C z kamera koordináták egyenletrendszer x,z-re E 4 = 6 + x C *(-1) + z C *(-1) 3 = 3 + x C *(-1) + z C *(1) x C = 1, z C = 1

20 Kamera koordináta számítás mátrix formában (NEM a kamera trafó mátrix) [4 3 1] = [1 1 1] E CyCy CxCx mindig fix [4 3] = E + x C *C x + z C *C z [4 3] = E + x C *[-1 -1] + z C *[-1 1]

21 Kamera trafó mátrix [4 3 1] = [1 1 1] [4 3 1]= [1 1 1]

22 Képernyő koordináta rendszer O W origó WxWx WyWy ablak a virtuális világra JzJz JxJx xJxJ zJzJ hova vetül a képernyőn milyen messze (takaráshoz kell) 1

23 Képernyőkoordináta számítása ablak a virtuális világra JzJz x C = x J * z C x J = x C / z C xCxC zCzC 1 hasonló háromszögek JxJx xJxJ zJzJ

24 Ha a látószög nem 90 fok ablak a virtuális világra JzJz x C = x J * z C x J = x C / z C xCxC zCzC 1 hasonló háromszögek JxJx xJxJ zJzJ Jx az egység Osztani kell az ablakunk fél szélességével így ez 0.5 itt van az 1.0 FOV látószög x J = (x C / z C ) / tan(FOV/2) Ha FOV = 90 fok akkor ez 1

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 x Jhomo / h Jhomo = (x C / z C ) / tan(FOV/2)

26 Perspektív trafó mátrix x Jhomo / h Jhomo = (x C / z C ) / tan(FOV/2) [x Jhomo ? h Jhomo ] = [x C z C 1] 1/ tan(FOV/2) ? 0 0 ? 1 0 ? 0 x C / tan(FOV/2) zCzC ez a képernyő-pozíció szempontjából nem érdekes

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: [x Jhomo ? h Jhomo ] = [x C z C 1] 1/ tan(FOV/2) A zCzC A*z C = A mindig A: elveszne a mélység info kell valamit ide is írni

28 0 < Z J <1 tartomány legyen fp < Z C < bp 1/(tg(fov/2)) (fp+bp)/(bp-fp) fp*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) /(tg(fov/2)) (fp+bp)/(bp-fp) fp*bp/(bp-fp) 0

29 OpenGL ehhez képest ide rakja az ablakot JzJz JxJx kamera a –z felé néz

30 Ezért a z sor - 1/(tg(fov/2)*asp) /(tg(fov/2)) (fp+bp)/(bp-fp) fp*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 M 1 ) M 2 ) M 3 ) = r (M 1 M 2 M 3 ) 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*r 0 + (1-t)r 1 ; 0 < t < 1

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

34 Egyenletek Szakasz egyenlete Ezzel az egyenessel kell a metszéspont Behelyettesítve x(t) = t x 0 + (1-t)x 1 y(t) = t y 0 + (1-t)y 1 x + y = 4 t x 0 + (1-t)x 1 + t y 0 + (1-t)y 1 = 4 t (x 0 - x 1 + y 0 – y 1 ) + x 1 + y 1 = 4 t ( ) = 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 r 0 = [1 1] r 1 = [4 4] vágjuk erre a fésíkra: x+y > > 4, bent van < 4, kint van r c = [2 2]

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 Átfordulási probléma ablak a virtuális világra 1 ide vetül itt kellene látszania nem a két vetületi pont között

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

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

41 Példa Vágjuk a [ ] – [ ] 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 x 0 + (1-t)x 1 y(t) = t y 0 + (1-t)y 1 z(t) = t z 0 + (1-t)z 1 = (4 + 7)t - 7 = 11t - 7 h(t) = t h 0 + (1-t)h 1 = (1 - (-1))t - 1 = 2t - 1 z(t) = h(t);11t - 7 = 2t - 1; t = 6/9 = 2/3 ez bent van ez kint van

42 t vissza a szakasz egyenletébe x(t) = 2/3 x 0 + (1-2/3)x 1 = 2/3 * 2 + 1/3 * 5 = 9/3 = 3 y(t) = 2/3 y 0 + (1-2/3)y 1 = 2/3 * 3 + 1/3 * 6 = 12/3 = 4 z(t) = 2/3 z 0 + (1-2/3)z 1 = 2/3 * 4 + 1/3 * (-7) = 1/3 h(t) = 2/3 h 0 + (1-2/3)h 1 = 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) [ ] az eredményül kapott vágott szakasz: [ ] - [ ] => [2 3 4] - [9 12 1] a pont a vágósíkon kell legyen

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

44 Felületi pont árnyalása 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 k d –spekuláris k s, n (exponens) –ideális k r OpenGL kamerakoordinátában csinálja de az is jó

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

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) =  / (4|S - X| 2  teljesítmény fény távolsága 4r 2  : 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ó cos  – fény beesési szögének cosinusa –cos  = 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ó) cos  – nézeti mennyire tér el az ideálistól –cos  = R·V

49 A alapegyenlet (rendering equ) L(x,  )=L e (x,  )+   L(h(x,-  ’ ,  ’) f r (  ’,x,  ) cos  ’d  ’ I V =  I(L) cos  f r ( V,L) d L A mi jelöléseinkkel a lényeg: 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 beesési szög BRDF

50 Irány és pontfényforrás esetén Csak egy irányból jön be fény, nem kell integrálni I V = I(L) cos  f r ( V,L) ezek mind adottak vagy számíthatóak I V = I in (N · L) BRDF diffúz (BRDF = k d ) I V = I in (N · L) k d ideális (ha R=V, BRDF = k r / cos  ) I V = I in k r Phong (BRDF = k s cos n  / cos  ) I V = I in (R ·V ) n k s

51 Konstans égboltfény + diffúz I V =  I(L) cos  f r ( V,L) d L I V =  I égbolt cos  k d d L nem függ az iránytól mert konstans az égbolt k d, mert diffúz I V = I égbolt k d  cos  d L  albedo

52 Égboltfény + ideális I V = I égbolt (R V ) k r Csak az az irány érdekes, aminek az ideális visszaverődési iránya a szemirány –R V = 2N(V·N) – V Az innen bejövő radiancia k r szerese megy a szemirányba Ehhez nem kell hogy konstans legyen az ég


Letölteni ppt "Vektorok különbsége e x e-x szempozíció árnyalt felületi pont pozíciója nézeti irány (nem normalizált) e-x = [e x -x x e y -x y e z -x z ]"

Hasonló előadás


Google Hirdetések