Measures of Central Tendency: Mean, Median and Mode
Texture mapping
1. Texture
Motivation: to model realistic objects need
surface detail: wood grain, stone roughness,
scratches that affect shininess, grass, wall
paper.
Use geometry, model surface detail with
polygons; good for large scale detail, too
expensive otherwise.
Improvement: map an image of the details
onto simple geometry
1
7. Texture Mapping
Images and geometry flow through
separate pipelines that join at the
rasterizer
“complex” textures do not affect geometric
complexity
vertices
geometry pipeline
rasterizer
image
pixel pipeline
7
8. Texture mapping
Texture mapping: adding surface detail by
mapping texture patterns to the surface
Technique developed by Catmull (1974), Blinn
and Newell (1976).
8
9. Texture mapping methods
2D texture mapping: paint 2D pattern
onto the surface
Environmental (reflection) mapping
Bump mapping: Disturb surface normal
to fool shading algorithms
Procedural texture mapping, 3D texture
9
12. 2D texture mapping overview
Texture array is a 2D image pattern
With elements texels
Value at a texel affects surface
appearance
The “texture map” determines how the
pattern lies on the surface
12
13. 2D texture mapping overview
Rendering uses the texture mapping
Find surface that is front most at current pixel
Find the surface patch corresponding to the
pixel
Find the part of the texture pattern
corresponding to the surface patch
Use that part of the texture pattern in setting
the pixel color
13
15. 2D texture mapping
Source: 2D pattern from drawing, photo,
procedure
Destination: any surface, easier if surface
given in parametric form
The map from 2D texture coord; to 3D object
Texture mapping transformation: 2D screen
coord; 3D object coord; 2D texture
coord; and back (see previous slide)
15
16. Mapping the 2D texture to the surface
The map: 2D texture(s,t) 3D object(x,y,z)
Mapping onto triangle is not difficult
Mapping onto triangular mesh is more difficult
(have to handle texture discontinuity)
Mapping onto parametric surface is easier
Alternative: use an intermediate parametric
surface (cylinder, sphere)
16
17. Mapping a Texture
t
0, 1
Based on parametric texture coordinates
glTexCoord*() specified at each vertex
Texture Space
1, 1
(s, t) = (0.2, 0.8)
A
a
b
0, 0
Object Space
c
(0.4, 0.2)
B
1, 0
s
C
(0.8, 0.4)
17
18. Mapping texture onto parametric surface
Point on the parametric surface
p : x = x(u , v), y = y (u , v), z = z (u , v)
18
19. Mapping texture onto parametric surface using
liner map
The map from texture to the parametric
coord using invertible linear map between
the texture space (s,t) and the domain (u,v)
p : x = x(u , v), y = y (u , v), z = z (u , v)
u = as + bt + c
v = ds + et + f
19
20. Mapping texture onto parametric surface,
example
Does not take into account curvature of surface
Equal size texture patches are stretched to fit various areas
20
21. Mapping texture to a surface using an
intermediate surface
Two-step mapping
Map the texture to a simple intermediate
surface (sphere, cylinder, cube)
Map the intermediate surface (with the
texture) onto the surface being rendered
21
22. Two-step mapping example
parametric form cylinder: x = r cos(2 PI u)
y = r sin(2 PI u)
z=vh
0<=u,v<=1
first step: u = s, v = t
• sphere
• cube
•
22
25. Texture mapping transformation
Consider surface visible at current pixel.
Find the patch on the surface that corresponds to it.
•Map screen coord of pixel corners back to object
•Find texels that map to the surface patch
•If multiple texels lie on patch combine them:
weighted avg; supersampling with postfiltering
25
26. 2DTexture mapping in OpenGL
Pixel pipeline
Texture map done at rasterization stage
26
28. Environment Mapping II
Put texture on a highly reflective object
by picking up texture from the
environment in which the object is
absorbed/occupied.
Realized as two-step process
Project the environment (excluding the
object) onto an intermediate surface.
Place object back, and map texture from
intermediate surface to object
28
30. Sphere Mapping
Blinn and
Newell’s method:
for each environment mapped
pixel compute the (viewer)
reflection vector
Technical Brief: Perfect
reflections and Specular ….
30
31. Cubic mapping
Introduced by Greene in 1986.
Put a camera in the environment center and then
project the environment onto the sides of a cube
centered at the camera position.
31
32. BUMP Mapping
Bump mapping is a technique in computer graphics for
simulating bumps and wrinkles on the surface of an object. This
is achieved by perturbing the surface normal of the object and
using the perturbed normal during lighting calculations. The
result is an apparently bumpy surface rather than a smooth
surface although the surface of the underlying object is not
actually changed. Bump mapping was introduced by Blinn in
1978.
32
33. Bump mapping
2D Texture map creates odd looking rough
surfaces
Bump mapping: texture map that alters
surface normals.
Use texture array to set a function which perturbs
surface normals
Altered normals match a bumpy surface
Applying illumination model to the new normals
shades the bumps correctly
33
34. Bump mapping
Bump map is in texture array: d(s,t) << 1
• p point on the surface corresponding to texture
coordinates s,t.
• N the normal at p
• p’
the bump point for p
p’ = p + d(s,t)N
We actually do not “bump” the surface, just the
normal at p .
• N’ the normal at p’ . This normal used by the
illumination model at p .
•
34
35. Bump mapping
How to get N’ :
• given two vectors tangent to the bumpy
surface, N’ is their cross product
• The two vectors follow from the partial
derivatives of the p’ equation wrt u,v
p’ = p + d(s,t)N
These partial derivatives expressed in terms
of the derivatives of d(s,t) as s,t change
•
35
Hinweis der Redaktion
Motivation:
-- object/picture often has parts
-- model once/instantiate multiple times
-- modify only a part
Textures are images that can be thought of as continuous and be one, two, three, or four dimensional. By convention, the coordinates of the image are s, t, r and q. Thus for the two dimensional image above, a point in the image is given by its (s, t) values with (0, 0) in the lower-left corner and (1, 1) in the top-right corner.
A texture map for a two-dimensional geometric object in (x, y, z) world coordinates maps a point in (s, t) space to a corresponding point on the screen.
The advantage of texture mapping is that visual detail is in the image, not in the geometry. Thus, the complexity of an image does not affect the geometric pipeline (transformations, clipping) in OpenGL. Texture is added during rasterization where the geometric and pixel pipelines meet.
Contouring: 1D texture
Contour curves drawn on an object can provide valuable information about the object's geometry. Such curves may represent height above some plane (as in a topographic map) that is either fixed or moves with the object [Sabella 88]. Alternatively, the curves may indicate intrinsic surface properties, such as geodesics or loci of constant curvature. Contouring is achieved with texture mapping by first defining a one-dimensional texture image that is of constant color except at some spot along its length. Then, texture coordinates are computed for vertices of each polygon in the object to be contoured using a texture coordinate generation function. This function may calculate the distance of the vertex above some plane (Figure 4), or may depend on certain surface properties to produce, for instance, a curvature value. Modular arithmetic is used in texture coordinate interpolation to effectively cause the single linear texture image to repeat over and over. The result is lines across the polygons that comprise an object, leading to contour curves.
A two-dimensional (or even three-dimensional) texture image may be used with two (or three) texture coordinate generation functions to produce multiple curves, each representing a different surface characteristic.
Environment Mapping
When you want to map a texture onto a geometric primitive, you need to provide texture coordinates. The glTexCoord*() call sets the current texture coordinates. Valid texture coordinates are between 0 and 1, for each texture dimension, and the default texture coordinate is ( 0, 0, 0, 1 ). If you pass fewer texture coordinates than the currently active texture mode ( for example, using glTexCoord1d() while GL_TEXTURE_2D is enabled ), the additionally required texture coordinates take on default values.