Texture Mapping Course: Computer Graphics Presented by Fan Chen
Outline Why Texture Mapping? What is Texture Mapping? Texture Mapping in OpenGL
Why Texture Mapping? Model Model + Texture+ Shading
Why Texture Mapping? Surfaces “in the wild” are very complex Cannot model all the fine variations We need to find ways to add surface detail How?
What is Texture Mapping? Application of an image onto a model An image is mapped onto the 2D domain of a 3D model Correspondence between domain of surface and texture gives method to apply image
Mapping Functions Basic problem is how to find the maps Consider mapping from texture to surface Three functions are needed x = x(s,t) y = y(s,t) z = z(s,t) s t (x,y,z)
Texture Mapping in OpenGL Three steps to applying a texture ◦ Specify the texture Read or generate image Assign to texture Enable texturing ◦ Assign texture coordinates to vertices Proper mapping function ◦ Specify texture parameters Wrapping, filtering
Specify Texture Image Define a texture image from an array of texels (texture elements) ◦ Glubyte my_texels[512][512][3]; Enable texture mapping ◦ glEnable(GL_TEXTURE_2D)
Mapping a Texture glTexCoord2f() specified at each vertex s t 1, 1 0, 1 0, 01, 0 (s, t) = (0.2, 0.8) (0.4, 0.2) (0.8, 0.4) A BC a b c Texture SpaceObject Space
Typical Code glBegin(GL_POLYGON); glTexCoord2f(s0, t0); glVertex3f(x0, y0, z0); glTexCoord2f(s1, t1); glVertex3f(x1, y1, z1); glTexCoord2f(s2, t1); glVertex3f(x2, y2, z2);. glEnd();
Texture Parameters OpenGL a variety of parameter that determine how texture is applied ◦ Wrapping parameters determine what happens of s and t are outside the (0,1) range ◦ Filter modes allow us to use area averaging instead of point samples ◦ Mipmapping allows us to use textures at multiple resolutions
Wrapping Mode Clamping: if s,t > 1 use 1, if s,t <0 use 0 Repeating: use s,t modulo 1 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ) glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ) texture s t GL_CLAMP wrapping GL_REPEAT wrapping
Magnification and Minification Magnification: more than one pixel can cover a texel Minification: more than one texel can cover a pixel Can use point sampling (nearest texel) or linear filtering to obtain texture values Texture Polygon Magnification Minification PolygonTexture
Filter Mode Modes determined by glTexParameteri( target, type, mode ) glTexParameteri(GL_TEXTURE_2D, GL_TEXURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXURE_MIN_FILTER, GL_LINEAR);
Mipmapping Mipmapping allows for pre-filtered texture maps of decreasing resolutions according the distance to the viewer Different resolutions ◦ Level 0: original texture map ◦ Level 1: half size in width and height
Mipmapping Define mipmaps ◦ glTexImage2D(GL_TEXTURE_2D, level, GL_RGB, …) Where level = 0, 1, 2,.. With mipmapping Without mipmapping
Reference Text Book ◦ Edward Angel, Interactive Computer Graphics: A Top-Down Approach with OpenGL, 5th edition, Addison-Wesley Online courses ◦ e8.texture.ppt e8.texture.ppt ◦ ngelTexture.ppt ngelTexture.ppt