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 Textúrák, világmodellek 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, 2010 Textúrák, világmodellek 6. előadás."— Előadás másolata:

1 Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Textúrák, világmodellek 6. előadás

2 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

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

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

5 B-rep: Euler operátorok

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

7 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

8 Poligon modellezés: téglatest

9 Poligon modellezés: 1. extruding

10 Poligon modellezés: 2. extruding

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

12 Poligon modellezés: 6. extruding

13 Subdivision simítás

14 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

15 CSG fa

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

17 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,...

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

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

20 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

21 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ó

22 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

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

24 (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)

25 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!

26 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)

27 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 )

28 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

29 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

30 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

31 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 =

32 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

33 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

34 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)

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

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

37

38 Textúrázott űrhajó

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

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

41 Mip-map adatstruktúra X Y

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

43 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

44 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

45 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é

46 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)

47 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)

48 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

49 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

50 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);

51 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

52 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();

53 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, 2010 Textúrák, világmodellek 6. előadás."

Hasonló előadás


Google Hirdetések