Download presentation
Presentation is loading. Please wait.
Published byErick O’Brien’ Modified over 8 years ago
1
CS 445 / 645 Introduction to Computer Graphics Lecture 16 Lighting Lighting
2
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 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
3
Combining Everything Simple analytic model: diffuse reflection +diffuse reflection + specular reflection +specular reflection + emission +emission + “ambient”“ambient” Simple analytic model: diffuse reflection +diffuse reflection + specular reflection +specular reflection + emission +emission + “ambient”“ambient” Surface
4
The Final Combined Equation Single light source: N L R V Viewer
5
What influences these terms? Influencing factors Light positionLight position Sample point positionSample point position Camera positionCamera position Surface angle with respect to light vectorSurface angle with respect to light vector Surface angle with respect to camera vectorSurface angle with respect to camera vector Influencing factors Light positionLight position Sample point positionSample point position Camera positionCamera position Surface angle with respect to light vectorSurface angle with respect to light vector Surface angle with respect to camera vectorSurface angle with respect to camera vector
6
Direct illumination questions Camera moves from one position to anotherCamera 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 sceneA 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 anotherAn object moves from on position to another –Both angles have changed Camera moves from one position to anotherCamera 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 sceneA 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 anotherAn object moves from on position to another –Both angles have changed
7
Provides a way to measure radiance at a point in a specific direction What points?What points? –Vertices What do you do for points between vertices? Provides a way to measure radiance at a point in a specific direction What points?What points? –Vertices What do you do for points between vertices? Direct Illumination This becomes a problem of “shading” and we’ll discuss it later
8
Provides a way to measure radiance at a point in a specific direction What points?What points? –Other points to sample? Provides a way to measure radiance at a point in a specific direction What points?What points? –Other points to sample? Direct Illumination This is a form of ray casting. We’ll talk about it next
9
Direct Illumination Provides a way to measure radiance at a point in a specific direction What points?What points? What directions?What directions? –Towards the camera –No secondary effects Provides a way to measure radiance at a point in a specific direction What points?What points? What directions?What directions? –Towards the camera –No secondary effects
10
Overview Direct (Local) Illumination Emission at light sourcesEmission at light sources Scattering at surfacesScattering at surfaces Global illumination ShadowsShadows RefractionsRefractions Inter-object reflectionsInter-object reflections Direct (Local) Illumination Emission at light sourcesEmission at light sources Scattering at surfacesScattering at surfaces Global illumination ShadowsShadows RefractionsRefractions Inter-object reflectionsInter-object reflections Direct Illumination
11
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 sceneThe 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 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 sceneThe 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
12
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/d 2 otherwise (d = distance between x and x’) (x, x’) = intensity emitted by x’ to x (x, x’,x’’) = intensity of light reflected from x’’ to x through x’ S = all points on all surfaces 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/d 2 otherwise (d = distance between x and x’) (x, x’) = intensity emitted by x’ to x (x, x’,x’’) = intensity of light reflected from x’’ to x through x’ S = all points on all surfaces
13
x'x' xx g(x, x') 1 or 1/d 2 depending on visibility
14
x'x' xx (x, x') emissivityemissivity
15
x'x' xx (x', x'') (x, x', x'')
16
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 effectivelyMust handle recursion effectively Must support diffuse and specular lightMust support diffuse and specular light Must model object shadowingMust model object shadowing 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 effectivelyMust handle recursion effectively Must support diffuse and specular lightMust support diffuse and specular light Must model object shadowingMust model object shadowing
17
The ‘Rendering Equation’ What’s really hard about computing this? The integral… How can one compute (x, x') for all points x and x'?How can one compute (x, x') for all points x and x'? Approximate!!!Approximate!!! What’s really hard about computing this? The integral… How can one compute (x, x') for all points x and x'?How can one compute (x, x') for all points x and x'? Approximate!!!Approximate!!!
18
Approximating the Rendering Equation Don’t integrate over all points, just a subset Ray TracingRay Tracing –Considered a Monte Carlo approximation Monte Carlo == Random “sampling” of real answer Consider pulling colored balls from an urn to approximate the ratio of its contents Don’t integrate over all points, just a subset Ray TracingRay Tracing –Considered a Monte Carlo approximation Monte Carlo == Random “sampling” of real answer Consider pulling colored balls from an urn to approximate the ratio of its contents by Gilles Tran
19
Approximating the Rendering Equation Group “all points” into sets and consider all sets RadiosityRadiosity –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 Group “all points” into sets and consider all sets RadiosityRadiosity –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
20
Ray Casting A simple form of Ray Tracing View plane Eye position Simplest method is ray casting Simplest method is ray casting Rays through view plane
21
Ray Casting To create each sample … Construct ray from eye position through view planeConstruct ray from eye position through view plane Find first surface intersected by ray through pixelFind first surface intersected by ray through pixel Compute color sample based on surface radianceCompute color sample based on surface radiance To create each sample … Construct ray from eye position through view planeConstruct ray from eye position through view plane Find first surface intersected by ray through pixelFind first surface intersected by ray through pixel Compute color sample based on surface radianceCompute color sample based on surface radiance
22
Ray Casting For each sample … Construct ray from eye position through view planeConstruct ray from eye position through view plane Find first surface intersected by ray through pixelFind first surface intersected by ray through pixel Compute color sample based on surface radianceCompute color sample based on surface radiance For each sample … Construct ray from eye position through view planeConstruct ray from eye position through view plane Find first surface intersected by ray through pixelFind first surface intersected by ray through pixel Compute color sample based on surface radianceCompute color sample based on surface radiance Samples on view plane Eye position Rays through view plane
23
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; } 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; }
24
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; } 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; }
25
Constructing Ray Through a Pixel right back Up direction P0P0 towards View Plane P V Ray: P = P 0 + tV
26
Constructing Ray Through a Pixel 2D Example d towards P0P0 right right = towards x up = frustum half-angle d = distance to view plane P1 = P 0 + d*towards – d*tan( )*right P2 = P 0 + d*towards + d*tan( )*right P1 P2 2*d*tan( P P = P1 + (i/width + 0.5) * (P2 - P1) = P1 + (i/width + 0.5) * 2*d*tan ( )*right V = (P - P 0 ) / ||P - P 0 || V Ray: P = P 0 + tV
27
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; } 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; }
28
Ray-Scene Intersection Intersections with geometric primitives SphereSphere TriangleTriangle Groups of primitives (scene)Groups of primitives (scene) Intersections with geometric primitives SphereSphere TriangleTriangle Groups of primitives (scene)Groups of primitives (scene)
29
Ray-Sphere Intersection Ray: P = P 0 + tV Sphere: |P - C| 2 - r 2 = 0 P0P0 V C P r P’
30
Ray-Sphere Intersection Ray: P = P 0 + tV Sphere: |P - C| 2 - r 2 = 0 Substituting for P, we get: |P 0 + tV - C| 2 - r 2 = 0 Solve quadratic equation: at 2 + bt + c = 0 where: a = |V| 2 = 1 b = 2 V (P 0 - C) c = |P 0 - C| 2 - r 2 P = P 0 + tV P0P0 V C P r P’ If ray direction is normalized!
31
Ray-Sphere Intersection P0P0 V C P r N = (P - C) / ||P - C|| N Need normal vector at intersection for lighting calculations
32
Ray-Scene Intersection Intersections with geometric primitives SphereSphere »Triangle Groups of primitives (scene)Groups of primitives (scene) Intersections with geometric primitives SphereSphere »Triangle Groups of primitives (scene)Groups of primitives (scene)
33
Ray-Triangle Intersection First, intersect ray with plane Then, check if point is inside triangle First, intersect ray with plane Then, check if point is inside triangle P P0P0 V
34
Ray-Plane Intersection Ray: P = P 0 + tV Plane: P N + d = 0 Substituting for P, we get: (P 0 + tV) N + d = 0 Solution: t = -(P 0 N + d) / (V N) N P P0P0 VP = P 0 + tV
35
Ray-Triangle Intersectio Check if point is inside triangle parametrically P P0P0 Compute P = (T 2 -T 1 ) + (T 3 -T 1 ) Check if point inside triangle. 0 1 and 0 1 V T1T1 T2T2 T3T3
36
Other Ray-Primitive Intersections Cone, cylinder, ellipsoid: Similar to sphereSimilar to sphereBox Intersect 3 front-facing planes, return closestIntersect 3 front-facing planes, return closest Convex polygon Same as triangle (check point-in-polygon algebraically)Same as triangle (check point-in-polygon algebraically) Concave polygon Same plane intersectionSame plane intersection More complex point-in-polygon testMore complex point-in-polygon test Cone, cylinder, ellipsoid: Similar to sphereSimilar to sphereBox Intersect 3 front-facing planes, return closestIntersect 3 front-facing planes, return closest Convex polygon Same as triangle (check point-in-polygon algebraically)Same as triangle (check point-in-polygon algebraically) Concave polygon Same plane intersectionSame plane intersection More complex point-in-polygon testMore complex point-in-polygon test
37
Ray Casting – direct illumination Trace primary rays from camera Direct illumination from unblocked lights onlyDirect illumination from unblocked lights only Trace primary rays from camera Direct illumination from unblocked lights onlyDirect illumination from unblocked lights only
38
Shadows Shadow term tells if light sources are blocked Cast ray towards each light source L iCast ray towards each light source L i S i = 0 if ray is blocked, S i = 1 otherwiseS i = 0 if ray is blocked, S i = 1 otherwise 0 < S i < 1 soft shadows (hack)0 < S i < 1 soft shadows (hack) Shadow term tells if light sources are blocked Cast ray towards each light source L iCast ray towards each light source L i S i = 0 if ray is blocked, S i = 1 otherwiseS i = 0 if ray is blocked, S i = 1 otherwise 0 < S i < 1 soft shadows (hack)0 < S i < 1 soft shadows (hack)
39
Recursive Ray Tracing – second-order effects Also trace secondary rays from hit surfaces Global illumination from mirror reflection and transparencyGlobal illumination from mirror reflection and transparency Also trace secondary rays from hit surfaces Global illumination from mirror reflection and transparencyGlobal illumination from mirror reflection and transparency
40
Mirror reflections Trace secondary ray in mirror direction Evaluate radiance along secondary ray and include it into illumination modelEvaluate radiance along secondary ray and include it into illumination model Trace secondary ray in mirror direction Evaluate radiance along secondary ray and include it into illumination modelEvaluate radiance along secondary ray and include it into illumination model Radiance for mirror reflection ray IRIR
41
Transparency Trace secondary ray in direction of refraction Evaluate radiance along secondary ray and include it into illumination modelEvaluate radiance along secondary ray and include it into illumination model Trace secondary ray in direction of refraction Evaluate radiance along secondary ray and include it into illumination modelEvaluate radiance along secondary ray and include it into illumination model Radiance for refraction ray ITIT
42
Transparency Transparency coefficient is fraction transmitted K T = 1 for translucent object, K T = 0 for opaqueK T = 1 for translucent object, K T = 0 for opaque 0 < K T < 1 for object that is semi-translucent0 < K T < 1 for object that is semi-translucent Transparency coefficient is fraction transmitted K T = 1 for translucent object, K T = 0 for opaqueK T = 1 for translucent object, K T = 0 for opaque 0 < K T < 1 for object that is semi-translucent0 < K T < 1 for object that is semi-translucent Transparency Coefficient KTKT
43
Refractive Transparency For thin surfaces, can ignore change in direction Assume light travels straight through surfaceAssume light travels straight through surface For thin surfaces, can ignore change in direction Assume light travels straight through surfaceAssume light travels straight through surface N L ii T rr rr ii ii T
44
Refractive Tranparency N L ii T rr rr ii For solid objects, apply Snell’s law:
45
Summary Ray casting (direct Illumination) Usually use simple analytic approximations for light source emission and surface reflectanceUsually use simple analytic approximations for light source emission and surface reflectance Recursive ray tracing (global illumination) Incorporate shadows, mirror reflections, and pure refractionsIncorporate shadows, mirror reflections, and pure refractions Ray casting (direct Illumination) Usually use simple analytic approximations for light source emission and surface reflectanceUsually use simple analytic approximations for light source emission and surface reflectance Recursive ray tracing (global illumination) Incorporate shadows, mirror reflections, and pure refractionsIncorporate shadows, mirror reflections, and pure refractions More on global illumination later! All of this is an approximation so that it is practical to compute All of this is an approximation so that it is practical to compute
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.