Texture Mapping Course: Computer Graphics Presented by Fan Chen fchen@cs.kent.edu.

Post on 29-Jan-2016

217 views 0 download

Tags:

Transcript of Texture Mapping Course: Computer Graphics Presented by Fan Chen fchen@cs.kent.edu.

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