CS 445 / 645 Introduction to Computer Graphics Lecture 16 Lighting Lighting.

download CS 445 / 645 Introduction to Computer Graphics Lecture 16 Lighting Lighting.

If you can't read please download the document

description

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

Transcript of CS 445 / 645 Introduction to Computer Graphics Lecture 16 Lighting Lighting.

CS 445 / 645 Introduction to Computer Graphics Lecture 16 Lighting 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 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 +diffuse reflection + specular reflection +specular reflection + emission +emission + ambientambient Simple analytic model: diffuse reflection +diffuse reflection + specular reflection +specular reflection + emission +emission + ambientambient Surface The Final Combined Equation Single light source: N L R V Viewer 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 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 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 well discuss it later 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. Well talk about it next 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 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 Global Illumination Weve 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 Weve 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 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 x'x' xx g(x, x') 1 or 1/d 2 depending on visibility x'x' xx (x, x') emissivityemissivity x'x' xx (x', x'') (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 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 The Rendering Equation Whats 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!!! Whats 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!!! Approximating the Rendering Equation Dont 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 Dont 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 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 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 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 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 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; } 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; } Constructing Ray Through a Pixel right back Up direction P0P0 towards View Plane P V Ray: P = P 0 + tV 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 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; } 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) Ray-Sphere Intersection Ray: P = P 0 + tV Sphere: |P - C| 2 - r 2 = 0 P0P0 V C P r P 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! Ray-Sphere Intersection P0P0 V C P r N = (P - C) / ||P - C|| N Need normal vector at intersection for lighting calculations 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) 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 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 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 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 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 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) 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 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 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 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 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 Refractive Tranparency N L ii T rr rr ii For solid objects, apply Snells law: 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