Lecture 06: texture mapping

Transcription

Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Graphics 2011/2012, 4th quarter
Lecture 6
Texture mapping
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Introduction
We already learned a lot:
Vectors, basic geometric entities
Intersection of objects
Matrices, transformations
And some shading
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Motivation
For example, we can . . .
use vectors to represent
points
use 3 points to represent
triangles
use matrix multiplication
to transform them
use our (simple) shading
model to put color on
them
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Motivation
For example, we can . . .
use vectors to represent
points
use 3 points to represent
triangles
use matrix multiplication
to transform them
use our (simple) shading
model to put color on
them
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Motivation
For example, we can . . .
use vectors to represent
points
use 3 points to represent
triangles
use matrix multiplication
to transform them
use our (simple) shading
model to put color on
them
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Motivation
For example, we can . . .
Q: But how do we get the
colors in between two vertices?
use vectors to represent
points
use 3 points to represent
triangles
use matrix multiplication to
transform them
use our (simple) shading
model to put color on them
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Linear interpolation
Given two vectors ~a, ~b, linear
interpolation is defined as
p~(t) = (1 − t)~a + t~b
with a (scalar) parameter 0 ≤ t ≤ 1.
Note:
If a, b are scalars and t = 1/2
this is usually refered to as
average ;)
If ~a, ~b are color values (r, g, b),
this gives us a smooth transition
from ~a to ~b
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Linear interpolation to color triangles
With this we can linearly
interpolate color
1
between two vertices
2
between two edges
Q: How to do this efficiently?
What about phong shading?
→ We will learn this in a later
lecture
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Texture mapping
Adding lots of detail to our models to realistically depict skin,
grass, bark, stone, etc., would increase rendering times
dramatically, even for hardware-supported projective methods.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Texture mapping
Adding lots of detail to our models to realistically depict skin,
grass, bark, stone, etc., would increase rendering times
dramatically, even for hardware-supported projective methods.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Basic idea
Basic idea of texture mapping:
Instead of calculating color,
shade, light, etc. for each pixel
we just paste images to our
objects in order to create the
illusion of realism
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Different approaches
3D Object
Different approaches exist,
for example 2D vs. 3D:
2D mapping (aka image textures):
paste an image onto the object
3D mapping (aka solid or volume
textures): create a 3D texture
and ”carve” the object
2D texture ←→ 3D texture
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Linear interpolation
Texture mapping
Outline
1
2
3
4
Introduction
Linear interpolation
Texture mapping
3D texture mapping
3D stripe textures
Texture arrays
Solid noise
2D texture mapping
Basic idea
Spherical mapping
Triangles
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Texturing 3D objects
Let’s start with 3D mapping, which is a procedural approach, i.e.
we use a mathematical procedure to create a 3D texture, i.e.
f (x, y, z) = c with c ∈ R3
Then we use the coordinates of
each point in our 3D model to
calculate the appropriate color
value using that procedure, i.e.
f (xp , yp , zp ) = cp
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
3D stripe textures
A simple example:
stripes along the X-axis
stripe( xp , yp , zp )
{
if ( sin xp > 0 )
return color0;
else
return color1;
}
}
Note: any alternating function
will do it (sin is slow)
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
3D stripe textures
A simple example:
stripes along the X-axis
stripe( xp , yp , zp )
{
if ( sin xp > 0 )
return color0;
else
return color1;
}
}
Note: any alternating function
will do it (sin is slow)
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
3D stripe textures
Stripes along the Z-axis:
stripe( xp , yp , zp )
{
if ( sin zp > 0)
return color0;
else
return color1;
}
}
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
3D stripe textures
And what happens here?
stripe( xp , yp , zp )
{
if ( sin xp > 0 & sin zp > 0)
return color0;
else
return color1;
}
}
This looks almost like a
checkerboard, and should come in
handy when working on practical
assignment 1.2
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
3D stripe textures
Stripes with controllable
width:
stripe( point p, real width )
{
if ( sin(π xp /width) > 0 )
return color0;
else
return color1;
}
}
Try this at home :)
Note that we do not multiply
but divide by width!
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
3D stripe textures
Smooth variation between two
colors, instead of two distinct
ones:
stripe( point p, real width )
{
t = (1 + sin(π xp /width))/ 2
return (1 - t) c0 + t c1
}
Try this at home :)
Note: if that doesn’t look
familiar, check the slides on
linear interpolation again ;)
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Texture arrays
Again: this is often called solid or volumetric texturing.
It is called procedural because
we compute the color values
for a point p ∈ R3 with a
procedure.
Carving vs. array lookup
Alternatively, we can do an
array lookup in a 3D array
(using all three coordinates of
p for indexing),
or in a 2D array (using only
two coordinates of p).
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
2D texture arrays
We’ll call the two dimensions to be mapped u and v,
and assume an nx × ny image as texture.
Then every (u, v) needs to be mapped to a color in the image,
i.e. we need a mapping from pixels to texels.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
2D texture arrays
A standard way is to remove the integer portion of u and v,
so that (u, v) lies in the unit square.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
2D texture arrays
The pixel (i, j) in the nx × ny image for (u, v) is found by
i = bunx c and j = bvny c
bxc is the floor function that give the highest integer value ≤ x.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Nearest neighbor interpolation
This is a version of nearest-neighbor interpolation, because we take
the color of the nearest neighbor:
c(u, v) = ci,j with i = bunx c and j = bvny c
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Bilinear interpolation
For smoother effects we may use bilinear interpolation:
c(u, v) =
(1−u0 )(1−v 0 )cij +u0 (1−v 0 )c(i+1)j +(1−u0 )v 0 ci(j+1) +u0 v 0 c(i+1)(j+1)
where u0 = unx − bunx c
and v 0 = vny − bvny c
Notice: all weights are between 0
and 1 and add up to 1, i.e.
(1 − u0 )(1 − v 0 ) + u0 (1 − v 0 ) +
(1 − u0 )v 0 + u0 v 0 = 1
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Trilinear interpolation
Using 2D arrays with bilinear interpolation is easily extended to
using 3D arrays with trilinear interpolation:
c(u, v, w) = (1 − u0 )(1 − v 0 )(1 − w0 )cijk
+u0 (1 − v 0 )(1 − w0 )c(i+1)jk
+...
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Using random noise
So far: rather simple textures
(e.g. stripes).
We can create much more
complex (and realistic)
textures, e.g. resembling
wooden structures.
Or we can create some
randomness by adding noice,
e.g. to create the impression
of a marble like structure.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Perlin noise
Goal: create texture with random appearance, but not too random
(e.g., marble patterns, mottled textures as on birds’ eggs)
1st idea: random color at each point
Problem: too much noise, similar to
“white noise” on TV
2nd idea: smoothing of white noise
Problem: bad results and/or
computationally too expensive
3rd idea: create lattice with random
numbers & interpolate between them
Problem: lattice becomes too obvious
Perlin noise makes lattice less obvious by
using three “tricks” . . .
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Perlin noise
Perlin noise is based on the following ideas:
Use a 1D array of random unit vectors
and hashing to create a virtual 3D
array of random vectors;
Compute the inner product of
(u, v, w)-vectors with the random
vectors
Use Hermite interpolation to get rid of
visible artifacts
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Random unit vectors
Random unit vectors are obtained as follows:
vx = 2ξ − 1
vy = 2ξ 0 − 1
vz = 2ξ 00 − 1
where ξ, ξ 0 , and ξ 00 are random numbers in [0, 1].
Notice that −1 ≤ vi ≤ 1, so we get vectors in the unit cube.
If (vx2 + vy2 + vz2 ) < 1, we
normalize the vector and keep it;
otherwise not. Why?
Perlin reports that an array with
256 such random unit vectors
works well with his technique.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Hashing
We use this 1D array of random unitvectors to create a
(pseudo-)random 3D array of random unitvectors, using the
following hashing function:
Γijk = G(φ(i + φ(j + φ(k))))
where G is our array of n random vectors, and φ(i) = P [i mod n]
where P is an array of length n containing a permutation of the
integers 0 through n − 1.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Hashing
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Hashing
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Perlin noise
Perlin noise is based on the following ideas:
Use a 1D array of random unit
vectors
and hashing to create a virtual
3D array of random vectors;
Compute the inner product of
(u, v, w)-vectors with the
random vectors
Use Hermite interpolation to get
rid of visible artifacts
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Hermite interpolation
With our random vectors and hashing function in place, the noise
value n(x, y, z) for a point (x, y, z) is computed as:
bxc+1 byc+1 bzc+1
n(x, y, z) =
X X X
Ωijk (x − i, y − j, z − k)
i=bxc j=byc k=bzc
where
Ωijk (u, v, w) = ω(u)ω(v)ω(w)(Γijk · (u, v, w))
and
ω(t) =
2|t|3 − 3|t|2 + 1 if |t| < 1
0
otherwise
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Hermite interpolation
Characteristics of hermite interpolation
(or “why this creates better noise than linear”):
Linear interpolation:
linear weights, i.e.
ω∼t
Graphics 2011/2012, 4th quarter
Hermite interpolation:
cubic weights, i.e.
ω ∼ t3
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Summary
Perlin noise:
Virtual 3D array &
hashing
Scalar product with
random unit vector
Hermite interpolation
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
3D stripe textures
Texture arrays
Solid noise
Outline
1
2
3
4
Introduction
Linear interpolation
Texture mapping
3D texture mapping
3D stripe textures
Texture arrays
Solid noise
2D texture mapping
Basic idea
Spherical mapping
Triangles
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
2D texture mapping
Now let’s look at 2D mapping,
which maps an image onto an
object (cf. wrapping up a gift)
Instead of a procedural, we use
a lookup-table approach here,
i.e. for each point in our 3D
model, we look up the
appropriate color value in the
image.
How do we do this? Again,
let’s look at some simple
examples.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
Spherical texture mapping
How do we map a rectangular image onto a sphere?
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
Spherical texture mapping
Example: use world map and sphere to create a globe
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
Spherical texture mapping
We have seen the parametric equation of a sphere with radius r
and center c:
x = xc + r cos φ sin θ
y = yc + r sin φ sin θ
z = zc + r cos θ
Given a point (x, y, z) on the surface of the sphere, we can find θ
and φ by
θ
c
= arccos z−z
r
y−yc
φ = arctan x−x
c
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
Spherical texture mapping
For each point (x, y, z) we have
c
= arccos z−z
r
θ
y−yc
φ = arctan x−x
c
Since both u and v must range from [0, 1], and
(θ, φ) ∈ [0, π] × [−π, π], we must convert:
u =
v
=
Graphics 2011/2012, 4th quarter
φ
mod 2π
2π
π−θ
π
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
Texturing triangles
(0.8, 0.7)
Mapping an image onto a triangle is
done by specifying (u, v) coordinates
for the vertices.
So, our triangle vertices
~a = (xa , ya ),
~b = (xb , yb ),
~c = (xc , yc )
become
~a∗ = (ua , va ),
~b∗ = (ub , vb ),
~c∗ = (uc , vc )
Graphics 2011/2012, 4th quarter
(0.1, 0.9)
Lecture 06: texture mapping
(0.6, 0.1)
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
Texturing triangles
(0.8, 0.7)
Remember that barycentric
coordinates are very useful for
interpolating over a triangle –
and related textures ;)
p~(β, γ) = ~a + β(~b − ~a) + γ(~c − ~a)
(0.1, 0.9)
now becomes
u(β, γ) = ua + β(ub − ua ) + γ(uc − ua )
v(β, γ) = va + β(vb − va ) + γ(vc − va )
We get the texture coordinates by
linearly interpolating the vertex
coordinates over β, γ for
0 ≤ β + γ ≤ 1.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
(0.6, 0.1)
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
Texturing triangles
(0.8, 0.7)
Again, we can use bilinear
interpolation to avoid artifacts.
Note that the area and shape of the
triangle don’t have to match that of
the mapped triangle.
(0.1, 0.9)
Also, (u, v) coordinates for the
vertices may lie outside the range
[0, 1] × [0, 1].
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
(0.6, 0.1)
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
Texturing triangles
Be careful with perspective, because objects further away appear
smaller, so linear interpolation can lead to artifacts:
To avoid this, we have to consider the depth of vertices with
respect to the viewer.
Perspective projection is covered in a later lecture.
Fortunately, this is supported by modern hardware and APIs.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
MIP-mapping
If viewer is close:
Object gets larger →
Magnify texture
“Perfect” distance:
Not always “perfect” match
(misalignment, etc.)
If viewer is further away:
Object gets smaller → Minify
texture
Problem with minification:
efficiency (esp. when whole
texture is mapped onto one pixel!)
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
MIP-mapping
Solutions: MIP maps
Pre-calculated, optimized
collections of images based
on the original texture
Dynamically chosen based on
depth of object (relative to
viewer)
Supported by todays
hardware and APIs
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Basic idea
Spherical mapping
Triangles
Outline
1
2
3
4
Introduction
Linear interpolation
Texture mapping
3D texture mapping
3D stripe textures
Texture arrays
Solid noise
2D texture mapping
Basic idea
Spherical mapping
Triangles
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Bump mapping
One of the reasons why we apply
texture mapping:
Real surfaces are hardly flat but
often rough and bumpy. These
bumps cause (slightly) different
reflections of the light.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Bump mapping
Instead of mapping an image or noise
onto an object, we can also apply a
bump map, which is a 2D or 3D
array of vectors. These vectors are
added to the normals at the points
for which we do shading calculations.
The effect of bump mapping is an
apparent change of the geometry of
the object.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Bump mapping
Major problems with bump mapping: silhouettes and shadows
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Displacement mapping
To overcome this shortcoming, we
can use a displacement map. This is
also a 2D or 3D array of vectors, but
here the points to be shaded are
actually displaced.
Normally, the objects are refined
using the displacement map, giving
an increase in storage requirements.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Displacement mapping
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Environment mapping
Let’s look at image textures again:
If we can map an image of the environment to an object ...
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Environment mapping
... why not use this to make objects
appear to reflect their surroundings
specularly?
Idea: place a cube around the object,
and project the environment of the
object onto the planes of the cube in
a preprocessing stage; this is our
texture map.
During rendering, we compute a
reflection vector, and use that to
look-up texture values from the cubic
texture map.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Environment mapping
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Graphics 2011/2012, 4th quarter
Bump mapping
Displacement mapping
Environment mapping
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
And now?
In case you didn’t notice: it’s halftime :)
. . . so let’s sit back and have a
break before we continue.
Lifted, copyrighted by Pixar/Disney
(but you find various versions of it on YouTube)
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
What’s next?
The midterm exam!
Time and date:
Friday, 25.5.11
9:00 - 12:00 h
Zaal: EDUC-GAMMA
Note: no responsibility is taken for the correctness of this
information. For final information about time and room see
http://www.cs.uu.nl/education/vak.php?vak=INFOGR
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
The midterm exam
What do I have to do?
Come in time
Bring a pen (no pencil)
Bring your student id
And know the answers ;)
Note: You may not use books, notes, or any electronic equipment
(including cell phones!).
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
The midterm exam
The exam covers lectures 1-5 and tutorials 1-3.
If you ...
... followed the lectures
... read the textbook
... and actively did the
exercises
... you should be fine.
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping
Introduction
3D texture mapping
2D texture mapping
Other forms of texture mapping
Bump mapping
Displacement mapping
Environment mapping
Important dates
Today (Tue, 15.5.)
Only one tutorial (room 61)
Thu, 17.5.
No tutorial and lecture (holiday)
Tue, 22.5.
Lecture 7 and “Thursday tutorial”
Thu, 24.5.
No tutorial(?) and lecture
Fri, 25.5.
Midterm exam
Graphics 2011/2012, 4th quarter
Lecture 06: texture mapping