33
Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Embed Size (px)

Citation preview

Page 1: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Computer Graphics

Lecture 8

Transparency, Mirroring

Page 2: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

2

Today

• Environment Mapping

• Mirroring

Page 3: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Environment Maps• Simple yet powerful method to generate reflections

• Simulate reflections by using the reflection vector to index a spherical texture map at "infinity".

• Assumes that all reflected rays begin from the same point.

Page 4: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Environment Mapping Example

Terminator II

Page 5: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Cubic Mapping

• The most popular method• The map resides on the surfaces

of a cube around the object– align the faces of the cube with the

coordinate axes

• To generate the map:• Using methods such as ray tracing

– Or, take 6 photos of a real environment with a camera in the object’s position : much easier

Page 6: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Examples

Page 7: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Calculating the reflection vector

• Normal vector of the surface : N• Incident Ray : I• Reflection Ray: R • N,I,R all normalized

R = I -2 N ( N . I )

• The texture coordinate is based on the reflection vector

• Assuming the origin of the vector is always in the center of the cube environment map

Page 8: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Indexing Cubic Maps• Assume you have R and the cube’s

faces are aligned with the coordinate axes, and have texture coordinates in [0,1]x[0,1]– How do you decide which face to use?

• The reflection vector coordinate with the largest magnitude

• (0.3, 0.2, 0.8) face in +z direction

Page 9: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Indexing Cubic Maps– How do you decide which texture coordinates to use?

• Divide by the coordinate with the largest magnitude• Now ranging [-1,1]• Remapped to a value between 0 and 1.

(0.3,0.2,0.8) ((0.3/0.8 +1)*0.5, ((0.2/0.8 +1)*0.5) = (0.6875, 0.625)

Page 10: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

A Sphere Map

• A mapping between the reflection vector and a circular texture

• Prepare an image/texture in which the environment is mapped onto a sphere

Page 11: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Sphere Mapping• To generate the map:

– Take a photograph of a shiny sphere – Mapping a cubic environment map onto a sphere– For synthetic scenes, you can use ray tracing

Page 12: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Sphere Map

• Compute the reflection vector at the surface of the object

• Find the corresponding texture on the sphere map

• Use the texture to color the surface of the object

Page 13: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Indexing Sphere Maps• Given the reflection vector R (Rx,Ry,Rz)

(Rx,Ry,Rz)

• (u,v) on the spherical map

1,0 vu

222 1

2

1

2 v,

2

1

2

zyx

yx

RRRm

m

R

m

Ru

Page 14: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Indexing Sphere Maps

• The normal vector is the sum of the reflection vector and the eye vector

Normalization of the vector gives

If the normal is on a sphere of radius 1, its x,y coordinates are also location on the sphere map

Finally converting them to make their range [0,1]

m

R

m

R

m

R

RRRm

zyx

zyx

1,,

1 222

n

)1,,( zyx RRRN

222 1

2

1

2 v,

2

1

2

zyx

yx

RRRm

m

R

m

Ru

m

R

m

R

m

R

RRRm

zyx

zyx

1,,

1 222

n

Page 15: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Non-linear Mapping• Problems:

– Highly non-uniform sampling

– Highly non-linear mapping• Linear interpolation of texture coordinates picks up the wrong

texture pixels– Do per-pixel sampling or use high resolution polygons

Can only view from one direction

Correct Linear

Page 16: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Refractive Environment Mapping

• When simulating effects mapping the refracted environment onto translucent materials such as ice or glass, we must use Refractive Environment Mapping

Page 17: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Snell’s Law

• When light passes through a boundary between two materials of different density (air and water, for example), the light’s direction changes.

• The direction follows Snell’s Law

• We can do environment mapping using the refracted vector t

Page 18: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Snell’s Law• i: incoming vector

• t: refraction vector

))((1

,)(

where

)(

2

1

rwrwk

rw

n

nr

kwr

ni

nit

Page 19: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

19

Today

• Environment Mapping

• Mirroring

Page 20: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Planar Reflections (Flat Mirrors)

• Basic idea: Drawing a scene with mirrors!– We need to draw all the stuff around the mirror

– We need to draw the stuff in the mirror, reflected, without drawing over the things around the mirror

Page 21: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Reflecting Objects

• If the mirror passes through the origin, and is aligned with a coordinate axis, then just negate appropriate coordinate

• For example, if a reflection plane has a normal n=(0,1,0) and passes the origin, the reflected vertices can be obtained by scaling matrix S(1,-1,1)

MirrorWall

Page 22: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Reflecting Objects

• If the reflection plane passes a point p and has a normal vector n, you translate and rotate the coordinate system, negate, and move back to the original coordinate system

MirrorWall Mirror

p

)()()1,1,1()()( 1 pnnp TRSRT

Page 23: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Rendering Reflected First

(Using the depth buffer(Z-buffer))• First pass:

– Render the reflected scene without mirror, depth test on• Second pass:

– Disable the color buffer, and render the mirror polygon– Now the depth buffer of the mirror region is set to the mirror’s

surface• Third Pass:

– Enable the color buffer again– Render the original scene, without the mirror– Depth buffer stops from writing over things in mirror

Page 24: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Reflection Example

The color buffer after the final pass

Page 25: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Reflected Scene First (issues)

• Objects behind the mirror cause problems:

– The reflected area outside the mirror region is just overwritten by the objects in the front

– unless there is a wall, they will remain visible

• Doesn’t do:– Reflections of mirrors in

mirrors (recursive reflections)

– Multiple mirrors in one scene (that aren’t seen in each other)

Page 26: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

We need to use the “Stencil Buffer”• The stencil buffer acts like a

paint stencil - it lets some fragments through but not others

• It stores multi-bit values• You specify two things:

– The test that controls which fragments get through

– The operations to perform on the buffer when the test passes or fails

Page 27: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Stencil Tests• You give an operation, a

reference value, and a mask• Operations:

– Always let the fragment through

– Never let the fragment through

– Logical operations between the reference value and the value in the buffer: <, <=, =, !=, >, >=

Page 28: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Stencil Operations• Specify three different operations

– If the stencil test fails– If the stencil passes but the depth test fails– If the stencil passes and the depth test passes

• Operations are:– Keep the current stencil value– Zero the stencil– Replace the stencil with the reference value– Increment the stencil– Decrement the stencil– Invert the stencil (bitwise)

Page 29: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

mirror

Reflection Example

Page 30: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MScNormal first, reflected area next

• First pass:– Render the scene without the mirror

• For each mirror– Second pass:

• Clear the stencil, disable the write to the colour buffer, render the mirror, setting the stencil to 1 if the depth test passes

– Third pass:• Clear the depth buffer with the stencil

active, passing things inside the mirror only

• Reflect the world and draw using the stencil test. Only things seen in the mirror will be drawn

• Combine it with the scene made during the first pass

The stencil buffer after the second pass

Rendering the mirrored scene into the stencil active area

Page 31: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc Multiple mirrors

• Can manage multiple mirrors– Render normal view, then do other

passes for each mirror

• A recursive formulation exists for mirrors that see other mirrors

– After rendering the reflected area inside the mirror surface, render the mirrors inside the mirror surface, and so on

Page 32: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Another approach

• You can reflect the viewpoint about the mirror to see what is seen in the mirror

• Add a clipping plane at the plane of the mirror, remove everything that is rendered on the same side of the viewer

• Render the reflected scene and add it to the original scene

MirrorWall

Page 33: Computer Graphics Inf4/MSc Computer Graphics Lecture 8 Transparency, Mirroring

Computer Graphics Inf4/MSc

Readings• Foley 16.5-6• Real-time Rendering 2, Chapter 5.7, 6.10