Slide 4 : Texture Mapping

Virtual Realism
TEXTURE MAPPING
The Quest for Visual Realism
Why Texture Map?
 So far we have done flat shading and Gouraud/Phong
shading
 Not good to represent everything in real world
 What are some of our other options?
 Represent everything with tiny polygons

Geometry would get complicated very quickly
 Apply textures across the polygons
 This allows for less geometry but the image looks almost
as good
•
•
Basic Concept
Pasting an image onto a model
An image is mapped onto the 2D domain of a 3D model
 Textures are almost always rectangular array of pixels called texels
(texture elements)
Texture Coordinates
 A texture is usually addressed
by two numbers (s, t)
 s and t takes values in [0,1]
[0, 1]
 A vertex can be associated
with a point on the texture by
giving it one of these texture
coordinates
t
 glTexCoord*(s,t);
 glVertex*(x,y,z);
[0,0]
s
[1, 0]
Example Texture Map
Types of Textures
 Bitmap textures
 Bitmapped representation of images
 Represented by an array


Color3 texture(float s, float t){
 Return txtr[(int)(s*c),(int)(t*r)]
}
 Procedural textures
 Defined by a mathematical function
 In either case, we have a ‘texture function’
 texture(s,t)
Texture Mapping Problem
Texture space
(sx,sy)=Tws(Ttw (s*,t*))
World space
Screen space
Mapping Textures on Flat
Surfaces
• Associate points on texture with points on the polygonal face
– OpenGL uses the function glTexCoord*()
• sets the current texture coordinates
Rendering Textures on Flat
Surfaces
 Similar to Gouraud shading
 Consider the current scan line ys
 For each xs, compute the correct position P on the face
 From that, obtain the correct texture coordinate (s,t)
(s0,t0)
ytop
(s1,t1)
(s3,t3)
ys
ybott
(s2,t2)
xleft xs xright
Caveat
 Linear interpolation does not work always!
 This is because…
Equal steps across a projected space do not corresponds to equal
steps across the 3D space
Visualizing the Problem
Notice that uniform steps on the image plane do
not correspond to uniform steps along the edge.
An Example
Proper Interpolation
Texture space
Eye space
Screen space
If we move in equal steps across Ls on the screen, how should we step
across texels along Lt in texture space?
Proper Interpolation
R(g) = lerp(A,B,g)
r(f)=lerp(a,b,f ), a = (a1, a2, a3, a4) or ( a1/a4, a2/a4, a3/a4)
r1(f) = lerp(a1/a4, b1/b4, f)
b
r(f)
A
R(g)
M
a
B
•R(g) = lerp(A,B,g)
•In homogenous coordinate [R(g),1]t
•= [lerp(A,B,g),1]t
•After perspective transformation M([lerp(A,B,g),1]t)
•= lerp( M(A,1)t , M(B,1)t , g )
•=[ lerp( a1, b1, g ) , lerp( a2, b2, g) , lerp(a3, b3, g) , lerp( a4, b4, g) ]
•r1(f ) = lerp(a1,b1,g)/lerp(a4,b4,g)
Proper Interpolation
r1(f) = lerp(a1/a4, b1/b4, f)
r1(f ) = lerp(a1,b1,g)/lerp(a4,b4,g)
g = f / lerp((b4/a4), 1, f)
R(g) = A(1-g) + Bg
= lerp(A1/a4, B1/b4, f) / lerp( 1/a4, 1/b4, f)
Proper Interpolation
b’
b
y
left
right
a’
a
a cooresponds to A which maps to texture (Sa, Ta)
b corresponds to B which maps to texture ( Sb, Tb)
left = lerp(a,b,f)
sleft(y) =lerp(SA/a4, SB/b4, f) / lerp( 1/a4, 1/b4, f)
Similar for tleft(y) and right pixel
Similar hyperbolic interpolation for intermediate pixels
Texture Maps and Visual
Realism

Three different visual effects:
1.
Glowing objects
–
–
–
Intensity is set equal to the texture value: I = texture(s,t)
Object appears to emit light or glow
Color can be added by considering the red, green and blue
components separately
2. Modulate reflection coefficients
–
Make texture appear to be painted on the surface
Change
coefficients at each point by: f
s,the
I – texture
t  Ireflection
a  a  I d  d  lambert   I sp  s  ( phong )
3. Bump mapping
–
Model the roughness of the surface
Bump Mapping
Bump Mapping
 Use texture map to perturb surface normal
 Use texture array to set a function which perturbs surface normal
 Apply illumination model using perturbed normal
Bump Mapping
• The ‘perturbed’ surface becomes:
Pu, v  Pu, v  texture u, v mu, v
• One approximation to new normal m´(u,v) is:
mu, v  mu, v  du, v
where d is: du, v   m  Pv texture u  m  Pu texture v
Bump Mapping
• The ‘perturbed’ surface becomes:
Pu, v  Pu, v  texture u, v mu, v
• To find the new normal m´(u,v)
– Find two vectors tangent to the bumpy surface, then m´(u,v) is their
cross product
– The two vectors follow from the partial derivatives of the P´(u,v)
equation wrt u,v
Wrapping Texture on Curved Surfaces
 Wrap a label around a cylinder
•
Wrap a label onto a sphere
References
 Hill 8.5.1 – 8.5.3, 8.5.5