Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Textúrák, világmodellek
6. előadás Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010
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: extrude Forgatá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): ep: a poligon éleinek a száma 2ep új él, ep+1 új lap, ep új csúcs 1 eltűnő lap e’=e+2ep l’=l+ep+1-1 c’=c+ep l’+c’=l+c+2ep=e+2+2ep=e’+2
8
Poligon modellezés: téglatest
9
Poligon modellezés: 1. extruding
poligon kihúzás
10
Poligon modellezés: 2. extruding
mégegy poligon kihúzás
11
Poligon modellezés: 4. és 5. extruding
még két poligon kihúzás
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 15
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 VRML, 3DS, OBJ, DXF IGES, MB, MD2,... fáljkonv 17
18
Egyszerű hierarchikus modell
Objektum obj1 szakasz1 Bezier kör Primitív point1 point1 point1 Pont point3 point4 point5 point6 18
19
Geometria kiemelése obj1 szakasz1 Bezier kör x y 19
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 20
21
Hierarchikus színtér gráfok
Ferrari haladási transzformáció Karosszéria Kerék1 transzformáció Kerék2 transzformáció Kerék Forgatási transzformáció kerék
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ó v (x,y,z) z
u v (x,y,z) z y x Kép (elemei a „texel”-ek) vagy függvény x = fx(u,v) y = fy(u,v) z = fz(u,v) u,v [0,1]
25
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! Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME
26
Textúra leképzés sugárkövetésnél
Inverz paraméterezés u v (x,y,z) z y x Gömb példa: x = x0 + r cos 2u sin v y = y0 + r sin 2u 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 )
27
Modell-világ-képernyő transzf.
Inkrementális képszintézis Paraméterezés Modell-világ-képernyő transzf. [Xh, Yh, Zh, h] = [x,y,z,1]TC (X,Y)= [Xh/h, Yh/h] u v (x3,y3,z3) Y (u1, v1) z (X1,Y1) (x2,y2,z2) (u3, v3) (u2, v2) (X3,Y3) (x1,y1,z1) (X2,Y2) y X x
28
Lineáris interpoláció
Leképzés: 2x3 mátrix 6 egyenlet 6 ismeretlen u v u=au X+buY+cu v=av X+bvY+cv Y (X1,Y1) (u1, v1) (u3, v3) (u2, v2) (X3,Y3) u(X,Y) X (X2,Y2) X számláló u regiszter CLK S X Interpolációs feltétel: au lineáris u1=au X1+buY1+cu u2=au X2+buY2+cu u3=au X3+buY3+cu jó v1=av X1+bvY1+cv v2=av X2+bvY2+cv v3=av X3+bvY3+cv
29
P: homogén lineáris Tv: homogén lineáris u v (x,y,z) z y x
Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME
30
Perspektíva helyes textúrázás
Paraméterezés Modell-világ-képernyő transzf. xq=ax u+bxv+cx yq=ay u+byv+cy zq=az u+bzv+cz q=aq u+bqv+cq [Xh, Yh, h] = [x q,y q,z q,q]TV(4x3) (X,Y) = [Xh/h, Yh/h] u v Y [Xh1,Yh1,h1] (u1, v1) [Xh3,Yh3,h3] z (u3, v3) (u2, v2) y [Xh2,Yh2,h2] x X [u,v,1]TC(3x3) = [Xh, Yh, h], [u/h,v/h,1/h] = [X,Y,1]TC-1
31
TC-1 mátrixelemek [u/h,v/h,1/h] = [X,Y,1]TC-1 u v Y
au, av , ah bu, bv , bh cu, cv , ch TC-1 = [u/h,v/h,1/h] = [X,Y,1]TC-1 u v Y [Xh1,Yh1,h1](X1,Y1) (u1, v1) (u3, v3) (u2, v2) [Xh3,Yh3,h3] ( X3,Y3 ) [Xh2,Yh2,h2](X2,Y2) X u1/h1 =au X1+buY1+cu u2/h2 =au X2+buY2+cu u3/h3 =au X3+buY3+cu v1/h1 =av X1+bvY1+cv v1/h1 =av X2+bvY2+cv v1/h1 =av X3+bvY3+cv 1/h1=ah X1+bhY1+cw 1/h2=ah X2+bhY2+cw 1/h3=ah X3+bhY3+cw au ,bu,cu av ,bv,cv ah ,bh,ch Tc-1: leképzés: 3x3 mátrix 9 egyenlet 9 ismeretlen
32
Perspektíva helyes textúrázás
u v Y Perspektív helyes X lineáris au X+buY+cu u/h = au X+buY+cu v/h = av X+bvY+cv 1/h = ah X+bhY+ch u = v = ah X+bhY+ch av X+bvY+cv ah X+bhY+ch
33
Perspektíva helyes interpolációs hw.
R G B X Textúra memória u v Div Div [u/h](X,Y) [v/h](X,Y) [1/h](X,Y) X számláló [u/h] regiszter [v/h] regiszter [1/h] regiszter S S S CLK au av ah
34
Textúra függvény definíciója
Parametrikus felületeknél triviális 2. Implicit felületeknél és poligonmodellnél: közvetítő felületek v (u1,v1) (u3,v3) (u2,v2) (1,1) (0,0) u (x3,y3,z3) z (x2,y2,z2) (x1,y1,z1) közvetítő felület = téglalap y x
35
Henger (gömb) közvetítő felület
36
Téglalap közvetítő felület: textúratér nézet
A kiterített közvetítő felületre texúrázott minta látható
37
Téglalap közvetítő felület: textúratér nézet
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 v Y pixel ősképe u X
41
Mip-map adatstruktúra
Y X
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
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 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME
45
A textúraobjektumok létrehozása, használata
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é 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
46
Textúra beállítása 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) Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME
47
Textúra beállítás - példák
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) Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME
48
Textúra beállítás - példák
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 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME
49
Textúra beállítás - példák
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 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME
50
Minta textúra inicializálása
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); 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 Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME
51
Textúra paraméterezése
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 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
52
Textúra paraméterezése, példa
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(); 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
53
Textúra és saját szín kombinálása
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 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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.