1 / 55

William H. Hsu Department of Computing and Information Sciences, KSU

CIS 736 Computer Graphics. Advanced CG Topics 3 of 8: Ray Tracing Topics. William H. Hsu Department of Computing and Information Sciences, KSU KSOL course pages: http://snipurl.com/1y5gc Course web site: http://www.kddresearch.org/Courses/CIS636

Download Presentation

William H. Hsu Department of Computing and Information Sciences, KSU

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CIS 736Computer Graphics Advanced CG Topics 3 of 8: Ray Tracing Topics William H. Hsu Department of Computing and Information Sciences, KSU KSOL course pages: http://snipurl.com/1y5gc Course web site: http://www.kddresearch.org/Courses/CIS636 Instructor home page: http://www.cis.ksu.edu/~bhsu Readings: All slides from SIGGRAPH 2000 tutorial on OpenGL, Shreiner, Angel, Shreiner: http://www.cs.unm.edu/~angel/SIGGRAPH/ Sections 2.6, 3.1, 20.3 – 20.13, Eberly 2e – see http://snurl.com/1ye72 NeHe tutorials: 6 – 10, http://nehe.gamedev.net Article: http://www.kuro5hin.org/story/2003/10/28/9853/1617 CIS 636/736: (Introduction to) Computer Graphics

  2. Lecture Outline • Four More Short OpenGL Tutorials from SIGGRAPH 2000 • Vicki Shreiner: Animation and Depth Buffering • Double buffering • Illumination: light positioning, light models, attenuation • Material properties • Animation basics in OpenGL • Vicki Shreiner: Imaging and Raster Primitives • Ed Angel: Texture Mapping • Dave Shreiner: Advanced Topics • Display lists and vertex arrays • Accumulation buffer • Fog • Stencil buffering • Fragment programs (to be concluded in Tutorial 3) CIS 636/736: (Introduction to) Computer Graphics

  3. CIS 636/736: (Introduction to) Computer Graphics

  4. Ray Tracing • What is it? • Why use it? • Basics • Advanced topics • References CIS 636/736: (Introduction to) Computer Graphics

  5. Ray-Tracing: Why Use It? • Simulate rays of light • Produces natural lighting effects CIS 636/736: (Introduction to) Computer Graphics

  6. Ray-Tracing: Why Use It? • Hard to simulate effects with rasterization techniques (OpenGL) • Rasterizers require many passes • Ray-tracing easier to implement CIS 636/736: (Introduction to) Computer Graphics

  7. Ray-Tracing: Who Uses It? • Entertainment (Movies, Commercials) • Games pre-production • Simulation CIS 636/736: (Introduction to) Computer Graphics

  8. Ray-Tracing: History • Decartes, 1637 A.D. - analysis of rainbow • Arthur Appel, 1968 - used for lighting 3D models • Turner Whitted, 1980 - “An Improved Illumination Model for Shaded Display” really kicked everyone off. • 1980-now - Lots of research CIS 636/736: (Introduction to) Computer Graphics

  9. The Basics • Generating Rays • Intersecting Rays with the Scene • Lighting • Shadowing • Reflections CIS 636/736: (Introduction to) Computer Graphics

  10. The Basic Idea • Simulate light rays from light source to eye Light Eye Incident ray Reflected ray Surface CIS 636/736: (Introduction to) Computer Graphics

  11. “Forward” Ray-Tracing • Trace rays from light • Lots of work for little return Light Image Plane Light Rays Eye Object CIS 636/736: (Introduction to) Computer Graphics

  12. “Backward” Ray-Tracing • Trace rays from eye instead • Do work where it matters Light Image Plane Eye Object This is what most people mean by “ray tracing”. CIS 636/736: (Introduction to) Computer Graphics

  13. Ray Parametric form • Ray expressed as function of a single parameter (“t”) <x, y, z> = <xo, yo, zo> + t * <xd, yd, zd> <x, y, z> = ro + trd t = 2.5 rd = <xd, yd, zd> t = 2.0 t = 1.0 ro = <xo, yo, zo> t = 0.0 CIS 636/736: (Introduction to) Computer Graphics

  14. Generating Rays • Trace a ray for each pixel in the image plane tan(fovx) * 2 Image Plane fovx Eye Eye (Looking down from the top) CIS 636/736: (Introduction to) Computer Graphics

  15. Generating Rays • Trace a ray for each pixel in the image plane (Looking from the side) m (tan(fovx)* 2) / m (tan(fovy)* 2) / n Eye n Image Plane CIS 636/736: (Introduction to) Computer Graphics

  16. Generating Rays • Trace a ray for each pixel in the image plane renderImage(){ for each pixel i, j in the image ray.setStart(0, 0, 0); // ro ray.setDir ((.5 + i) * tan(fovx)* 2 / m, (.5 + j) * tan(fovy)* 2 / n, 1.0); // rd ray.normalize(); image[i][j] = rayTrace(ray); } CIS 636/736: (Introduction to) Computer Graphics

  17. Triangle Intersection • Want to know: at what point (p) does ray intersect triangle? • Compute lighting, reflected rays, shadowing from that point p rd ro <?, ?, ?> (t = ???) CIS 636/736: (Introduction to) Computer Graphics

  18. Triangle Intersection • Step 1 : Intersect with plane ( Ax + By + Cz + D = 0 ) Plane normal n = <A, B, C> p rd ro p = -(n. ro + D) / (n. rd ) CIS 636/736: (Introduction to) Computer Graphics

  19. Triangle Intersection • Step 2 : Check against triangle edges n V1 V0V1 Ei = ViVi+1 x n (plane A, B, C) di = -A.N (plane D) p E0 V0 V2 Plug p into (p. Ei + di) for each edge if signs are all positive or negative, point is inside triangle! CIS 636/736: (Introduction to) Computer Graphics

  20. Triangle Normals • Could use plane normals (flat shading) • Better to interpolate from vertices nV1 V1 Find areas n nV0 c p a V0 b nV2 V2 n = anV0 + bnV1 + cnV2 area(V0V1V2) CIS 636/736: (Introduction to) Computer Graphics

  21. Finding Intersections • Check all triangles, keep the closest intersection hitObject(ray) { for each triangle in scene does ray intersect triangle? if(intersected and was closer) save that intersection if(intersected) return intersection point and normal } CIS 636/736: (Introduction to) Computer Graphics

  22. Lighting • We’ll use triangles for lights • Build complex shapes from triangles • Some lighting terms Light Eye N I R V Surface CIS 636/736: (Introduction to) Computer Graphics

  23. Lighting • Use modified Phong lighting • similar to OpenGL • simulates rough and shiny surfaces for each light In = IambientKambient + IdiffuseKdiffuse (L.N) + IspecularKspecular (R.V)n CIS 636/736: (Introduction to) Computer Graphics

  24. Ambient Light • IambientSimulates the indirect lighting in a scene. Eye Light CIS 636/736: (Introduction to) Computer Graphics

  25. Diffuse Light • Idiffusesimulates direct lighting on a rough surface • Viewer independent • Paper, rough wood, brick, etc... Eye Light CIS 636/736: (Introduction to) Computer Graphics

  26. Specular Light • Ispecularsimulates direct lighting on a smooth surface • Viewer dependent • Plastic, metal, polished wood, etc... Eye Light CIS 636/736: (Introduction to) Computer Graphics

  27. Shadow Test • Check against other objects to see if point is shadowed Eye Shadowing Object CIS 636/736: (Introduction to) Computer Graphics

  28. Reflection • Angle of incidence = angle of reflection ( qI = qR ) • I, R, N lie in the same plane R = I - 2 (N . I) N N qI qR I R CIS 636/736: (Introduction to) Computer Graphics

  29. Putting It All Together • Recursive ray evaluation rayTrace(ray) { hitObject(ray, p, n, triangle); color = object color; if(object is light) return(color); else return(lighting(p, n, color)); } CIS 636/736: (Introduction to) Computer Graphics

  30. Putting It All Together • Calculating surface color lighting(point) { color = ambient color; for each light if(hitObject(shadow ray)) color += lightcolor * dot(shadow ray, n); color += rayTrace(reflection) * pow(dot(reflection, ray), shininess); return(color); } CIS 636/736: (Introduction to) Computer Graphics

  31. Putting It All Together • The main program main() { triangles = readTriangles(); image = renderImage(triangles); writeImage(image); } CIS 636/736: (Introduction to) Computer Graphics

  32. This is A Good Start • Lighting, Shadows, Reflection are enough to make some compelling images • Want better lighting and objects • Need more speed CIS 636/736: (Introduction to) Computer Graphics

  33. More Quality, More Speed • Better Lighting + Forward Tracing • Texture Mapping • Modeling Techniques • Motion Blur, Depth of Field, Blurry Reflection/Refraction • Distributed Ray-Tracing • Improving Image Quality • Acceleration Techniques CIS 636/736: (Introduction to) Computer Graphics

  34. Refraction • Keep track of medium (air, glass, etc) • Need index of refraction (h ) • Need solid objects N qI Medium 1 (e.g. air) sin(qI) h1 sin(qT) h2 I = Medium 2 (e.g. water) T qT CIS 636/736: (Introduction to) Computer Graphics

  35. Refraction CIS 636/736: (Introduction to) Computer Graphics

  36. Improved Light Model • Cook & Torrance • Metals have different color at angle • Oblique reflections leak around corners • Based on a microfacet model CIS 636/736: (Introduction to) Computer Graphics

  37. Using “Forward” Ray Tracing • Backward tracing doesn’t handle indirect lighting too well • To get caustics, trace forward and store results in texture map. CIS 636/736: (Introduction to) Computer Graphics

  38. Using “Forward” Ray Tracing CIS 636/736: (Introduction to) Computer Graphics

  39. Texture Mapping • Use texture map to add surface detail • Think of it like texturing in OpenGL • Diffuse, Specular colors • Shininess value • Bump map • Transparency value CIS 636/736: (Introduction to) Computer Graphics

  40. Texture Mapping CIS 636/736: (Introduction to) Computer Graphics

  41. Parametric Surfaces • More expressive than triangle • Intersection is probably slower • u and v on surface can be used as texture s,t CIS 636/736: (Introduction to) Computer Graphics

  42. Constructive Solid Geometry • Union, Subtraction, Intersection of solid objects • Have to keep track of intersections CIS 636/736: (Introduction to) Computer Graphics

  43. Hierarchical Transformation • Scene made of parts • Each part made of smaller parts • Each smaller part has transformation linking it to larger part • Transformation can be changing over time - Animation CIS 636/736: (Introduction to) Computer Graphics

  44. Distributed Ray Tracing • Average multiple rays instead of just one ray • Use for both shadows, reflections, transmission (refraction) • Use for motion blur • Use for depth of field CIS 636/736: (Introduction to) Computer Graphics

  45. Distributed Ray Tracing CIS 636/736: (Introduction to) Computer Graphics

  46. Distributed Ray Tracing • One ray is not enough (jaggies) • Can use multiple rays per pixel - supersampling • Can use a few samples, continue if they’re very different - adaptive supersampling • Texture interpolation & filtering CIS 636/736: (Introduction to) Computer Graphics

  47. Acceleration • 1280x1024 image with 10 rays/pixel • 1000 objects (triangle, CSG, NURBS) • 3 levels recursion 39321600000 intersection tests 100000 tests/second -> 109 days! Must use an acceleration method! CIS 636/736: (Introduction to) Computer Graphics

  48. Bounding volumes • Use simple shape for quick test, keep a hierarchy CIS 636/736: (Introduction to) Computer Graphics

  49. Space Subdivision • Break your space into pieces • Search the structure linearly CIS 636/736: (Introduction to) Computer Graphics

  50. Parallel Processing • You can always throw more processors at it. CIS 636/736: (Introduction to) Computer Graphics

More Related