cs 376 introduction to computer graphics 04 / 02 / 2007 instructor: michael eckmann

37
CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Upload: oswin-robbins

Post on 18-Jan-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

CS 376Introduction to Computer Graphics

04 / 02 / 2007

Instructor: Michael Eckmann

Page 2: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Michael Eckmann - Skidmore College - CS 376 - Spring 2007

Today’s Topics• Questions?

• Transparent/translucent surfaces

• Shading– flat shading– gouraud shading– phong shading

• Raytracing– how it works generally– computing the intersection of a ray and a sphere– computing the intersection of a ray and a plane

Page 3: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Transparent/Translucent surfaces• Transparent, opaque, translucent

– Transparent refers to the quality of a surface that we can “see through”. Opaque surfaces, we cannot see through.

– some transparent objects are translucent --- light is transmitted diffusely in all directions through the material

– translucent materials make the object viewed through them blurry

Page 4: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Transparent/Translucent surfaces• Terminology

• index of refraction of a material

– is defined to be the ratio of the speed of light in a vacuum

to the speed of light in the material.

• Snell's Law is a relationship between angle of incidence and

refraction and indices of refraction.

Page 5: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann
Page 6: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Transparent/Translucent surfaces• To determine the direction of the refracted ray, the angle ( theta

r )

off of -N, we need to know several things

– the direction of the incoming ray, the angle ( thetai ) of incidence

– the index of refraction (etai ) of the material the ray is coming from

– the index of refraction (etar ) of the material the ray is entering

Page 7: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Transparent/Translucent surfaces• Snell's law states that

sin ( thetar ) eta

i -------------- = -----sin ( theta

i ) eta

r

• which can be written as:

sin ( thetar ) = ((eta

i ) / (eta

r )) * sin ( theta

i )

Page 8: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Transparent/Translucent surfaces• Assuming all of our vectors are unit vectors, using Snell's law, according

to our textbook we can compute the unit refracted ray, T, to be

T = (((etai ) / (eta

r )) cos ( theta

r ) – cos ( theta

r )) N – ((eta

i ) / (eta

r ))L

• See page 578 in our text.

• This assumes L is in the direction shown in the diagram of figure 10-30.

• Verifying that the equation above is correct is left as an exercise to the

reader. It may appear on a hw assignment.

Page 9: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Transparent/Translucent surfaces• Table 10-1 on page 578 in our text shows average indices of refraction

for common materials, such as

• Vacuum (1.0), Ordinary Crown Glass (1.52), Heavy Crown Glass (1.61), Ordinary Flint Glass (1.61), Heavy Flint Glass (1.92), Rock Salt (1.55), Quartz (1.54), Water (1.33), Ice (1.31)

• Different frequencies of light travel at different speeds through the same material. Therefore, each frequency has its own index of refraction. The indices of refraction above are averages.

Page 10: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Surface Rendering• Now that we have an illumination model built, we can use it in different

ways to do surface rendering aka shading.

Page 11: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Shading Models• Constant shading (aka flat shading, aka faceted shading) is the simplest

shading model.

• It is accurate when a polygon face of an object is not approximating a

curved surface, all light sources are far and the viewer is far away from

the object. Far meaning sufficiently far enough away that N • L and R •

V are constant across the polygon.

• If we use constant shading but the light and viewer are not sufficiently far

enough away then we need to choose a value for each of the dot products

and apply it to the whole surface. This calculation is usually done on the

centroid of the polygon.

• Advantages: fast & simple

• Disadvantages: inaccurate shading if the assumptions are not met.

Page 12: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Shading Models• Interpolated shading model

– Assume we're shading a polygon. The shading is interpolated

linearly. That is, we calculate a value at two points and interpolate

between them to get the value at the points in between --- this saves

lots of computation (over computing at each position) and results in a

visual improvement over flat shading.

– This technique was created for triangles e.g. compute the color at the

three vertices and interpolate to get the edge colors and then

interpolate across the triangle's surface from edge to edge to get the

interior colors.

– Gouraud shading is an interpolation technique that is generalized to

arbitrary polygons. Phong shading is another interpolation technique

but doesn't interpolate intensities.

Page 13: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Shading Models• Gouraud shading (aka Gouraud Surface Rendering) is a form of

interpolated shading.

– How to calculate the intensity at the vertices?

• we have normal vectors to all polygons so, consider all the

polygons that meet at that vertex. Drawing on the board.

• Suppose for example, n polygons all meet at one vertex. We

want to approximate the normal of the actual surface at the

vertex. We have the normals to all n polygons that meet there.

So, to approximate the normal to the vertex we take the average

of all n polygon normals.

• What good is knowing the normal at the vertex? Why do we

want to know that?

Page 14: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Shading Models• Gouraud shading.

– What good is knowing the normal at the vertex? Why do we want to

know that?

• so we can calculate the intensity at that vertex from the

illumination equations.

– Calculate the intensity at each vertex using the normal we estimate

there.

– Then linearly interpolate the intensity along the edges between the

vertices.

– Then linearly interpolate the intensity along a scan line for the

intensities of interior points of the polygon.

– Example on the board.

Page 15: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Shading Models• Advantages: easy to implement if already doing a scan line algorithm.

• Disadvantages:

– Unrealistic if the polygon doesn't accurately represent the object.

This is typical with polygon meshes representing curved surfaces.

– Mach banding problem

• when there are discontinuities in intensities at polygon edges, we

can sometimes get this unfortunate effect.

• let's see an example.

– The shading of the polygon depends on its orientation. If it rotates,

we will see an unwanted effect due to the interpolation along a

scanline. Example on board.

– Specular reflection is also averaged over polygons and therefore

doesn't accurately show these reflections.

Page 16: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Shading Models• Phong shading (aka Phong Surface Rendering).

– Assume we are using a polygon mesh to estimate a surface.

– Compute the normals at the vertices like we did for Gouraud.

– Then instead of computing the intensity (color) at the vertices and

interpolating the intensities, we interpolate the normals.

– So, given normals at two points of a polygon, we interpolate over the

surface to estimate the normals between the two points.

– Example picture on the board.

– Then we have to apply the illumination equation at all the points in

between to compute intensity. We didn't have to do this for Gouraud.

– Problems arise since the interpolation is done in the 3d world space

and the pixel intensities are in the image space.

Page 17: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Shading Models• Recap

– Flat Shading

– Gouraud Shading --- interpolates intensities

– Phong Shading --- interpolates normal vectors (before calculating

illumination.)

– For these three methods, as speed/efficiency decreases, realism

increases (as you'd expect.)

– They all have the problem of silhouetting. Edges of polygons on the

visual edge of an object are apparent.

– Let's see examples of Gouraud and Phong shading.

Page 18: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Game plan• Since your fourth programming assignment is to implement a raytracer I

will cover ray tracing next

• Other topics for the remainder of the semester will be

– ray tracing

– texture mapping & bump mapping

– radiosity

– 3d model representations

– parametric curves

• mathematical representation of surfaces as opposed to polygon

mesh approximations.

Page 19: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray Casting• Recall Ray Casting which we discussed recently in our topic of Visible

Surface Determination.

• To determine which surface is visible at a pixel, draw a ray starting at the

CoP/PRP/eye through the center of the pixel and determine which

surface it hits first.

• This method could be used to determine the color of the pixel with any of

the illumination models discussed.

Page 20: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray Tracing• Ray Tracing is a generalization of Ray Casting.

• Ray tracing is an image generation method that determines the color of a

pixel in the image by

– tracing a ray from the eye (CoP/PRP) through the center of the pixel

and out into the world

– determining if the ray intersect any surfaces

– if it does, consider only the closest surface.

– then bounce the ray off this surface

• one ray each in the direction of the light sources

• one reflected ray (if surface is specularly reflective)

• one refracted ray (if surface is transparent/translucent)

Page 21: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray Tracing• then bounce the ray off this surface

• one ray each in the direction of the light sources

• one reflected ray (if surface is specularly reflective)

• one refracted ray (if surface is transparent/translucent)

• The rays that are in the direction of each of the light sources are called Shadow

Rays. If a shadow ray directly hits a light source without first hitting another

object then that light influences the color of the surface at that point.

• The reflected ray is bounced off the object at the angle it makes with the normal

vector at the intersection, but on the other side of it (like we saw in the

illumination model discussion of specular reflection.)

• The refracted ray is transmitted through the surface according to Snell's law

which we recently covered.

Page 22: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray Tracing• Further, the reflected ray and the refracted ray may also recursively

generate shadow, reflected and refracted rays.

– terminate a path (the bounces) when

• a ray doesn't intersect a reflective/refractive surface

• or when we hit the maximum levels of recursion that we specify

• This ray tracing is done for each pixel in the image!

Page 23: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray Tracing• The image on the next slide shows the original ray from the eye through

a pixel and out into the world. It intersects with an object (the pyramid) and only the reflected rays are shown. A more accurate picture to depict ray tracing would show the shadow rays, and the refracted rays (if any).

Page 24: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann
Page 25: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray Tracing• The original ray and it's reflected and refracted rays, and those reflected

and refracted rays' reflected and refracted rays and so on can form a tree.

• Example of this tree on the next slide.

• Each node in the tree also has shadow rays (but they are not edges in the

tree, since they cannot spawn further rays and they are treated

differently.)

• The shadow rays are used to calculate the color/shading of the point on

the surface (both the diffuse and specular components.)

– If a shadow ray does not reach a light source (that is, an object is in

the way) then the point we're determining the color of is in the

shadow of that light.

• The reflected ray and refracted ray are used for determining ambient and

transparent illumination of the point, respectively.

Page 26: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann
Page 27: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray Tracing• From the description thusfar of ray tracing, it should be obvious that it

often needs to

– determine if a ray intersects with anything

– and if so, where does it intersect

• Ray Tracing is time consuming / computationally expensive. We would

like to have efficient methods to

– determine if a ray intersects with anything

– compute intersection points

• Since spheres are among the simplest shapes to ray trace, we'll discuss

how to determine intersections between a ray and a sphere first.

• Then cover ray-polygon intersection calculations.

Page 28: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray Tracing• After we discuss intersection calculations, we'll cover (again) how to

compute the reflection ray and the refraction ray, given an incident ray.

• I'll provide a handout with psuedocode for a ray tracing algorithm.

Page 29: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray / Sphere Intersection• A sphere with radius r and center point P

c, the points P on the surface

satisfy the equation:

|P – Pc|2 – r2 = 0

If P = (x,y,z) and Pc = (x

c,y

c,z

c) then we can rewrite this as

(x – xc)2 + (y – y

c)2 + (z – z

c)2 – r2 = 0

Page 30: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray / Sphere Intersection• A ray is a “line” starting at some point and continuing out to infinity.

P(s) = P0 + R

ds

where P0 is the starting point of the ray, R

d is a unit directional

vector and s is the parameter which represents the distance from

P0

• If P = (x,y,z) and P0 = (x

0 , y

0 , z

0 ) and R

d= (x

d , y

d , z

d) this ray equation

can be rewritten as 3 equations like so:

x = x0 + x

ds

y = y0 + y

ds

z = z0 + z

ds

Page 31: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray / Sphere Intersection• Substitute the ray equation into the sphere equation to find the value for s

(the distance along the ray where the intersection occurs).

(x0 + x

ds – x

c)2 + (y

0 + y

ds – y

c)2 + (z

0 + z

ds – z

c)2 – r2 = 0

• This ends up being a quadratic equation of the form

C2s2 + C

1s + C

0 = 0

• where

C2 = x

d2 + y

d2 + z

d2 = 1

C1 = – 2 ( R

d•(Pc – P0))

C0 = |(Pc – P0)|2 – r2

To compute s, use the quadratic formula

Page 32: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray / Sphere Intersection• This ends up being a quadratic equation of the form

C2s2 + C

1s + C

0 = 0

Solve for s:

s = (-C1 +/- srqt(C

12 – 4C

2C

0) ) / 2C

2

but C2 = 1, so

s = (-C1 +/- srqt(C

12 – 4C

0) ) / 2

Page 33: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray / Sphere Intersection• A sphere and a ray can intersect/not intersect in several distinct cases

• If the discriminant is negative– the ray does not intersect the sphere

• If the discriminant is 0, then the ray is tangent to the sphere.

• If the discriminant is positive choose the smaller positive value for s of the 2

computed from the quadratic formula.

• Compute the intersection point based on s.

• For efficiency we can precompute some of the values, like r2 etc.

• There may also be problems with rounding error which will show up when s is

computed to be very small. We may not get the correct intersection.

• Examples on the board of possible cases of ray / sphere intersection.– 2 +, 2 -, 1 +/1 - (inside), 1+ (tangent), 0

Page 34: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray / Plane Intersection• Calculating a plane and a ray intersection is the first step in

calculating a polygon and a ray intersection.

• So, let's discuss this process first.

Page 35: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray Equation again• A ray is a “line” starting at some point and continuing out to infinity.

P(s) = P0 + R

ds

where P0 is the starting point of the ray, R

d is a unit directional

vector and s is the parameter which represents the distance from

P0

• If P = (x,y,z) and P0 = (x

0 , y

0 , z

0 ) and R

d= (x

d , y

d , z

d) this ray equation

can be rewritten as 3 equations like so:

x = x0 + x

ds

y = y0 + y

ds

z = z0 + z

ds

Page 36: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray / Plane Intersection• The plane equation, as we've seen before is

• Ax + By + Cz + D = 0

• Normal vector N = [A,B,C]

• We can get the equation of the plane to have [A,B,C] be a unit vector (magnitude 1).

• How could we do that?

• Then A2 + B2 + C2 = 1

Page 37: CS 376 Introduction to Computer Graphics 04 / 02 / 2007 Instructor: Michael Eckmann

Ray / Plane Intersection• Substitute the ray equation into the plane equation to find the value for s

(the distance along the ray where the intersection occurs).

A(x0 + x

ds) + B(y

0 + y

ds) + C(z

0 + z

ds) + D = 0

• Solve for s on the board.

• This will work out to be

s = - (N•P0 + D) / (N•R

d)

• Let's see some possible situations on the board.– (ray/plane parallel (N•R

d)=0),

– s > 0, when intersection is in front of P0

– s < 0, when intersection is behind P0