CS 445 / 645 Introduction to Computer Graphics

1 / 45

CS 445 - 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 ' - jela

An Image/Link below is provided (as is) to download presentation

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

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
Combining Everything
• Simple analytic model:
• diffuse reflection +
• specular reflection +
• emission +
• “ambient”

Surface

The Final Combined Equation
• Single light source:

N

Viewer

R

q

q

L

a

V

What influences these terms?
• Influencing factors
• Light position
• Sample point position
• Camera position
• Surface angle with respect to light vector
• Surface angle with respect to camera vector
Direct illumination questions
• 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
Direct Illumination
• 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

Direct Illumination
• 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

Direct Illumination
• Provides a way to measure radiance at a point in a specific direction
• What points?
• What directions?
• Towards the camera
• No secondary effects
Overview
• Direct (Local) Illumination
• Emission at light sources
• Scattering at surfaces
• Global illumination
• Refractions
• Inter-object reflections

Direct Illumination

Global 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
The ‘Rendering Equation’
• 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

x\'

g(x, x\')

x

1 or 1/d2depending on visibility

x\'

e(x, x\')

x

emissivity

I(x\', x\'\')

I(x\', x\'\')

I(x\', x\'\')

I(x\', x\'\')

x\'

x

r(x, x\', x\'\')

The ‘Rendering Equation’
• 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
• Must model object shadowing
The ‘Rendering Equation’
• What’s really hard about computing this?
• The integral…
• How can one compute I(x, x\') for all points x and x\'?
• Approximate!!!
Approximating the Rendering Equation
• 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

Approximating the Rendering Equation
• 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
Ray Casting
• A simple form of Ray Tracing

Rays

through

view plane

Simplest method

is ray casting

View plane

Eye position

Ray Casting
• 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
Ray Casting
• 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

Ray Casting
• 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;

}

Ray Casting
• 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;

}

Constructing Ray Through a Pixel

Up direction

View

Plane

back

towards

P0

V

right

P

Ray: P = P0 + tV

P1

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 ||

Ray Casting
• 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;

}

Ray-Scene Intersection
• Intersections with geometric primitives
• Sphere
• Triangle
• Groups of primitives (scene)
Ray-Sphere Intersection

Ray: P = P0 + tV

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

P’

P

V

r

C

P0

P’

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

Ray-Sphere Intersection
• Need normal vector at intersection for lighting calculations

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

N

r

V

P

C

P0

Ray-Scene Intersection
• Intersections with geometric primitives
• Sphere
• Triangle
• Groups of primitives (scene)
Ray-Triangle Intersection
• First, intersect ray with plane
• Then, check if point is inside triangle

P

V

P0

Ray-Plane Intersection

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

Ray-Triangle Intersectio
• 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

Other Ray-Primitive Intersections
• 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
Ray Casting – direct illumination
• 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
Mirror reflections
• Trace secondary ray in mirror direction
• Evaluate radiance along secondary ray and include it into illumination model

for mirror

reflection ray

IR

Transparency
• Trace secondary ray in direction of refraction
• Evaluate radiance along secondary ray and include it into illumination model

refraction ray

IT

Transparency
• 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

Refractive Transparency
• For thin surfaces, can ignore change in direction
• Assume light travels straight through surface

N

Qi

L

hi

hr

T

Qr

Qi

T

Refractive Tranparency

For solid objects, apply Snell’s law:

N

Qi

L

hi

hr

T

Qr

Summary
• 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!