Title: Texture Mapping
1Texture Mapping
CAP4730 Computational Structures in Computer
Graphics
2Outline
- What is texture mapping?
- Math behind texture mapping
- OpenGL texture mapping
- Advanced Topics in texture mapping
3Marching towards Visual Realism
http//www.3drender.com/jbirn/productions.html
4How do we do this?
5Another Example
6Using only Triangles
- 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?
7Texture
- A color array that holds an image
- Similar to a framebuffer
- gluint bufferxy3
- 255 0 255
8Procedural Texture
- Calculate pixel values via functions
9Image Textures
Load pixel values from a file
10Lets look at some games
11Texture Space
- How would you store this in your program?
- How much memory?
s
s 01 t 01
t
12Object Space
(u1,v1)
(u0,v0)
s
Texture -gt Object Transformation
s 01 t 01 u 01 v 01
(u3,v3)
t
(u2,v2)
13Going from pixels to textures
Object -gt Texture Transformation
Image -gt Object Transformation
(x,y)
(s,t)
(u,v)
14What is the question?
- 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/classes/6.837/F98/Lect
ure21/Slide05.html
15Tiling
- Lets look at the texture coordinates
(u1,v1)
(u0,v0)
s
(u3,v3)
t
(u2,v2)
16Textures built to Tile
- Think Windows Background
- Why would you want this? Discuss the Pros and
Cons of tiling. - Look at code
0,0
1,0
0,1
1,1
17Filtering
(u0,v0)
(u1,v1)
(u2,v2)
18Filtering
- Why does this happen?
- What are some alternatives?
(ui,vi)
(uj,vj)
19Combining Lighting Texturing
- If you notice there is no lighting involved with
texture mapping! - They are independent operations, which MAY (you
decide) be combined - It all depends on how you apply the texture to
the underlying triangle
20Combining Lighting Texturing
- 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_pages/hardcop
y/GL/html/gl/texenv.html
21Screen space vs. world space
P0(x,y,z)
V0(x,y)
V1(x,y)
P1(x,y,z)
22Interpolation in Screen Space
P0(x,y,z)
V0(x,y)
V1(x,y)
P1(x,y,z)
z1
23Interpolation in World Space
P0(x,y,z)
V0(x,y)
V1(x,y)
P1(x,y,z)
z1
24Comparing the two
- What do we need to interpolate in screen space
now? - What happens if we dont have Z? What have we
discussed that doesnt have Z? - Perspectively Correct Z
- http//graphics.lcs.mit.edu/classes/6.837/F98/Lect
ure21/Slide14.html
25Other solutions
- Cost of screen space interpolation now?
- Increase of triangles
26Linear Interpolation is wrong?
- Gouraud is wrong, but why does it look okay?
- Q Why does Texture mapping not look right even
though we are doing the same thing? - A All about the slope of the interpolation and
the gradualness or abruptness of the change
27Transparencies
- We will revisit this later, but we can use the
alpha channel to stencil out textures. - Thus per pixel, set alpha 1 or alpha 0.
Where alpha 0,
28Lets Look at some games
- Pick a favorite game from the class