Texture Mapping

17
Texture Mapping Course: Computer Graphics Presented by Fan Chen [email protected]

description

Texture Mapping. Course: Computer Graphics Presented by Fan Chen [email protected]. Outline. Why Texture Mapping? What is Texture Mapping? Texture Mapping in OpenGL. Why Texture Mapping?. Model + Texture+ Shading. Model. Why Texture Mapping?. Surfaces “in the wild” are very complex - PowerPoint PPT Presentation

Transcript of Texture Mapping

Page 1: Texture Mapping

Texture Mapping

Course: Computer GraphicsPresented by Fan Chen

[email protected]

Page 2: Texture Mapping

OutlineWhy Texture Mapping?

What is Texture Mapping?

Texture Mapping in OpenGL

Page 3: Texture Mapping

Why Texture Mapping?

Model Model + Texture+ Shading

Page 4: Texture Mapping

Why Texture Mapping?Surfaces “in the wild” are very

complexCannot model all the fine variationsWe need to find ways to add surface

detailHow?

Page 5: Texture Mapping

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

Page 6: Texture Mapping

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)

Page 7: Texture Mapping

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

Page 8: Texture Mapping

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)

Page 9: Texture Mapping

Mapping a TextureglTexCoord2f() specified at each

vertex

s

t 1, 10, 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

Page 10: Texture Mapping

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

Page 11: Texture Mapping

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

Page 12: Texture Mapping

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 )

textures

t

GL_CLAMPwrapping

GL_REPEATwrapping

Page 13: Texture Mapping

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 PolygonMagnification Minification

PolygonTexture

Page 14: Texture Mapping

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

Page 15: Texture Mapping

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

Page 16: Texture Mapping

MipmappingDefine mipmaps

◦ glTexImage2D(GL_TEXTURE_2D, level, GL_RGB, …) Where level = 0, 1, 2, ..

With mipmapping

Without mipmapping

Page 17: Texture Mapping

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