Page 1 Ray Tracing Today Basic algorithms Overview of pbrt Ray-surface intersection for single surface Next lecture Acceleration techniques for ray tracing large numbers of geometric primitives Classic Ray Tracing Greeks: Do light rays proceed from the eye to the light, or from the light to the eye? Gauss: Rays through lenses Three ideas about light 1. Light rays travel in straight lines 2. Light rays do not interfere with each other if they cross 3. Light rays travel from the light sources to the eye (but the physics is invariant under path reversal - reciprocity).
Page 2 Ray Tracing in Computer Graphics Appel 1968 - Ray casting 1. Generate an image by sending one ray per pixel 2. Check for shadows by sending a ray to the light Ray Tracing in Computer Graphics Whitted 1979 Recursive ray tracing (reflection and refraction)
Page 3 Ray Tracing Video Spheres-over-plane.pbrt (g/m 10)
Page 4 Spheres-over-plane.pbrt (mirror 0) Spheres-over-plane.pbrt (mirror 1)
Page 5 Spheres-over-plane.pbrt (mirror 2) Spheres-over-plane.pbrt (mirror 5)
Page 6 Spheres-over-plane.pbrt (mirror 10) Spheres-over-plane.pbrt (glass 0)
Page 7 Spheres-over-plane.pbrt (glass 1) Spheres-over-plane.pbrt (glass 2)
Page 8 Spheres-over-plane.pbrt (glass 5) Spheres-over-plane.pbrt (glass 10)
Page 9 Spheres-over-plane.pbrt (glass 10)
Page 10 PBRT Architecture PBRT Architecture
Page 11 Ray-Surface Intersection Ray-Plane Intersection Ray: P = O+t D 0 t < O t D P N Plane: ( P P ) N= 0 ax + by + cz + d = 0 P Solve for intersection Substitute ray equation into plane equation ( P P ) N= ( O+ td P ) N= 0 ( O P ) N t = D N
Page 12 Ray-Polyhedra Ray-Slab Note: Procedural geometry t 1 t 2 Ray-Box Ray-Convex Polyhedra Ray-Triangle Intersection 1 s 2 P P 3 s1 s 3 P 1 s = area( PP P ) 1 2 3 s = area( PP P ) 2 3 1 s = area( PP P ) 3 1 2 P 2 Barycentric coordinates P = sp + s P + s P 1 1 2 2 3 3 Inside triangle criteria 0 s1 1 0 s2 1 0 s3 1 s + s + s = 1 1 2 3
Page 13 2D Homogeneous Coordinates x bc 1 2 cb 1 2 y P= = L L = ca ac 1 2 1 2 1 2 z ab 1 2 ba 1 2 a y1z2 z1y2 c L= = P P = z x x z 1 2 1 2 1 2 c x1y2 y1x 2 L P= ax + by + cz 2D Homogeneous Coordinates P P P = x y z 1 1 1 x y z 1 2 3 2 2 2 x y z 3 3 3 area( PPP ) x y z 1 1 1 x y z 1 2 3 2 2 2 x y z 3 3 3
Page 14 Ray-Triangle Intersection 2 P= s P + s P + s P 1 1 2 2 3 3 s1 = s 3 [ P1 P2 P3] s2 [ P] s1 P2 P3 s = P P P 2 3 1 s 3 P 1 P2 [ ] Ray-Triangle Intersection 3 s 2 3 2 3 1 2 3 P1 P2 P3 s s P P P P P = = P = P P P P P P P P = = P = P P P 1 3 3 1 2 3 1 P1 P2 P3 P P P P P = = P = P P P 1 2 1 2 3 1 2 P1 P2 P3 s1 P2 P3 s = P P P 2 3 1 s 3 P 1 P2 [ ]
Page 15 Ray-Polygon Intersection 1. Find intersection with plane of support 2. Test whether point is inside 3D polygon a. Project onto xy plane b. Test whether point is inside 2D polygon Point in Polygon inside(vert v[], int n, float x, float y) { int cross=0; float x0, y0, x1, y1; } x0 = v[n-1].x - x; y0 = v[n-1].y - y; while( n-- ) { x1 = v->x - x; y1 = v->y - y; if( y0 > 0 ) { if( y1 <= 0 ) if( x1*y0 > y1*x0 ) cross++; } else { if( y1 > 0 ) if( x0*y1 > y0*x1 ) cross++; } x0 = x1; y0 = y1; v++; } return cross & 1;
Page 16 Ray-Sphere Intersection O P D C Ray: P = O+ td P C R = 0 Sphere: ( ) 2 2 + = 0 ( ) 2 2 O td C R t = ± 2 b b 4ac 2a 2 at bt c 2 a = D + + = 0 b = 2( O C) D 2 2 c = ( O C) R Geometric Methods Methods N Find normal and tangents Find surface parameters e.g. Sphere Normal N = P C P, uv, S T Parameters x = sinθ cosφ y = sinθ sinφ z = cosθ φ = θ = cos 1 tan (, ) 1 x y z
Page 17 Ray-Implicit Surface Intersection f( x, y, z ) = 0 f * () t = 0 x = x0 + x1t y = y0 + y1t z = z + z t 0 1 1. Substitute ray equation 2. Find positive, real roots Univariate root finding Newton s method Regula-falsi Interval methods Heuristics Ray-Algebraic Surface Intersection p (,, ) 0 n x y z = p * n() t = 0 x = x0 + x1t y = y0 + y1t z = z + z t 0 1 Degree n Linear: Plane Quadric: Spheres, Quartic: Tori Polynomial root finding Quadratic, cubic, quartic Bezier/Bernoulli basis Descartes rule of signs Sturm sequences
Page 18 History Polygons Appel 68 Quadrics, CSG Goldstein & Nagel 71 Tori Roth 82 Bicubic patches Whitted 80, Kajiya 82 Superquadrics Edwards & Barr 83 Algebraic surfaces Hanrahan 82 Swept surfaces Kajiya 83, van Wijk 84 Fractals Kajiya 83 Height fields Coquillart & Gangnet 84, Musgrave 88 Deformations Barr 86 Subdivision surfs. Kobbelt, Daubert, Siedel, 98 P. Hanrahan, A survey of ray-surface intersection algorithms