Komputer Grafik 2 (AK045206) Pemetaan Tekstur 1/35 Pemetaan Tekstur.

Presentation on theme: "Komputer Grafik 2 (AK045206) Pemetaan Tekstur 1/35 Pemetaan Tekstur."— Presentation transcript:

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 1/35 Pemetaan Tekstur

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 2/35 Outline Memetakan tekstur ke permukaan datar Contoh-contoh dengan OpenGL Pemetaan ‘Bump’ MIPMAPS

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 3/35 Texture Mapping Limited ability to generate complex surfaces with geometry Images can convey the illusion of geometry Images painted onto polygons is called texture mapping

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 4/35 Texture Maps Images applied to polygons to enhance the visual effect of a scene –Rectangular arrays of data Color, luminance, alpha Components of array called texels –We’ve also had volumetric voxels

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 5/35 Texture Mapping Texture map is an image, two-dimensional array of color values (texels) Texels are specified by texture’s (u,v) space At each screen pixel, texel can be used to substitute a polygon’s surface property (color) We must map (u,v) space to polygon’s (s, t) space U V S T

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 6/35 Texture Mapping (u,v) to (s,t) mapping can be explicitly set at vertices by storing texture coordinates with each vertex How do we compute (u,v) to (s,t) mapping for points in between –Watch for aliasing –Watch for many to one mappings –Watch for perspective foreshortening effects and linear interpolation

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 7/35 Example Texture Map Applied to tilted polygon

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 8/35 Example Texture Map glVertex3d (s, s, s) glTexCoord2d(1,1); glVertex3d (-s, -s, -s) glTexCoord2d(1,1);

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 9/35 Example Texture Map glVertex3d (s, s, s) glTexCoord2d(5, 5); glVertex3d (s, s, s) glTexCoord2d(1, 1);

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 10/35 Texture Coordinates Every polygon has object coordinates and texture coordinates –Object coordinates describe where polygon vertices are on the screen –Texture coordinates describe texel coordinates of each vertex (usually 0 -> 1) –Texture coordinates are interpolated along vertex-vertex edges glTexCoord{1234}{sifd}(TYPE coords)

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 11/35 Textures Texture Object –An OpenGL data type that keeps textures resident in memory and provides identifiers to easily access them –Provides efficiency gains over having to repeatedly load and reload a texture –You can prioritize textures to keep in memory –OpenGL uses least recently used (LRU) if no priority is assigned

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 12/35 Example use of Texture Read.bmp from file –Use Image data type getc() and fseek() to read image x & y size fread() fills the Image->data memory with actual red/green/blue values from.bmp –Note malloc() Image->data to appropriate size.bmp stores color in bgr order and we convert to rgb order

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 13/35 Step 2 – create Texture Objects glGenTextures(1, &texture[texture_num]); –First argument tells GL how many Texture Objects to create –Second argument is a pointer to the place where OpenGL will store the names (unsigned integers) of the Texture Objects it creates texture[] is of type GLuint

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 14/35 Step 3 – Specify which texture object is about to be defined Tell OpenGL that you are going to define the specifics of the Texture Object it created –glBindTexture(GL_TEXTURE_2D, texture[texture_num]); Textures can be 1D and 3D as well

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 15/35 Step 4 – Begin defining texture glTexParameter() –Sets various parameters that control how a texture is treated as it’s applied to a fragment or stored in a texture object –// scale linearly when image bigger than texture glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE _MAG_FILTER,GL_LINEAR); – // scale linearly when image smaller than texture glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE _MIN_FILTER,GL_LINEAR);

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 16/35 Step 5 – Assign image data –glTexImage2D(); GL_TEXTURE_2D (2D Texture) 0 (level of detail 0) 3 (3 components, RGB) image1->sizeX (size) image1->sizeY (size) 0 (no border pixel) GL_RGB (RGB color order) GL_UNSIGNED_BYTE (unsigned byte data) image1->data (pointer to the data))

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 17/35 glTexImage2D – Arg 1 GLenum target –GL_TEXTURE_2D –GL_PROXY_TEXTURE_2D Provides queries for texture resources Proceed with hypothetical texture use (GL won’t apply the texture) After query, call GLGetTexLevelParamter to verify presence of required system components Doesn’t check possibility of multiple texture interference

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 18/35 glTexImage2D – Arg 2 GLint level –Used for Level of Detail (LOD) –LOD stores multiple versions of texture that can be used at runtime (set of sizes) –Runtime algorithms select appropriate version of texture Pixel size of polygon used to select best texture Eliminates need for error-prone filtering algorithms

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 19/35 glTexImage2D – Arg 3 GLint internalFormat –Describes which of R, G, B, and A are used in internal representation of texels –Provides control over things texture can do High bit depth alpha blending High bit depth intensity mapping General purpose RGB –GL doesn’t guarantee all options are available on given hardware

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 20/35 glTexImage2D – Args 4-6 GLsizei width GLsizei height –Dimensions of texture image Must be 2 m + 2b (b=0 or 1 depending on border) min, 64 x 64 GLint border –Width of border (1 or 0) Border allows linear blending between overlapping textures Useful when manually tiling textures

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 21/35 glTexImage2D – Args 7 & 8 GLenum format –Describe how texture data is stored in input array GL_RGB, GL_RGBA, GL_BLUE… GLenum type –Data size of array components GL_SHORT, GL_BYTE, GL_INT…

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 22/35 glTexImage2D – Arg 9 Const GLvoid *texels –Pointer to data describing texture map

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 23/35 Step 6 – Apply texture Before defining geometry –glEnable(GL_TEXTURE_2D); –glBindTexture(GL_TEXTURE_2D, texture[0]); –glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 24/35 glTexEnv() GL_TEXTURE_ENV_MODEGL_DECAL GL_REPLACE GL_MODULATE GL_BLEND If GL_BLEND selected, second call to glTexEnv() must specify GL_TEXTURE_ENV_COLOR 4-float array for R,G,B,A blend First argument to function is always GL_TEXTURE_ENV

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 25/35 gluScaleImage() Alters the size of an image to meet the 2 m size requirement of OpenGL –Scaling performed by linear and box filtering glCopyTexImage2D() Use current frame buffer contents as texture Copy frame buffer to named texture location

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 26/35 glTexSubImage2D() Replace a region of current working texture with a smaller texture SubImage need not adhere to 2 m size limitation This is how you add data from your system’s camera to GL environment glCopyTexSubImage2D –Frame buffer cut and paste possible too

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 27/35 Bump Mapping Use textures to modify surface geometry Use texel values to modify surface normals of polygon Texel values correspond to height field –Height field models a rough surface Partial derivative of bump map specifies change to surface normal

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 28/35 Bump Mapping

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 29/35 Displacement Mapping Bump mapped normals are inconsistent with actual geometry. Problems arise (shadows). Displacement mapping actually affects the surface geometry

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 30/35 Mipmaps multum in parvo -- many things in a small place A texture LOD technique Prespecify a series of prefiltered texture maps of decreasing resolutions Requires more texture storage Eliminates shimmering and flashing as objects move

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 31/35 MIPMAPS With versus without MIPMAP

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 32/35 MIPMAPS Arrange different versions into one block of memory

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 33/35 gluBuild2DMipmaps Automatically constructs a family of textures from original texture size down to 1x1

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 34/35 Advanced Mipmaps You can specify additional mipmap levels on the fly –MIN_LOD may reduce popping –MAX_LOD may reduce over compression You can specify min mipmap level –Useful for mosaicing (Alphabet on a texture)

Komputer Grafik 2 (AK045206) Pemetaan Tekstur 35/35 Referensi 1:, 4:GraphicsSlides07.pdf, 9:Lecture14 Buku Teks : 1.F.S.Hill, Jr., COMPUTER GRAPHICS – Using Open GL, Second Edition, Prentice Hall, 2001 2.Foley, van Dam, Feiner, Hughes, and Philips, Introduction to Computer Graphics, Addison Wesley, 2000 Lecture Notes / Slide-Presentation / Referensi lain yang diperoleh melalui internet : 3.Andries van Dam, Introduction to Computer Graphics, Slide-Presentation, Brown University, 2003, (folder : brownUni) 4._______________, Interactive Computer Graphic, Slide-Presentation, (folder : Lect_IC_AC_UK) 5.­­­­­­­­­­­­­­­­­­­­­Michael McCool, CS 488/688 :Introduction to Computer Graphics, Lecture Notes, University of Waterloo, 2003 (lecturenotes.pdf) 6._______________, Computer Science 559, Slide-Presentation, Wisconsin University,(folder : Lect_Wisc_EDU) 7.http://graphics.lcs.mit.edu/classses/6.837/F98/Lecture4/Slide23.html, Slide-Presentation, MIT, (folder : MIT_CourseNote)http://graphics.lcs.mit.edu/classses/6.837/F98/Lecture4/Slide23.html 8._______________, CS 319 : Advance Topic in Computer Graphics, Slide-Presentation, (folder : uiuc_cs) 9._______________, CS 445/645 : Introduction to Computer Graphics, Slide-Presentation, (folder :COMP_GRAFIK) 10.Gladimir V.G. Baranoski, CS 488 : Introduction to Computer Graphics, Waterloo University 11.Prof. Peter Panfilov, http://cse.yeditepe.edu.tr/~osertel/courses/CSE484/index.htmlhttp://cse.yeditepe.edu.tr/~osertel/courses/CSE484/index.html 12.http://www.cl.cam.ac.uk/Teaching/1998/AGraphics/l3a.htmlhttp://www.cl.cam.ac.uk/Teaching/1998/AGraphics/l3a.html