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, 2013 2D képszintézis és textúrák 6. előadás.

Hasonló előadás


Az előadások a következő témára: "Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2013 2D képszintézis és textúrák 6. előadás."— Előadás másolata:

1 Számítógépes grafika, PPKE-ITK, Benedek Csaba, D képszintézis és textúrák 6. előadás

2 Számítógépes grafika feladata képszintézis Virtuális világ modell modellezés Metafórák: 2D rajzolás világ = sík

3 2D képszintézis Cél: objektumok képernyőre transzformálása és a nézetbe eső részek megjelenítése Megjelenítés = a megfelelő pixelek kiszínezése Kiindulás: lokális koordináta rendszerekben definiált objektumok Fő feladatok: Objektumok transzformálása a világkoord.rsz-be Ablak téglalap elhelyezése (2D kamera) A képernyő koordinátarendszerébe való vetítés A geometriai elemeket közelítő pixelek meghatározása

4 2D képszintézis lépései 1. Vektorizáció: A virtuális világban tárolt szabadformájú elemeket (például körívek, interpolációs vagy spline görbék) pontok, szakaszok és poligonok halmazával közelítjük. 2. Transzformáció: a lokális koord.rsz →világ koord.rsz → képernyő koord.rsz, homogén lineáris transzformáció 3. Vágás: csak az jeleníthető meg, ami a nézet téglalapján belül van, 4. Pásztakonverzió, avagy raszterizáció: geometriai elemek közelítése pixelek átszínezésével

5 2D képszintézis lépései

6 Vektorizáció [0,1]: 0, t 1, t 2,..., t n, 1 r 1 =r(0), r 2 = r(t 2 ), …, r n = r(1) r1r1 r(t)r(t) r2r2 rn rn A szabadformájú elemek közelítése pontokkal, szakaszokkal vagy poligonokkal Homogén lineáris transzformáció és vágás nem változtatja meg az elemek típusát Felosztás finomsága paraméter Pl néhány pixel hosszú szakaszok nem növelik jelentősen a raszterizáció amúgy is jenlévő hibáját

7 Modellezési transzformáció p=(x, y) = o +  u +  v u x u y 0 v x v y 0 o x o y 1 [x, y, 1] = [ , , 1]  TMTM u v o ,  ) (x, y) [0, 0, 1] [o x o y 1 ] [1, 0, 1] [o x +u x o y +u y 1 ] [0, 1, 1] [o x +v x o y +v y 1 ] S x S y cos  sin  0 -sin  cos  p x p y 1 p= [x,y] u=[u x,u y ] v=[v x,v y ]

8 Ablak-nézet transzformáció (x, y) ablak nézet (X, Y) X = (x-w x ) v w /w w + v x Y = (y-w y ) v h /w h + v y (wx,wy)(wx,wy) w whwh (vx,vy)(vx,vy) vwvw vhvh v w /w w 0 0  v h /w h 0 v x -w x v w /w w v y -w y v h /w h 1 [X, Y, 1] = [x, y, 1] TVTV

9 Összetett transzformáció T V nézeti transzformáció számítása for each object o T M előállítása T C = T M T V for each point of object o: transzformáció T C –vel enfor endfor [X, Y, 1] = ([ , , 1] T M ) T V [X, Y, 1] = [ , , 1] (T M T V ) = [ , , 1] T C

10 Vágás Ablakra vs. nézetre vágás Vektorizáció miatt: pont, szakasz, poligon Pontok vágása x > x min, x y min, y < y max x min x max y min y max

11 Szakasz vágás félsíkra x1, y1x1, y1 x2, y2x2, y2 xi, yixi, yi Esetek (példa: x max egyenes): minkét végpont jó oldalon: triviális elfogadás minkét végpont rossz oldalon: triviális eldobás végpontok ellentétes oldalon: metszéspont számítás kell x1, y1x1, y1 x2, y2x2, y2 x max x1, y1x1, y1 x2, y2x2, y2

12 Szakasz vágás félsíkra: metszéspont számítás x(t) = x 1 + (x 2 - x 1 )t, y(t) = y 1 + (y 2 - y 1 )t x = x max Metszéspont: x max = x 1 + (x 2 - x 1 )t  t = (x max -x 1 )/(x 2 -x 1 ) x i = x max y i = y 1 + (y 2 - y 1 ) (x max -x 1 )/(x 2 -x 1 ) x1, y1x1, y1 x2, y2x2, y2 x max xi, yixi, yi

13 Cohen-Sutherland vágás C2C2 Kód=C 3 C 2 C 1 C 0 C0C0 C1C1 C3C3

14 #define Code(p) ((p.x < xmin) + ((p.y < ymin)<<1) + \\ ((p.x > xmax) ymax)<<3) bool LineClip(Vector& p1, Vector& p2) { for( ; ; ) { int c1 = Code(p1), c2 = Code(p2); if (c1 == 0 && c2 == 0) return true; if ((c1 & c2) != 0) return false; if ((c1 & 1)) p1 = IntersectX(p1, p2, xmin); else if ((c1 & 2)) p1 = IntersectY(p1, p2, ymin); else if ((c1 & 4)) p1 = IntersectX(p1, p2, xmax); else if ((c1 & 8)) p1 = IntersectY(p1, p2, ymax); else if ((c2 & 1)) p2 = IntersectX(p1, p2, xmin); else if ((c2 & 2)) p2 = IntersectY(p1, p2, ymin); else if ((c2 & 4)) p2 = IntersectX(p1, p2, xmax); else if ((c2 & 8)) p2 = IntersectY(p1, p2, ymax); } Cohen-Sutherland algoritmus

15 Poligonok vágása Továbbra is: négy félsíkra vágás... Csúcspont belső pont: a vágott poligonnak is belső pontja Csúcspont külső pont: eldobhatjuk, de egy új csúcspont is létrejöhet, ha az aktuális él metszi a vágás egyenesét!

16 Sutherland-Hodgeman poligonvágás PolygonClip(p[n]  q[m]) m = 0; for( i=0; i < n; i++) { if (p[i] belső) { q[m++] = p[i]; if (p[i+1] külső) q[m++] = Intersect(p[i], p[i+1], vágóegyenes); } else { if (p[i+1] belső) q[m++] = Intersect(p[i], p[i+1], vágóegyenes); }

17 Konkáv poligonok vágása Konkáv poligon több részre eshet szét Kétszeres él = nem él valójában q[0] q[1] q[2] q[3] q[4] q[5] q[6] q[7]

18 Raszterizáció Alakzatok formáinak közelítése: pixelek átszínezése útján Alapegység: pixel egy geometria objektumhoz több ezer/millió pixel tartozhat Következmény: az elvárt sebesség nagyságrendileg haladja meg az eddigi műveleteket!

19 Pászta konverzió (raszterizáció) transzformációvágás raszterizációPixel műveletek rasztertár model Geometriai primitívek: microsec / primitív Pixelek nanosec / pixel

20 Szakasz rajzolás Egyenes egyenlete: y = mx + b Egyeneshúzás (0 < m < 1): m=(y2-y1)/(x2-x1) b=y1-x1*(y2-y1)/(x2-x1) for( x = x1; x <= x2; x++) { Y = m*x + b; y = Round( Y ); write( x, y ); } x1x1 x2x2 Példa: enyhén emelkedő egyenes: 0 < m < 1: minden oszlopban 1 pixel Elvárások: a szakasz (1) ne legyen lyukas (2) ne legyen túl vastag

21 Inkrementális elv Y(X) kiszámítása Y(X) = F( Y(X-1) ) = Y(X-1) + dY/dX Szakasz rajzolás: Y(X) = mX + b = m(X-1)+b+m Y(X) = F( Y(X-1) ) = Y(X-1) + m Összeadás: fixpontos ábrázolás: y = Y 2 T T: hiba < 1 a leghosszabb műveletsornál N 2 -T log 2 N N: leghosszabb szakasz hossza round( y ): y+0.5-t csonkítjuk (= „tört” bitek levágása)

22 DDA szakaszrajzolás DDADrawLine(x1, y1, x2, y2) { m = (y2 - y1)/(x2 - x1) y = y FOR X = x1 TO x2 { Y = round(y)trunc(y) WRITE(X, Y, color) y = y+m }

23 DDA szakaszrajzoló hardver X számlálóy regiszter x1 m y1 0.5 = XY  CLK

24 Bresenham szakaszrajzoló algoritmus DDA: gyors, de a fixpontos ábrázolás és egészrész képzés eltolást (shift) igényel szakaszonként egyszer lebegőpontos osztás (m) Megoldás: Bresenham algorithmusa ( lásd tankönyv 103. oldal...

25 Terület elárasztás működése Flood(x, y) { if (pixel[x][y] belső pont) { Write(x, y, color); Flood(x, y-1); Flood(x, y+1); Flood(x-1, y); Flood(x+1, y); } Belső pont = sötétkék mag Cél: adott kezdeti pontból egy adott határvonal átlépése nélkül elérhető pixelek átszínezése

26 Területkitöltés Geometriai reprezentáció alapján p1,p2,...,pn csúcsok p1-p2, p2-p3,...,pn-p1 élek Belső pixel páratlanszor metszünk élt, ha végtelenből jövünk végtelen: vágás után a nézet széle

27 Területkitöltés p1 p2 p3 p4 y x1 x4x2x3 Feldolgozás: vízszintes pásztánként:

28 Naív módszer: FillPolygonSlow(q, m) % q = [q[0],…,q[m-1]] for Y = 0 to Ymax do scanline = Y k=0 for e=0 to m-1 do if scanline a q[e] és q[e+1] között van then x[k++]=(q[e],q[e+1]) szakasz és a scanline metszéspontja endif endfor x[k] tömb rendezése for i=0 to k/2-1 do for X=x[2i] to x[2i+1] do Pixel(X,Y,Color(X,Y)) endfor end Nem hatékony, mert minden pásztánál minden élt figyelünk 

29 Kitöltés gyorsítása Vizsgálatok csak az aktív élekre aktív élek frissítése a megelőző pásztából Metszéspontszámítás inkrementális elv szerint a megelőző pászta metszéspontjából: y x(y) Dx/Dy x(y+1)x(y+2) Dx/Dy y+1 y+2

30 Aktív él lista ymax Dx/Dy x nextAETymax Dx/Dy x next ymin=0 ymin=1 ymin=1024 ymax Dx/Dy x1 next ET éltábla: előzetesen rendezzük valamennyi élet ymin érték szerint AET: aktív éltábla – az aktuális pásztánál releváns élek Metszéspont x koordinátája az aktuális pásztával

31 Poligonkitöltés FillPolygonFast(q, m) % q = [q[0],…,q[m-1]] for Y = 0 to Ymax do for e=0 to m-1 do edge = (q[e],q[e+1]) if ymin(edge) == Y then Put_AET(edge) endfor for minden edge élre az AET-ben do if ymax(edge) >= Y then Delete_AET(edge) endfor Resort_AET for minden második l élre az AET-ben do for X=round(x[l]) to round(x[l+1]) to SetPixelColor(X,Y,Color(X,Y)) endfor for minden l élre az AET-ben do x[l]+=dx/dy endfor end

32 2. rész - Világmodellek képszintézis Virtuális világ modell modellezés Metafórák: 2D rajzolás világ = sík

33 Testek Ellenpéldák Érvényes testek: reguláris halmaz nem lehetnek alacsony dimenziós elfajulásai minden határpont mellett van belső pont Garantáltan érvényes testet építő módszerek 2.5 dimenziós eljárások speciális felületi modellezés: B-rep Konstruktív tömörtest geometria

34 2.5 dimenziós módszerek Kihúzás: extrudeForgatás: rotate

35 Felületmodellezők Test = határfelületek gyűjteménye Topológiai ellenőrzés (Euler tétel): csúcs + lap = él + 2

36 B-rep: Euler operátorok

37 Gyakorlati Euler operátorok Edge split csúcs + lap = él + 2 Poligon split Élzsugorítás v. csúcspont összevonás -Edge Collapse

38 Gyakorlati Euler operátorok Poligon kihúzás (Face extrude): e p : a poligon éleinek a száma 2e p új él, e p +1 új lap, e p új csúcs 1 eltűnő lap e’=e+2e p l’=l+e p +1-1 c’=c+e p l’+c’=l+c+2e p =e+2+2e p =e’+2

39 Poligon modellezés: téglatest

40 Poligon modellezés: 1. extruding

41 Poligon modellezés: 2. extruding

42 Poligon modellezés: 4. és 5. extruding

43 Poligon modellezés: 6. extruding

44 Subdivision simítás

45 Konstruktív tömörtest geometria (Constuctive Solid Geometry (CSG) Összetett testeket primitív testekből halmazműveletek (egyesítés, metszet, különbség) alkalmazásával építi fel Regularizált műveletek

46 CSG fa

47 Virtuális világ tárolása

48 Belső világ tárolása Geometria: pontok koordinátái Topológia: élek-pontok; lapok-pontok;... hierarchia: objektum-lapok-élek-pontok transzformáció: lokális és világkoordináta rendszerek modellezőképszintézis világ fáljkonv VRML, 3DS, OBJ, DXF IGES, MB, MD2,...

49 Egyszerű hierarchikus modell Objektum Primitív Pont obj1 szakasz1 Bezier kör point1 point3 point4 point5 point1 point6

50 Geometria kiemelése obj1 szakasz1 Bezier kör x y

51 Szárnyasél adatstruktúra class BRepCore { … public: void MEVVF(…); void MVE(float t, Edge& e); void MEF(Vertex& v1,Vertex& v2); void Move(Vertex& v, Vector p); }; class BRep : BRepCore { void FaceExtrude( ); void FaceSplit( ); void EdgeCollapse( ); void VertexSplit( ); … }; él Pont +(x,y) lap

52 Hierarchikus színtér gráfok Karosszéria Kerék1 transzformáció Kerék2 transzformáció kerék Ferrari haladási transzformáció Kerék Forgatási transzformáció

53 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 3. rész - Textúrázás képszintézis Virtuális világ modell modellezés Metafórák: 2D rajzolás világ = sík

54 Textúra leképzés Összetett mintázatú felületek (pl perzsaszőnyeg) BRDF-leírása nehézkes bonyolult modellezés, hosszú képszintézis  Megoldás: textúra Bittérképes textúra: 2-D képet rendelünk a felülethez, a képpontok a felületelem színét tartalmazzák Procedurális textúra: generáló műveletsorral írjuk le a mintázatot

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

56 (2D) Textúra leképzés Paraméterezés Nézeti transzformáció u v Kép (elemei a „texel”-ek) vagy függvény x = f x (u,v) y = f y (u,v) z = f z (u,v) u,v  [0,1] x z y (x,y,z)

57 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Textúra-tér - képtér Textúra alapú leképzés: a textúra-térben levő ponthoz keresi meg a hozzá tartozó pixelt Hatékony, de nem garantálja hogy a textúra-térben kijelölt pontok a képernyőn is egyenletesen helyezkednek el („lyukas lehet a kép”) A képtér alapú leképzés: a pixelhez keresi meg a hozzá tartozó textúra elemet Vetítési transzformáció inverze!

58 u v Textúra leképzés sugárkövetésnél Inverz paraméterezés x = x0 + r cos 2  u sin  v y = y0 + r sin 2  u sin  v z = z0 + r cos  v u,v  [0,1] u = 1/2  (atan2((y-y0), (x-x0)) +  ) v = 1/  acos( (z-z0)/r ) Gömb példa: x z y (x,y,z)

59 u v (u 1, v 1 ) (u 3, v 3 )(u 2, v 2 ) Paraméterezés Modell-világ-képernyő transzf. Inkrementális képszintézis x z X Y (x3,y3,z3) y (X 1,Y 1 ) (x1,y1,z1) [X h, Y h, Z h, h] = [x,y,z,1]T C (X,Y)= [X h /h, Y h /h] (x2,y2,z2) (X 2,Y 2 ) (X 3,Y 3 )

60 Lineáris interpoláció u v (u 1, v 1 ) (u 3, v 3 ) (u 2, v 2 ) u 1 =a u X 1 +b u Y 1 +c u u 2 =a u X 2 +b u Y 2 +c u u 3 =a u X 3 +b u Y 3 +c u v 1 =a v X 1 +b v Y 1 +c v v 2 =a v X 2 +b v Y 2 +c v v 3 =a v X 3 +b v Y 3 +c v u=a u X+b u Y+c u v=a v X+b v Y+c v X Y (X 1,Y 1 ) (X 2,Y 2 ) (X 3,Y 3 ) Interpolációs feltétel: jó lineáris u(X,Y) X számláló u regiszter auau X  CLK Leképzés: 2x3 mátrix 6 egyenlet 6 ismeretlen

61 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME u v x z y (x,y,z) P: homogén lineáris T v : homogén lineáris

62 u v (u 1, v 1 ) (u 3, v 3 )(u 2, v 2 ) Modell-világ-képernyő transzf. Perspektíva helyes textúrázás [u,v,1]T C(3x3) = [X h, Y h, h], [u/h,v/h,1/h] = [X,Y,1]T C -1 X Y [X h1,Y h1,h 1 ] [X h, Y h, h] = [x q,y q,z q,q]T V(4x3) (X,Y) = [X h /h, Y h /h] [X h2,Y h2,h 2 ] [X h3,Y h3,h 3 ] x y z x q =a x u+b x v+c x y q =a y u+b y v+c y z q =a z u+b z v+c z q=a q u+b q v+c q Paraméterezés

63 u v (u 1, v 1 ) (u 3, v 3 ) (u 2, v 2 ) T C -1 mátrixelemek X Y [X h1,Y h1,h 1 ]  (X 1,Y 1 ) u 1 /h 1 =a u X 1 +b u Y 1 +c u u 2 /h 2 =a u X 2 +b u Y 2 +c u u 3 /h 3 =a u X 3 +b u Y 3 +c u [X h2,Y h2,h 2 ]  (X 2,Y 2 ) [X h3,Y h3,h 3 ]  ( X 3,Y 3 ) v 1 /h 1 =a v X 1 +b v Y 1 +c v v 1 /h 1 =a v X 2 +b v Y 2 +c v v 1 /h 1 =a v X 3 +b v Y 3 +c v 1/h 1 =a h X 1 +b h Y 1 +c w 1/h 2 =a h X 2 +b h Y 2 +c w 1/h 3 =a h X 3 +b h Y 3 +c w a u,b u,c u av,bv,cvav,bv,cv ah,bh,chah,bh,ch T c -1 : leképzés: 3x3 mátrix 9 egyenlet 9 ismeretlen [u/h,v/h,1/h] = [X,Y,1]T C -1 a u, a v, a h b u, b v, b h c u, c v, c h T C -1 =

64 Perspektíva helyes textúrázás u = v = a u X+b u Y+c u a v X+b v Y+c v a h X+b h Y+c h Perspektív helyes lineáris u v X Y u/h = a u X+b u Y+c u v/h = a v X+b v Y+c v 1/h = a h X+b h Y+c h

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

66 Textúra függvény definíciója (0,0) (1,1) 1.Parametrikus felületeknél triviális 2. Implicit felületeknél és poligonmodellnél: közvetítő felületek közvetítő felület = téglalap x z (x3,y3,z3) y (x1,y1,z1) u v (u1,v1)(u1,v1) (u3,v3)(u3,v3) (u2,v2)(u2,v2) (x2,y2,z2)

67 Henger (gömb) közvetítő felület

68 Téglalap közvetítő felület: textúratér nézet

69

70 Textúrázott űrhajó

71 Textúrázás = kiterítés Torzításcsökkentés relaxációval

72 Textúrák szűrése u v X Y pixel ősképe

73 Mip-map adatstruktúra X Y

74 Bucka leképzés (Bump mapping) Tároljuk a normálvektort táblázatban vagy a felületi elmozdulást

75 Textúrák az OpenGL-ben Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME

76 A textúraobjektumok elnevezése Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME void glGenTextures(GLsizei n, GLuint *textureNames); n darab, jelenleg használaton kívüli textúraobjektum nevet a vissza a textureNames tömbbe. A visszaadott nevek nem feltétlenül egymást követő egészek

77 A textúraobjektumok létrehozása, használata 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 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME void glBindTexture(GLenum target, GLuint textureName); Target: GL_TEXTURE_1D, GL_TEXTURE_2D, vagy GL_TEXTURE_3D, Ha először hívjuk a textureName azonosítóval: létrehoz egy textútraobjektumot és hozzákapcsolja a névhez Ha nem először hívjuk: textureName azonosítójú textúrát teszi kurrenssé

78 Textúra beállítása Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME void glTexParameter{if}(GLenum target, GLenum pname, TYPE param); Target: GL_TEXTURE_1D, GL_TEXTURE_2D, vagy GL_TEXTURE_3D, Pname, param: számos paraméterezési lehetőség (lásd OpenGL referencia)

79 Textúra beállítás - példák Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); Nagyításhoz ill kicsinyítéshez használt interpoláció (GL_NEAREST mellett lehet még GL_LINEAR)

80 Textúra beállítás - példák Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); x és y (itt s és t) irányú ismétlődés (wrap=burkolat), lehet: GL_CLAMP - rögzített GL_REPEAT – ismétlődő parketta

81 Textúra beállítás - példák Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME void glTexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *texels); 2D struktúrát hoz létre. Target: GL_TEXTURE_2D (vagy más) level > 0 ha több felbontást használunk internalFormat: használt színkomponensek pl GL_RGBA GLsizei width, GLsizei height: a textúraobj mérete Border: határ szélessége (lehet 0) Format, type: a textúraadatok formátuma pl format=GL_RGBA, type= GL_UNSIGNED_BYTE texels: a textúra-minta adatait tartalmazó tömb

82 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 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Minta textúra inicializálása Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME static GLubyte textDescriptor[height][width][4]; static GLuint texName[2];... glGenTextures(1, texName); glBindTexture(GL_TEXTURE_2D, texName[0]); glTexParameteri(…); … glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textDescriptor);

83 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Textúra paraméterezése Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME void glTexCoord{1234}{sifd}(TYPE coords); Textúra kooridnátái: s,t,r,q (~x,y,z,w), ahol q=1 ált. A kurrens (s,t,r,q) textúrakoordinátákat állítja be. Az ezt követően létrehozott csúcspontokhoz a rendszer ezt a textúrakoordinátát rendeli

84 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Textúra paraméterezése, példa Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex3d(1,-1,0); glTexCoord2f(0, 1); glVertex3d(-1,-1,0); glTexCoord2f(1, 1); glVertex3d(-1,1,0); glTexCoord2f(1, 0); glVertex3d(1,1,0); glEnd();

85 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Textúra és saját szín kombinálása Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); GL_TEXTURE_ENV_MODE lehet: GL_REPLACE – a textúrával felülírjuk a saját v. megvilágításból adódó színt GL_MODULATE – a megjelenített színt a textúrából és a saját színből közösen számítjuk


Letölteni ppt "Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2013 2D képszintézis és textúrák 6. előadás."

Hasonló előadás


Google Hirdetések