Texture Mapping May 4, 2006 Many slides are borrowed from UNC-CH - - PDF document
Texture Mapping May 4, 2006 Many slides are borrowed from UNC-CH - - PDF document
Texture Mapping May 4, 2006 Many slides are borrowed from UNC-CH COMP236 Course (Spring 2003) taught by Leonard McMillan http://www.unc.edu/courses/2003spring/ comp/236/001/handouts.html 1 2 3 4 5 6 Compare the above with what we
SLIDE 1
SLIDE 2
2
SLIDE 3
3
SLIDE 4
4
SLIDE 5
5
SLIDE 6
6
SLIDE 7
7
Compare the above with what we discussed previously… (Note the different meaning of s and t.)
SLIDE 8
8
Derivation of s and t
- Two end points P1=(x1, y1, z1) and
P2=(x2, y2, z2). Let P3=(1-t)P1+(t)P2
- After projection, P1, P2, P3 are projected
to (x’1, y’1), (x’2, y’2), (x’3, y’3) in screen
- coordinates. Let (x’3, y’3)=(1-s)(x’1, y’1)
+ s(x’2, y’2).
- (x’1, y’1), (x’2, y’2), (x’3, y’3) are obtained
from P1, P2, P3 by:
) 1 1 ) 1 (( 1 ' ' ' 1 ' ' ' , 1 ' ' '
2 2 2 1 1 1 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+ − = = = = z y x t z y x t M z y x M w w z w y w x z y x M w w z w y w x z y x M w w z w y w x
SLIDE 9
9
Since We have:
= =
2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
' ' ' 1 , ' ' ' 1 w w z w y w x z y x M w w z w y w x z y x M + − = ⋅ + − =
2 2 2 2 2 2 2 1 1 1 1 1 1 1 2 2 2 1 1 1 3 3 3 3 3 3 3
' ' ' ' ' ' ) 1 ( 1 1 ) 1 ( ' ' ' w w z w y w x t w w z w y w x t z y x M t z y x M t w w z w y w x
When P3 is projected to the screen, we get (x’3, y’3) by dividing by w, so: But remember that (x’3, y’3)=(1-s)(x’1, y’1) + s(x’2, y’2) Looking at x coordinate, we have
) ) 1 ( ' ' ) 1 ( , ) 1 ( ' ' ) 1 ( ( ) ' , ' (
2 1 2 2 1 1 2 1 2 2 1 1 3 3
w t w t w y t w y t w t w t w x t w x t y x ⋅ + − ⋅ + − ⋅ + − ⋅ + − =
2 1 2 2 1 1 2 1
) 1 ( ' ' ) 1 ( ) 1 ( w t w t w x t w x t x s x s ⋅ + − ⋅ + − = ⋅ + −
SLIDE 10
10
We may rewrite s in terms of t, w1, w2, x’1, and x’2. In fact,
- r conversely
Surprisingly, x’1 and x’2 disappear.
) ( ) 1 (
1 2 1 2 2 1 2
w w t w w t w t w t w t s − + ⋅ = ⋅ + − ⋅ =
2 2 1 1 2 1 1
) ( ) 1 ( w w w s w s w s w s w s t + − ⋅ = − + ⋅ ⋅ =
Texture Mapping II
SLIDE 11
11
What You Will Learn Today?
- Bump maps
- Mipmapping for antialiased textures
- Projective textures
- Shadow maps
- Environment maps
The Limits of Geometric Modeling
- Although graphics cards can render over
10 million polygons per second, that number is insufficient for many phenomena
–Clouds –Grass –Terrain –Skin
SLIDE 12
12
Modeling an Orange
- Consider the problem of modeling an
- range (the fruit)
- Start with an orange-colored sphere
–Too simple
- Replace sphere with a more complex
shape
–Does not capture surface characteristics (small dimples) –Takes too many polygons to model all the dimples
Modeling an Orange (2)
- Take a picture of a real orange, scan it,
and “paste” onto simple geometric model
–This process is texture mapping
- Still might not be sufficient because
resulting surface will be smooth
–Need to change local shape –Bump mapping
SLIDE 13
13
Three Types of Mapping
- Texture Mapping
–Uses images to fill inside of polygons
- Environmental (reflection mapping)
–Uses a picture of the environment for texture maps –Allows simulation of highly specular surfaces
- Bump mapping
–Emulates altering normal vectors during the rendering process
Texture Mapping
geometric model texture mapped
SLIDE 14
14
Environment Mapping Bump Mapping
SLIDE 15
15
Magnification and Minification
Texture Polygon Magnification Minification Polygon Texture
More than one texel can cover a pixel (minification) or more than one pixel can cover a texel (magnification) Can use point sampling (nearest texel) or linear filtering ( 2 x 2 filter) to obtain texture values
Aliasing
- Point sampling of the texture can lead to
aliasing errors
point samples in u,v (or x,y,z) space point samples in texture space miss blue stripes
SLIDE 16
16
Area Averaging
A better but slower option is to use area averaging
Note that preimage of pixel is curved pixel preimage
SLIDE 17
17
SLIDE 18
18
Example
point sampling mipmapped point sampling mipmapped linear filtering linear filtering
Automatic Texture Coordinate Generation
- OpenGL can generate texture coordinates
automatically
glTexGen{ifd}[v]()
- generation modes
–GL_OBJECT_LINEAR –GL_EYE_LINEAR –GL_SPHERE_MAP (used for environmental maps)
- Check the OpenGL Red Book!
–4th Ed., Chapter 8, pp.422-432, 446-450.
SLIDE 19
19
SLIDE 20
20
SLIDE 21
21
SLIDE 22
22
Shadow Map
- Similarly, by clever use of glTexGen(),
we can cast shadows on objects.
Figure 1. These diagrams were taken from Mark Kilgard’s shadow mapping presentation at GDC
- 2001. They illustrate the shadowing comparison that occurs in shadow mapping.
With Shadows Without Shadows
More Detail
- For projective texture, see:
http://developer.nvidia.com/object/Proje ctive_Texture_Mapping.html
- For shadow map, see:
http://developer.nvidia.com/object/hwsh adowmap_paper.html
SLIDE 23
23
Question: Aren’t shadow and reflection global illumination effects? Why can we do it in the hardware pipeline?
SLIDE 24
24
SLIDE 25