Post on 29-Jan-2016
Texture Mapping
Course: Computer GraphicsPresented by Fan Chen
fchen@cs.kent.edu
OutlineWhy 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
complexCannot model all the fine variationsWe need to find ways to add surface
detailHow?
What is Texture Mapping?Application of an image onto a
modelAn image is mapped onto the 2D
domain of a 3D model Correspondence between domain
of surface and texture gives method to apply image
Mapping FunctionsBasic problem is how to find the
mapsConsider mapping from texture to
surfaceThree functions are needed
x = x(s,t)y = y(s,t)z = z(s,t)
s
t
(x,y,z)
Texture Mapping in OpenGLThree 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 ImageDefine 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
t1, 1
0, 1
0, 0 1, 0
(s, t) = (0.2, 0.8)
(0.4, 0.2)
(0.8, 0.4)
A
B C
a
bc
Texture Space Object Space
Typical CodeglBegin(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 ParametersOpenGL 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 ModeClamping: if s,t > 1 use 1, if s,t <0
use 0Repeating: 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_CLAMPwrapping
GL_REPEATwrapping
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 ModeModes determined byglTexParameteri( target, type, mode )
glTexParameteri(GL_TEXTURE_2D, GL_TEXURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXURE_MIN_FILTER, GL_LINEAR);
MipmappingMipmapping 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
MipmappingDefine 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◦www.tlaloc.sfsu.edu/~yoon/csc830/8
30_lecture8.texture.ppt◦www.jcsites.juniata.edu/faculty/kruse
/cs330/AngelTexture.ppt