This preview shows page 1. Sign up to view the full content.
Unformatted text preview: CAP4730: Computational Structures in
Computer Graphics Texture Mapping
Texture Mapping Outline
Outline
What is texture mapping?
s Math behind texture mapping
s OpenGL texture mapping
s Advanced Topics in texture mapping
s Marching towards Visual Marching towards Visual Realism
http://www.3drender.com/jbirn/productions.html How do we do this?
How do we do this? Another Example
Another Example Using only Triangles
Using only Triangles
s s s s
s Using only triangles to model everything is hard
Think about a label on a soup can
Instead of interpolating colors, map a pattern
Run Demo
How do you create a pattern? Texture
Texture
A color array that holds an image
s Similar to a framebuffer
s gluint buffer[x*y*3]
s 255 0 255
s Procedural Texture
Procedural Texture
s Calculate pixel values via functions Image Textures
Image Textures
Load pixel values from a file Let’s look at some games
Let’s look at some games Texture Space
Texture Space
How would you store this in your program?
s How much memory?
s s s = [0…1]
t = [0…1]
t Object Space
Object Space
(u1,v1)
(u0,v0) s
Texture > Object
Transformation s = [0…1]
t = [0…1] t u = [0…1]
v = [0…1] (u3,v3)
(u2,v2) Going from pixels to textures
Going from pixels to textures
Object > Texture Transformation (s , t ) (u,v) Image > Object Transformation ( x, y) What is the question?
What is the question?
s s s s s A pixel (x,y) corresponds to what texture element (s,t)?
Q: How do we convert (s,t) into texture element coordinates?
TEXture Elements (TEXELS)
A: Linearly Interpolate texture coordinates!
http://graphics.lcs.mit.edu/cl
asses/6.837/F98/Lecture21/
Slide05.html Tiling
Tiling
s Let’s look at the texture coordinates
s t (u0,v0) (u3,v3) (u1,v1) (u2,v2) Textures built to Tile
Textures built to Tile
s Think Windows Background
0,0 0,1
s s 0,0 2,0 1,1 0,2 2,2 1,0 Why would you want this? Discuss the Pros and Cons of tiling. Look at code Filtering
Filtering
s Why does this happen?
(u0,v0) (u1,v1) (u2,v2) Filtering
Filtering
s Why does this happen? (ui,vi) s (uj,vj) What are some alternatives? Combining Lighting + Combining Lighting + Texturing
If you notice there is no lighting involved with texture mapping!
s They are independent operations, which MAY (you decide) be combined
s It all depends on how you “apply” the texture to the underlying triangle
s Combining Lighting + Combining Lighting + Texturing
s
s
s
s
s CT = Texture Color CC = Base Triangle Replace, CF = CT Blend, CF = CT * CC
OpenGL: – glTexEnv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND);
– http://trant.sgi.com/opengl/docs/man_page Screen space vs. world space
Screen space vs. world space
P0(x,y,z)
V0(x,y) V1(x,y)
P1(x,y,z) Interpolation in Screen Space
Interpolation in Screen Space
P ( t ) = V0 + t (V1 − V0 ) V0(x’,y’) x0 x1 x0 P( t ) = + t − z0 z1 z0 V1(x’,y’)
z’=1 P1(x,y,z) P0(x,y,z) Interpolation in World Space
Interpolation in World Space
P ( t ) = P0 + s ( P − P0 )
1 V0(x’,y’) x0 x1 x0 P ( t ) = + s − z0 z1 z0 V1(x’,y’)
z’=1 P1(x,y,z) P0(x,y,z) Comparing the two
Comparing the two
P ( t ) = V0 + t (V1 − V0 )
x0 x1 x0 P( t ) = + t − z0 z1 z0 s s s
s P ( t ) = P0 + s ( P − P0 )
1
x x x P ( t ) = 0 + s 1 − 0 z0 z1 z0 What do we need to interpolate in screen space now?
What happens if we don’t have Z? What have we discussed that doesn’t have Z?
Perspectively Correct Z
http://graphics.lcs.mit.edu/classe
s/6.837/F98/Lecture21/Slide14.h
tml x0 x1 x0 x0 + s( x1 − x0 )
+ t − =
z0 z1 z0 z0 + s( z1 − z0 ) tz0
s=
z1 + t ( z0 − z1 )
u = u0 + s(u1 − u0 )
v = v0 + s( v1 − v0 ) Other solutions
Other solutions
Cost of screen space interpolation now?
s Increase # of triangles
s x0 x1 x0 x0 + s( x1 − x0 )
+ t − =
z0 z1 z0 z0 + s( z1 − z0 ) tz0
s=
z1 + t ( z0 − z1 )
u = u0 + s(u1 − u0 )
v = v0 + s( v1 − v0 ) Linear Interpolation is wrong?
Linear Interpolation is wrong?
Gouraud is wrong, but why does it look okay?
s Q: Why does Texture mapping not look right even though we are doing the same thing?
s A: All about the slope of the interpolation and the “gradualness” or “abruptness” of the change
s Transparencies
Transparencies
We will revisit this later, but we can use the alpha channel to stencil out textures.
s Thus per pixel, set alpha = 1 or alpha = 0. Where alpha = 0, s Let’s Look at some games
Let’s Look at some games
s Pick a favorite game from the class ...
View
Full
Document
 Fall '08
 Staff
 Computer Graphics

Click to edit the document details