1 / 45

# CS 445 / 645 Introduction to Computer Graphics - PowerPoint PPT Presentation

CS 445 / 645 Introduction to Computer Graphics. Lecture 16 Lighting. Review. We have a model for determining the brightness (radiance) of a ray rooted at a point on a surface and oriented towards the cameraDirect illumination only Ambient term Diffuse term Specular term.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'CS 445 / 645 Introduction to Computer Graphics' - jela

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### CS 445 / 645Introduction to Computer Graphics

Lecture 16

Lighting

• We have a model for determining the brightness (radiance) of a ray rooted at a point on a surface and oriented towards the cameraDirect illumination only

• Ambient term

• Diffuse term

• Specular term

• Simple analytic model:

• diffuse reflection +

• specular reflection +

• emission +

• “ambient”

Surface

• Single light source:

N

Viewer

R

q

q

L

a

V

• Influencing factors

• Light position

• Sample point position

• Camera position

• Surface angle with respect to light vector

• Surface angle with respect to camera vector

• Camera moves from one position to another

• Angle between light and surface unchanged

• Angle between camera and surface changes

• A tracking camera follows object as it moves in scene

• Angle between light and surface changes

• Angle between camera and surface unchanged

• An object moves from on position to another

• Both angles have changed

• Provides a way to measure radiance at a point in a specific direction

• What points?

• Vertices

• What do you do for points between vertices?

This becomes a problem of “shading”and we’ll discuss it later

• Provides a way to measure radiance at a point in a specific direction

• What points?

• Other points to sample?

This is a form of ray casting.We’ll talk about it next

• Provides a way to measure radiance at a point in a specific direction

• What points?

• What directions?

• Towards the camera

• No secondary effects

• Direct (Local) Illumination

• Emission at light sources

• Scattering at surfaces

• Global illumination

• Refractions

• Inter-object reflections

Direct Illumination

• We’ve glossed over how light really works

• And we will continue to do so…

• One step better

• Global Illumination

• The notion that a point is illuminated by more than light from local lights; it is illuminated by all the emitters and reflectors in the global scene

• Jim Kajiya (Current head of Microsoft Research) developed this in 1986

• I(x, x’) = total intensity from point x’ to x

• g(x, x’) = 0 when x/x’ are occluded = 1/d2 otherwise (d = distance between x and x’)

• e(x, x’) = intensity emitted by x’ to x

• r(x, x’,x’’) = intensity of light reflected from x’’ to x through x’

• S = all points on all surfaces

g(x, x')

x

1 or 1/d2depending on visibility

e(x, x')

x

emissivity

I(x', x'')

I(x', x'')

I(x', x'')

I(x', x'')

x'

x

r(x, x', x'')

• The light that hits x from x’ is the direct illumination from x’ and all the light reflected by x’ from all x’’

• To implement:

• Must handle recursion effectively

• Must support diffuse and specular light

• What’s really hard about computing this?

• The integral…

• How can one compute I(x, x') for all points x and x'?

• Approximate!!!

• Don’t integrate over all points, just a subset

• Ray Tracing

• Considered a Monte Carlo approximation

• Monte Carlo == Random “sampling” of real answerConsider pulling colored balls from an urn to approximate the ratio of its contents

by Gilles Tran

• Group “all points” into sets and consider all sets

• Considered a finite-element approximation

• What are the models that approximate light transfer from one finite element to another?Consider electing the President from the sum of the states rather than the sum of all people

• A simple form of Ray Tracing

Rays

through

view plane

Simplest method

is ray casting

View plane

Eye position

• To create each sample …

• Construct ray from eye position through view plane

• Find first surface intersected by ray through pixel

• Compute color sample based on surface radiance

• For each sample …

• Construct ray from eye position through view plane

• Find first surface intersected by ray through pixel

• Compute color sample based on surface radiance

Rays

through

view plane

Samples on

view plane

Eye position

• Simple implementation:

Image RayCast(Camera camera, Scene scene, int width, int height)

{

Image image = new Image(width, height);

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) {

Ray ray = ConstructRayThroughPixel(camera, i, j);

Intersection hit = FindIntersection(ray, scene);

image[i][j] = GetColor(hit);

}

}

return image;

}

• Simple implementation:

Image RayCast(Camera camera, Scene scene, int width, int height)

{

Image image = new Image(width, height);

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) {

Ray ray = ConstructRayThroughPixel(camera, i, j);

Intersection hit = FindIntersection(ray, scene);

image[i][j] = GetColor(hit);

}

}

return image;

}

Up direction

View

Plane

back

towards

P0

V

right

P

Ray: P = P0 + tV

2*d*tan(Q)

P1 = P0 + d*towards – d*tan(Q)*right

P2 = P0 + d*towards + d*tan(Q)*right

P2

Constructing Ray Through a Pixel

• 2D Example

Q = frustum half-angle

d = distance to view plane

towards

P0

Q

right = towards x up

d

V

right

P

Ray: P = P0 + tV

P = P1 + (i/width + 0.5) * (P2 - P1)

= P1 + (i/width + 0.5) * 2*d*tan (Q)*right

V = (P - P0) / ||P - P0 ||

• Simple implementation:

Image RayCast(Camera camera, Scene scene, int width, int height)

{

Image image = new Image(width, height);

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) {

Ray ray = ConstructRayThroughPixel(camera, i, j);

Intersection hit = FindIntersection(ray, scene);

image[i][j] = GetColor(hit);

}

}

return image;

}

• Intersections with geometric primitives

• Sphere

• Triangle

• Groups of primitives (scene)

Ray: P = P0 + tV

Sphere: |P - C|2 - r 2 = 0

P’

P

V

r

C

P0

P

V

r

C

P0

Ray-Sphere Intersection

Ray: P = P0 + tV

Sphere: |P - C|2 - r 2 = 0

Substituting for P, we get:

|P0 + tV - C|2 - r 2 = 0

at2 + bt + c = 0

where:

a = |V|2 = 1

b = 2 V • (P0 - C)

c = |P0 - C|2 - r 2

If ray direction

is normalized!

P = P0 + tV

• Need normal vector at intersection for lighting calculations

N = (P - C) / ||P - C||

N

r

V

P

C

P0

• Intersections with geometric primitives

• Sphere

• Triangle

• Groups of primitives (scene)

• First, intersect ray with plane

• Then, check if point is inside triangle

P

V

P0

Ray: P = P0 + tV

Plane: P • N + d = 0

Substituting for P, we get:

(P0 + tV) • N + d = 0

Solution:

t = -(P0 • N + d) / (V • N)

P

N

P = P0 + tV

V

P0

• Check if point is inside triangle parametrically

T3

Compute a, b:

P = a (T2-T1) + b (T3-T1)

Check if point inside triangle.

0 a  1 and 0 b  1

a + b  1

P

b

T1

a

T2

V

P0

• Cone, cylinder, ellipsoid:

• Similar to sphere

• Box

• Intersect 3 front-facing planes, return closest

• Convex polygon

• Same as triangle (check point-in-polygon algebraically)

• Concave polygon

• Same plane intersection

• More complex point-in-polygon test

• Trace primary rays from camera

• Direct illumination from unblocked lights only

• Shadow term tells if light sources are blocked

• Cast ray towards each light source Li

• Si = 0 if ray is blocked, Si = 1 otherwise

• 0 < Si < 1  soft shadows (hack)

Recursive Ray Tracing – second-order effects

• Also trace secondary rays from hit surfaces

• Global illumination from mirror reflection and transparency

• Trace secondary ray in mirror direction

• Evaluate radiance along secondary ray and include it into illumination model

for mirror

reflection ray

IR

• Trace secondary ray in direction of refraction

• Evaluate radiance along secondary ray and include it into illumination model

refraction ray

IT

• Transparency coefficient is fraction transmitted

• KT = 1 for translucent object, KT = 0 for opaque

• 0 < KT < 1 for object that is semi-translucent

Transparency

Coefficient

KT

• For thin surfaces, can ignore change in direction

• Assume light travels straight through surface

N

Qi

L

hi

hr

T

Qr

Qi

T

For solid objects, apply Snell’s law:

N

Qi

L

hi

hr

T

Qr

• Ray casting (direct Illumination)

• Usually use simple analytic approximations for light source emission and surface reflectance

• Recursive ray tracing (global illumination)

• Incorporate shadows, mirror reflections, and pure refractions

All of this is an approximation

so that it is practical to compute

More on global illumination later!