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

Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai transzformációk.

Hasonló előadás


Az előadások a következő témára: "Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai transzformációk."— Előadás másolata:

1 Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai transzformációk

2 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Számítógépes grafika feladata képszintézis Virtuális világ modell modellezés Metafórák: optika 2D rajzolás festés analógiák számítás mérés illúzió Képpontok: vörös kék zöld számok

3 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Mindent számmal geometria pont sík egyenes metszi illeszkedik axiómák algebra számok műveletek egyenlet megfeleltetés függvény

4 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Koordinátageometriai gyorstalpaló - Pontok, alakzatok megadása Mindent számmal! Koordináta rendszer Koordináták megadása Koordináta rendszerek Descartes Polár Homogén

5 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Koordináta rendszerek x y r  XhXh YhYh w Descartes Polár Baricentrikus Homogén 1 1

6 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Pontfüggvények: Mozgatás Vektor = eltolás: v Iránya és hossza (|v|) van Helyvektor De vektor ≠ pont !!! Vektorműveletek v = v 1 + v 2 (kommutatív, asszoc) v 1 = v - v 2 (összeadásnak van inverze) v 1 = a  v (összeadásra disztributív) origó pont helyvektor v1v1 v2v2 v avav

7 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Skaláris szorzás Definíció v1  v2 = |v1|  |v2|  cos  Jelentés Egyik vektor vetülete a másikra x másik hossza Tulajdonságok Kommutatív v1  v2 = v2  v1 Összeadással disztributív v3  (v2+v1) = v3  v2 + v3  v1 v  v = |v| 2  v1 v2 |v1|  cos   v1 v2 |v1|  cos  v3v3

8 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Vektoriális szorzás l Definíció –|v1  v2| = |v1|  |v2|  sin  –Merőleges, jobbkéz szabály l Jelentés –Paralelogramma területe, síkjára merőleges –(Egyik vektor vetülete a másikra merőleges síkra + 90 fokos forgatás) x másik hossza l Tulajdonságok –Alternáló v1  v2 = - v2  v1 –Összeadással disztributív v3  (v2+v1) = v3  v2 + v3  v1 –v  v = |v| 2  v1 v2 |v1|  cos  v1  v2  v2 v1 |v1|  sin  v1  v2 90 fok

9 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Descartes koordinátarendszer x i y j origó i j v = xi + yj Egyértelmű (x = v  i, y = v  j) Műveletek koordinátákban Összeadás: v 1 + v 2 = (x 1 +x 2 )i + (y 1 +y 2 )j Skaláris szorzás: v 1  v 2 = (x 1 i + y 1 j)  (x 2 i + y 2 j) = (x 1 x 2 + y 1 y 2 ) Vektoriális szorzás: v 1  v 2 = (x 1 i + y 1 j + z 1 k)  (x 2 i + y 2 j + z 2 k) = (y 1 z 2 – y 2 z 1 ) i + (x 2 z 1 – x 1 z 2 ) j + (x 1 y 2 – y 1 x 2 )k Abszolút érték: |v| =  v  v =  x 2 + y 2 + z 2 i j k x 1 y 1 z 1 x 2 y 2 z 2

10 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Vektor és Pont nem ugyanaz! 2D: vektor (x, y) Pont (x, y) 3D: vektor (x, y, z) Pont (x, y, z) Műveletek: Vektor + Vektor = Vektor Pont + Vektor =Pont (eltolás) Vektor – Vektor = Vektor Pont – Pont = Vektor Vektor  Vektor = Vektor Vektor  Vektor = Skalár Vektor * Skalár = Vektor

11 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Vektor osztály struct Vector { float x, y, z, w; Vector(float x0, float y0, float z0, float w0 = 0) { x = x0; y = y0; z = z0; w = w0; } Vector operator*(float a) { return Vector(x * a, y * a, z * a, w * a); } Vector operator+(Vector& v) { return Vector(x + v.x, y + v.y, z + v.z, w + v.w); } Vector operator-(Vector& v) { return Vector(x - v.x, y - v.y, z - v.z, w - v.w); } float operator*(Vector& v) { return (x * v.x + y * v.y + z * v.z); } Vector operator%(Vector& v) { return Vector(y*v.z-z*v.y, z*v.x - x*v.z, x*v.y-y*v.x); } float Length() { return sqrt(x * x + y * y + z * z); } };

12 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 2D egyenes n  (r – r 0 ) = 0 n x (x – x 0 ) + n y (y – y 0 ) = 0 ax + by + c = 0 (x, y, 1)  (a, b, c) = 0 y r0r0 r v irányvektor n normálvektor r = r 0 + v t, t  [-∞,∞] x = x 0 + v x t y = y 0 + v y t x

13 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Sík n  (r – r 0 ) = 0 n x (x – x 0 ) + n y (y – y 0 ) + n z (z – z 0 ) = 0 ax + by + cz + d = 0 (x, y, z, 1)  (a, b, c, d) = 0 y n normálvektor z x r0r0 r

14 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME … és akkor tényleg folytassuk a transzformációkkal Affin transzformáció: Párhuzamos egyeneseket párhuzamos egyenesekbe viszi Lineáris transzformációk ilyenek

15 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Elemi affin transzformációk Eltolás: r’ = r + p Skálázás:x’= S x x; y’= S y y; Forgatás: x’= cosφ x+ sinφ y; y’= -sinφ x+ cosφ y; r’ = r S x 0 0 S y r’ = r cos φ  sin φ -sin φ cos φ Fix pont: origó

16 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Elemi transzformációk l Nyírás:x’= x; y’= y + a x; l Tükrözés: r’ = r 1 a 0 1 r’ = r 1 

17 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Transzformáció fix pontja: pivot point: ( x p, y p ) Skálázás: x’= S x (x-x p ) + x p ; y’= S y (y-y p ) + y p ; Forgatás: x’= (x-x p )*cos  - (y-x p )* sin  + x p ; y’= (x- y p )*sin  + (y- y p )* cos  + y p ;

18 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME l Alapműveletek: l eltolás l origó fixpontú skálázás l origó középpontú forgatás Modellezési feladat α v méret: s=1.5x Alap objektum modell Várt elhelyezés

19 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Műveletek sorrendje

20 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Modellezés: 2 csuklójú robotkar α β y h w

21 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME x y x y β

22 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME x y β x y β h

23 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME α β y α β y h

24 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME α β x y

25 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Összetett transzformáció Affin transzformáció: r’ = r A + p A: lineáris transzformáció forgatás, skálázás, tükrözés, nyírás, stb. p : eltolás Amíg lineáris transzformáció: konkatenáció r’ = (...(r A 1 ) A 2 )... A n ) = r (A 1 A 2... A n )

26 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Homogén koordinátás transzformációk Eltolás nem fér bele a 2x2-es mátrixba Dolgozzunk 3x3-as mátrixokkal [r’, 1] = [r, 1] = [r A + p, 1] a 11 a 12 0 a 21 a 22 0 p 1 p 2 1 A p [r’,1] = (...([r,1] T 1 ) T 2 )... T n ) = [r,1] (T 1 T 2... T n )

27 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Transzformációk projektív geometriai megközelítése Homogén koordináták – nem csak az eltolás egységes kezeléséért! 3D grafika központi eleme a 3D-s világ 2D-s megjelenítése Vetítés, mint dimenziócsökkentő művelet Centrális (középponti) vetítés Az euklideszi térben nem minden pont vetíthető centrálisan -> euklideszi helyett un. projektív geometria

28 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Képsíkkal párhuzamos vetítősugarakkal jellemzett pontok végtelenbe tűnnek C. projekció nem minden euklideszi pontot visz euklideszi pontba – projektív geometria: tömjük be a lyukakat! Centrális projekció tárgysík képsík Vetítési középpont Eltűnő egyenes Ideális pontok

29 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Projektív geometria Euklideszi geometria 2 pont meghatároz egy egyenest 2 különböző egyenes legfeljebb 1 pontban metszi egymást 1 ponton keresztül pontosan 1 egyenes megy át, amely nem metsz egy, a pontra nem illeszkedő másik egyenest (párhuzamosság) centrális projekcióra lyukas (ideális pontok) algebrai alap: Descartes koordináta rendszer Projektív geometria Projektív sík = Euklideszi sík pontjai + ideális pontok Minden egyeneshez vegyünk hozzá egy ideális pontot úgy, hogy két egyenes akkor kapja u.a. pontot, ha párhuzamos Az egyenesek halmazát egészítsük ki az ideális pontokat tartalmazó egyenessel 2 pont meghatároz egy egyenest 2 különböző egyenes pontosan 1 pontban metszi egymást algebrai alap: homogén koordináták

30 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Homogén koordináták XhXh YhYh w Homogén Szemléltetés: mechanikai rendszer súlypontja Összsúly: h = X h + Y h + w Pont homogén koordinátái: [X h,Y h,h] [0,0,0] nem pont P2P2 P1P1 P3P3 Ha az összsúly h ≠ 0 a súlypont P s euklideszi pont: X h P 1 +Y h P 2 +w P 3 X h + Y h + w Ps=Ps= [X h,Y h,h] és [λX h, λY h, λ h] súlypontja ugyanaz! PsPs

31 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Homogén-Descartes kapcsolat affin pontokra XhXh YhYh w [0,0] [1,0] [0,1] r(X h,Y h,h) = X h [1,0]+Y h [0,1]+w[0,0] h r(X h,Y h,h) = (, ) XhhXhh YhhYhh x = XhhXhh YhhYhh y = Keressük egy adott affin (h ≠ 0) projektív térbeli pont megfelelőjét az euklideszi térben (azaz a Descartes koordinátarendszerben) Súlypont analógia: tegyük a súlyokat i=[1 0], j=[0 1] és 0=[0,0] pontokba, és olvassuk ki a súlypont koordinátáit

32 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Következmények Minden affin ponthoz van: [X h,Y h,h] (x, y)  [x, y,1] Ha h  0, akkor [X h,Y h,h] affin pont (, ) XhhXhh YhhYhh

33 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Mi az ideális pont? h=0 x y (x,y,1) (2x,2y,1) = (x,y,1/2) (x,y,1/3) (x,y,0)

34 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Egyenes egyenlete átírás homogén koordinátás alakra: (a,b,c): egy egyenes; (X h, Y h,h) egy pont Dualitás: pont és egyenes formailag analóg – az összes pontokra érvényes tétel igaz lesz az egyenesekre

35 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Párhuzamos egyenesek metszéspontja Descartes koordinátákkal a 1 x + b 1 y +c 1 = 0 a 2 x + b 2 y +c 2 = 0 x, yx, y a x + b y + c 1 = 0 a x + b y + c 2 = 0 c 1 - c 2 = 0  nincs megoldás a 1 /b 1 / ≠ a 2 /b 2

36 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Descartes: a x + by +c = 0 a X h /h + b Y h /h +c = 0 Homogén:a X h + b Y h +c h = 0 a X h + b Y h + c 1 h = 0 a X h + b Y h + c 2 h = 0 (c 1 - c 2 ) h = 0  h = 0, X h = b, Y h = -a Párhuzamos egyenesek metszéspontja homogén koordinátákkal [b,-a,0]

37 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Beágyazott modell [X h,Y h,h] XhXh YhYh h x y 1 [X h,Y h,0] [, ] XhhXhh YhhYhh (x, y ) = [0,0,0] nem pont [X h,Y h,h]·a u.a. pont 3D euklideszi tér 2D projektív sík

38 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Projektív egyenes paraméteres egyenlete [X 1,Y 1,h 1 ] XhXh YhYh h [X 2,Y 2,h 2 ] [X(t),Y(t),h(t)]=[X 1,Y 1,h 1 ] · t + [X 2,Y 2,h 2 ] · (1-t) Szakasz: Konvex kombináció!

39 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Homogén lineáris transzformációk Euklideszi sík affin transzformációi: [x’, y’] = [x, y] A + p Homogén koordináták lineáris függvényei: [X h ’,Y h ’,h’] = [X h,Y h,h] T + p Homogén lineáris transzformációk bővebbek : a 11 a 12 0 a 21 a 22 0 p 1 p 2 1 T =

40 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Homogén lineáris transzformációk tulajdonságai Pontot-pontba, egyenest-egyenesbe (pontba), konvex kombinációkat, konvex kombinációkba visznek át Példa: egyenest egyenesbe: [X(t),Y(t),h(t)]=[X 1,Y 1,h 1 ]·t + [X 2,Y 2,h 2 ]·(1-t) P(t) = P 1 ·t + P 2 ·(1-t)// · T P*(t) = P(t)·T = (P 1 ·T) ·t + (P 2 ·T) ·(1-t)

41 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Példa: Euklideszi geometriában nem lineáris transzformáció 1  0 p 0 1 q [x, y, 1] [ x, y, px+qy] x px+qy y px+qy x, y x’, y’ px+qy=1

42 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME x y (x,y,1) (2x,2y,1) = (x,y,1/2) (x,y,1/3) (x,y,0) (-x,-y,1) =(x,y,-1) (-x,-y,2) =(x,y,-1/2) (x,y,0) Projektív egyenes: körszerű topológia Ideális pont

43 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Veszélyek: átfordulási probléma =Projektív egyenes (topológia) Ideális pont Szakasz ????? e e

44 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME A projektív tér, 3D pontok homogén koordinátái YhYh ZhZh w Homogén Összsúly: h = X h + Y h + Z h + w Pont homogén koordinátái: [X h,Y h,Z h,h] XhXh

45 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME A projektív tér egyenesei és síkjai Egyenes: Sík: [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) Euklideszi, Descartes koord: n x x + n y y + n z z + d = 0 Euklideszi, homogén koord: n x X h /h + n y Y h /h + n z Z h /h +d = 0 Projektív: n x · X h + n y ·Y h + n z · Z h +d · h = 0 [X h,Y h,Z h,h]· = 0 nxnynzdnxnynzd

46 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Invertálható homogén lineáris transzformációk síkot síkba visznek át P·N T = 0 T P P* = P·T T -1 (P*·T -1 )·N T = 0 P*·(T -1 ·N T ) = 0 P*·(N · (T -1 ) T ) T = 0 P*·N* T = 0 N*=N · (T -1 ) T Inverse-transpose

47 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Projektív geometria a számítógépes grafikában Világ: Euklideszi tér Projektív tér Kép: Euklideszi tér [x,y,z]  (x, y,z,1) (X h,Y h,Z h,h) ( T 1 T 2... T n ) [,, ] XhhXhh YhhYhh ZhhZhh

48 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Koordináta-rendszer transzformációk Analógia a műtermi fényképkészítés és az OpenGL képalkotás között Fényképezőgép elhelyezése, ráirányítása a lefényképezendő térrészre - nézőpontba transzformálás A lefényképezendő objektumok elhelyezése a kívánt pozícióba –modell-transzformáció A megfelelő lencse kiválasztása, zoom beállítása – vetítési transzformáció Papírkép a negatívról – képmező transzformálás

49 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME OpenGL transzformációk Homogén lineáris transzformáció (p itt oszlopvektor) p’=Mp Transzformációk kompozíciója p’=M 1 p és p’’= M 2 p’ → p’’=M 2 M 1 p a közös transzformáció M 2 M 1

50 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME OpenGL csővezeték Virtuális világ Kamera transzformáció, illumináció Perspektív transzformáció + Vágás homogén koordinátákban 1.2. Képernyő transzf+Raszterizáció+interpoláció megjelenítés szín mélység MODELVIEWPROJECTION

51 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Transzformációk xyzhxyzh Modelview matrix Stack Projection matrix Stack Homogén osztás Viewport transzf. window Lokális mod. kamerahomogén Normalizált képernyő illumináció vágás Backface culling Raszterizáció, textúrázás modellező, kamera (nyírás), normalizáló perspektív

52 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME OpenGL transzformációs mátrixok kezelése Műveletek: aktuális mátrix kijelölése, betöltése, vagy megszorzása jobbról egy új mátrixszal

53 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME OpenGL transzformációs mátrixok kezelése void glMatrixMode(GLenum mode); Állapotváltozó: megadjuk, hogy melyik mátrixot akarjuk a következő parancsokkal állítani mode lehet: GL_MODELVIEW – modell-nézeti transzformáció (objektumok és a kamera elhelyezkedése és iránya) GL_PROJECTION – kamera modell kiválasztás és fókuszálás GL_TEXTURE – textúra glLoadIdentity(); aktuális mátrix beállítása az egységmátrixra

54 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Mátrix betöltése, szabad szorzása void glLoadMatrix{fd}(const TYPE *m); m pointer által címzett 16 elemű vektor elemeit betölti az aktuális mátrixba oszlopfolytonosan void glMultMatrix{fd}(const TYPE *m); m pointer által címzett 16 elemű vektor elemeiből képzett mátrixszal szorozza az aktuális mátrixot m1  m5 m9 m13 m2 m6 m10 m14 m3 m7 m11 m15 m4 m8 m12m16 M:

55 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME OpenGL transzformációs mátrixok kezelése void glTranslate{fd}(TYPE x, TYPE y, TYPE z) előállítja az [x,y,z,1] T vektorral való eltolás mátrixát és megszorozza vele (jobbról) a kurrens mátrixot void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z) előállítja az origón áthaladó, [x,y,z] T irányvektorú egyenes körül angle szöggel elforgató mátrixot és megszorozza vele a kurrens mátrixot. A szög előjeles, fokban kell megadni void glScale{fd}(TYPE x, TYPE y, TYPE z); - skálázás

56 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Nézőpont és nézeti irány beállítása Alapértelmezés: nézőpont a modellkoordináta- rendszer origója, nézési irány a negatív z-tengely Új nézőpont megadása: OpenGL: az objektumot toljuk/forgatjuk ellentétes irányban (glTranslate*, glRotate*) GLU: a nézőpont és a kamera nézet iránya közvetlenül is megadható

57 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Nézőpont és nézeti irány beállítása void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz)

58 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME OpenGL transzform. kompozíció Forgatás (R) majd eltolás (T) elvégzése p’=Rp és p’’= Tp’ → p’’=TRp a közös transzformáció TR: OpenGL mátrixszorzás jobbról történik, ezért a mátrixokat a végrehajtás sorrendjével ellentétes sorrendben kell megadni: (1) lépés glLoadIdentity(); M:=E egységmátrix (2) lépés glTranslated(x,y,z); M:=M∙T=E∙T = T (3) lépés glRotated(angle,x,y,z); M:=M∙R=E∙T∙R = TR

59 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME MODELVIEW Transzformáció sorrend Kamera koordinátarendszer glMatrixMode(GL_MODELVIEW); glLoadIdentity( ); gluLookAt(eyex, eyey, eyez, vrpx, vrpy, vrpz,upx, upy, upz); //VIEW glTranslatef(px, py,pz); //MODEL glRotatef(ang, axisx,axisy,axisz); glScalef(sx, sy, sz); glMultMatrixf( mat[4][4] ); u x u y u z 0 v x v y v z 0 w x w y w z 0 eye 1 eye u v w

60 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME OpenGL vetítési transzfromációk Centrális vetítés (valószerű képek): glFrustum() glPerspective() Merőleges vetítés (méret/méretarány helyes képek): glOrtho() glOrtho2D()

61 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Projektív transzformáció void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);

62 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Projektív transzformáció void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble near, GLdouble far);

63 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Merőleges vetítés void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); a nézőpont helye itt közömbös, csak a nézési irány számít

64 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 2D alakzatok ábrázolása void gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); 2D: nem kell közeli és távoli vágósíkot megadni (automatikusan [-1,1])

65 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME PROJECTION Transzformáció glMatrixMode(GL_PROJECTION); glLoadIdentity( ); gluPerspective(fov, asp, fp, bp); 1/(tg(fov/2)·asp) /tg(fov/2) (fp+bp)/(bp-fp) fp*bp/(bp-fp) 0 Kamera koordinátarendszer Homogén (1, 1, 1, 1) (-1,-1,-1, 1) fp bp Projekció után homogén osztás: normalizált koordináták

66 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Képmező transzformáció void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); képmező: téglalap alakú rajzterület a képernyőn oldalai párhuzamosak az ablak oldalaival (x,y): a képmező bal alsó sarka width, height: a képmező szélessége, hosszúsága

67 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Képernyő Transzformáció glViewport( 0, 0, width, height ); Normalizált képernyő: Vágás és homogén osztás után 1 (-1,-1,-1) (1, 1, 1)

68 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Aktuális transzf. mentése és újra töltése void glPushMatrix(void); A glMatrixMode() paranccsal beállított kurrens verem minden elemét egy szinttel lejjebb tolja. A legfelső (kurrens) mátrix a második mátrix másolata lesz void glPopMatrix(void); A glMatrixMode() paranccsal beállított kurrens verem legfelsőbb elemét eldobja, és minden további elemet egy szinttel feljebb tol.


Letölteni ppt "Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai transzformációk."

Hasonló előadás


Google Hirdetések