31
10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

Embed Size (px)

Citation preview

Page 1: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.1si31_2001

SI31Advanced Computer

GraphicsAGR

SI31Advanced Computer

GraphicsAGR

Lecture 10Solid TexturesBump Mapping

Environment Mapping

Page 2: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.2si31_2001

Marble TextureMarble Texture

Page 3: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.3si31_2001

Solid TextureSolid Texture

A difficulty with 2D textures is the mapping from the object surface to the texture image– ie constructing fu(x,y,z) and fv(x,y,z)

This is avoided in 3D, or solidsolid, texturing– texture now occupies a volume– can imagine object being carved out of

the texture volumeU

V

W

texturespace X

Y

Z

object space

Mapping functions trivial: u = x; v = y; w = z

Page 4: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.4si31_2001

Defining the TextureDefining the Texture

The texture volume itself is usually defined procedurally– ie as a function that can be

evaluated, such as:

texture (u, v, w) = sin (u) sin (v) sin texture (u, v, w) = sin (u) sin (v) sin (w) (w)

– this is because of the vast amount of storage required if it were defined by data values

Page 5: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.5si31_2001

Example: Wood TextureExample: Wood Texture

Wood grain texture can be modelled by a set of concentric cylinders – cylinders coloured dark, gaps

between adjacent cylinders coloured light

radius r = sqrt(u*u + w*w)

if radius r = r1, r2, r3,

thentexture (u,v,w) = darkelsetexture (u,v,w) = light

looking down:cross section view

U

V

W

texturespace

Page 6: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.6si31_2001

Example: Wood TextureExample: Wood Texture

It is a bit more interesting to apply a sinusoidal perturbation– radius:= radius + 2 * sin( 20*) , with

0<<2 .. and a twist along the axis of the

cylinder– radius:= radius + 2 * sin( 20* + v/150

) This gives a realistic wood texture

effect

Page 7: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.7si31_2001

Wood TextureWood Texture

Page 8: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.8si31_2001

How to do Marble?How to do Marble?

First create noise function (in 1D):– noise [i] = random numbers on lattice

of points Next create turbulence:

– turbulence (x) = noise(x) + 0.5*noise(2x) + 0.25*noise(4x) + …

Marble created by:– basic pattern:

• marble (x) = marble_colour (sin (x) )

– with turbulence:• marble (x) = marble_colour (sin (x + turbulence

(x) ) )

Page 9: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.9si31_2001

Marble TextureMarble Texture

Page 10: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.10si31_2001

Using Turbulence for Flame Simulation

Using Turbulence for Flame Simulation

Flame in 2D region [-b,b] x [0,h] can be modelled as:

– flame(x,y) = (1-y/h) * flame_col(abs(x/b))

flame_col has max intensity at 0, min at 1

Adding turbulence factor to flame_col gives more realistic effect:

– flame(x,y) = (1-y/h) * flame_col(abs(x/b)+turb(x))

Page 11: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.11si31_2001

Animating the TurbulenceAnimating the Turbulence

The noise function, and hence the turbulence function, can be made time-dependent

Page 12: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.12si31_2001

Bump MappingBump Mapping

This is another texturing technique Aims to simulate a dimpled or

wrinkled surface– for example, surface of an orange

Like Gouraud and Phong shading, it is a tricktrick– surface stays the same– but the true normal is perturbed, or

jittered, to give the illusion of surface ‘bumps’

Page 13: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.13si31_2001

Bump MappingBump Mapping

Page 14: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.14si31_2001

How Does It Work?How Does It Work?

Looking at it in 1D:

original surface P(u)

bump map b(u)

add b(u) to P(u)in surface normal direction, N(u)

new surface normalN’(u) for reflectionmodel

Page 15: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.15si31_2001

How It Works - The Maths!How It Works - The Maths!

Any 3D surface can be described in terms of 2 parameters– eg cylinder of fixed radius r is defined by

parameters (s,t)

x=rcos(s); y=rsin(s); z=t Thus a point P on surface can be written

P(s,t) where s,t are the parameters The vectors:

Ps = dP(s,t)/ds and Pt = dP(s,t)/dt

are tangential to the surface at (s,t)

Page 16: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.16si31_2001

How it Works - The MathsHow it Works - The Maths

Thus the normal at (s,t) is:N = Ps x Pt

Now add a bump map to surface in direction of N:

P’(s,t) = P(s,t) + b(s,t)N To get the new normal we need to

calculate P’s and P’t

P’s = Ps + bsN + bNs

approx P’s = Ps + bsN - because b small

P’t similar– P’t = Pt + btN

Page 17: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.17si31_2001

How it Works - The MathsHow it Works - The Maths

Thus the perturbed surface normal is:N’ = P’s x P’t

orN’ = Ps x Pt + bt(Ps x N) + bs(N x Pt) + bsbt(N x N)

But since– Ps x Pt = N and N x N = 0, this simplifies to:

N’ = N + D

– where D = bt(Ps x N) + bs(N x Pt)

= bs(N x Pt) - bt(N x Ps )

= A - B

Page 18: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.18si31_2001

Worked Example for a Cylinder

Worked Example for a Cylinder

P has co-ordinates:

Thus:

and then

x (s,t) = r cos (s)y (s,t) = r sin (s)z (s,t) = t

Ps : xs (s,t) = -r sin (s)ys (s,t) = r cos (s)zs (s,t) = 0

Pt : xt (s,t) = 0yt (s,t) = 0zt (s,t) = 1

N = Ps x Pt : Nx = r cos (s)Ny = r sin (s)Nz = 0

Page 19: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.19si31_2001

Worked Example for a Cylinder

Worked Example for a Cylinder

Then: D = bt(Ps x N) + bs(N x Pt) becomes:

and perturbed normal N’ = N + D is:

D : bt *0 + bs*r sin (s) = bs*r sin (s)bt *0 - bs*r cos (s) = - bs*r cos (s)bt*(-r2) + bs*0 = - bt*(r2)

N’ : r cos (s) + bs*r sin (s)r sin (s) - bs*r cos (s)-bt*r2

Page 20: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.20si31_2001

Bump MappingA Bump Map

Bump MappingA Bump Map

Page 21: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.21si31_2001

Bump MappingResulting ImageBump Mapping

Resulting Image

Page 22: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.22si31_2001

Bump Mapping - Another Example

Bump Mapping - Another Example

Page 23: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.23si31_2001

Bump MappingAnother ExampleBump Mapping

Another Example

Page 24: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.24si31_2001

Bump MappingProcedurally Defined Bump

Map

Bump MappingProcedurally Defined Bump

Map

Page 25: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.25si31_2001

Environment MappingEnvironment Mapping

This is another famous piece of trickery in computer graphics

Look at a highly reflective surface– what do you see?– does the Phong reflection model predict

this? Phong reflection is a local illumination

model– does not convey inter-object reflection– global illumination methods such as ray

tracing and radiosity provide this .. but can we cheat?

Page 26: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.26si31_2001

Environment Mapping - Recipe

Environment Mapping - Recipe

Place a large cube around the scene with a camera at the centre

Project six camera views onto faces of cube - known as an environment mapenvironment map

camera

projection of sceneon face of cube -environment map

Page 27: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.27si31_2001

Environment Mapping - Rendering

Environment Mapping - Rendering

When rendering a shiny object, calculate the reflected viewing direction (called R earlier)

This points to a colour on the surrounding cube which we can use as a texture when rendering

eyepoint

environmentmap

Page 28: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.28si31_2001

Environment Mapping Example

Environment Mapping Example

The six views from the teapot

Environment Mapped Teapot

Page 29: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.29si31_2001

Environment Mapping - Limitations

Environment Mapping - Limitations

Obviously this gives far from perfect results - but it is much quicker than the true global illumination methods (ray tracing and radiosity)

It can be improved by multiple environment maps (why?) - one per key object

Also known as reflection mappingreflection mapping Can use sphere rather than cube

Page 30: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.30si31_2001

Jim BlinnJim Blinn

Both bump mapping and environment mapping concepts are due to Jim Blinn

Pioneer figure in computer graphics

www.research.microsoft.com/~blinn

www.siggraph.org/s98/conference/keynote/slides.html

Page 31: 10.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 10 Solid Textures Bump Mapping Environment Mapping

10.31si31_2001

AcknowledgementsAcknowledgements

Thanks again to Alan Watt for many of the images

Flame simulation movie from Josef Pelikan, Charles University Prague

Environment mapping examples from Mizutani and Reindel, Japan