cornell cs465 fall 2004 lecture 3© 2004 steve marschner 1 ray tracing cs 465 lecture 3
TRANSCRIPT
![Page 1: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/1.jpg)
© 2004 Steve Marschner • 1Cornell CS465 Fall 2004 • Lecture 3
Ray Tracing
CS 465 Lecture 3
![Page 2: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/2.jpg)
© 2004 Steve Marschner • 2Cornell CS465 Fall 2004 • Lecture 3
Ray tracing idea
![Page 3: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/3.jpg)
© 2004 Steve Marschner • 3Cornell CS465 Fall 2004 • Lecture 3
Ray tracing algorithm
for each pixel { compute viewing ray intersect ray with scene compute illumination at visible point put result into image }
![Page 4: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/4.jpg)
© 2004 Steve Marschner • 4Cornell CS465 Fall 2004 • Lecture 3
Pinhole camera
• Box with a tiny hole• Image is inverted
• Perfect image if hole infinitely small
• Pure geometric optics based on similar triangles
• No depth of field issue
![Page 5: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/5.jpg)
© 2004 Steve Marschner • 5Cornell CS465 Fall 2004 • Lecture 3
Camera Obscura
![Page 6: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/6.jpg)
© 2004 Steve Marschner • 6Cornell CS465 Fall 2004 • Lecture 3
Abelardo Morell
• Photographer who turns hotel room into a camera obscura (pinhole optics)
![Page 7: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/7.jpg)
© 2004 Steve Marschner • 7Cornell CS465 Fall 2004 • Lecture 3
Durer’s Ray casting machine
• Albrecht Durer, 16th century
![Page 8: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/8.jpg)
© 2004 Steve Marschner • 8Cornell CS465 Fall 2004 • Lecture 3
Durer’s Ray casting machine
• Albrecht Durer, 16th century
![Page 9: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/9.jpg)
© 2004 Steve Marschner • 9Cornell CS465 Fall 2004 • Lecture 3
Durer’s Ray casting machine
• Albrecht Durer, 16th century
![Page 10: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/10.jpg)
© 2004 Steve Marschner • 10Cornell CS465 Fall 2004 • Lecture 3
Plane projection in drawing[C
S 4
17
Spri
ng 2
00
2]
![Page 11: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/11.jpg)
© 2004 Steve Marschner • 11Cornell CS465 Fall 2004 • Lecture 3
Plane projection in photography
• This is another model for what we are doing– applies more directly in realistic rendering
[CS 4
17
Spri
ng 2
00
2]
![Page 12: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/12.jpg)
© 2004 Steve Marschner • 12Cornell CS465 Fall 2004 • Lecture 3
Simplified pinhole camera
• Eye-image pyramid (frustum)• Note that the distance/size of image are
arbitrary
![Page 13: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/13.jpg)
© 2004 Steve Marschner • 13Cornell CS465 Fall 2004 • Lecture 3
Generating eye rays
• Use window analogy directly
![Page 14: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/14.jpg)
© 2004 Steve Marschner • 14Cornell CS465 Fall 2004 • Lecture 3
Vector math review
• Vectors and points• Vector operations
– addition– scalar product
• More products– dot product– cross product
![Page 15: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/15.jpg)
© 2004 Steve Marschner • 15Cornell CS465 Fall 2004 • Lecture 3
Ray: a half line
• Standard representation: point p and direction d
– this is a parametric equation for the line– lets us directly generate the points on the line– if we restrict to t > 0 then we have a ray– note replacing d with ad doesn’t change ray (a >
0)
![Page 16: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/16.jpg)
© 2004 Steve Marschner • 16Cornell CS465 Fall 2004 • Lecture 3
Generating eye rays
• Just need to compute the view plane point q:
– we won’t worry about the details for now
![Page 17: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/17.jpg)
© 2004 Steve Marschner • 17Cornell CS465 Fall 2004 • Lecture 3
Sphere equation
• Sphere equation (implicit):
• Assume unit dimensions,centered at origin
RD
![Page 18: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/18.jpg)
© 2004 Steve Marschner • 18Cornell CS465 Fall 2004 • Lecture 3
Explicit vs. implicit?
• Sphere equation is implicit – Solution of an equation– Does not tell us how to generate a point on the
sphere– Tells us how to check that a point is on the
sphere
• Ray equation is explicit– Parametric– How to generate points– Harder to verify that a point is on the ray
![Page 19: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/19.jpg)
© 2004 Steve Marschner • 19Cornell CS465 Fall 2004 • Lecture 3
Ray-sphere intersection: algebraic• Condition 1: point is on ray
• Condition 2: point is on sphere– assume unit sphere
• Substitute:
– this is a quadratic equation in t
![Page 20: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/20.jpg)
© 2004 Steve Marschner • 20Cornell CS465 Fall 2004 • Lecture 3
Ray-sphere intersection: algebraic• Solution for t by quadratic formula:
– simpler form holds when d is a unit vectorbut we won’t assume this in practice (reason later)
– I’ll use the unit-vector form to make the geometric interpretation
![Page 21: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/21.jpg)
© 2004 Steve Marschner • 21Cornell CS465 Fall 2004 • Lecture 3
Ray-sphere intersection: algebraic
![Page 22: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/22.jpg)
© 2004 Steve Marschner • 22Cornell CS465 Fall 2004 • Lecture 3
Ray-sphere intersection: geometric
• What geometric information is important?– Inside/outside– Closest point– Direction
• Geometric considerations can help shortcut calculations– easy reject
R
r
O
D
![Page 23: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/23.jpg)
© 2004 Steve Marschner • 23Cornell CS465 Fall 2004 • Lecture 3
Ray-sphere intersection: geometric• Find if the ray’s origin is outside the sphere
– R2>r2
– If inside, it intersects – If on the sphere, it does not intersect (avoid degeneracy)
R
r
O
D
![Page 24: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/24.jpg)
© 2004 Steve Marschner • 24Cornell CS465 Fall 2004 • Lecture 3
Ray-sphere intersection: geometric• Find if the ray’s origin is outside the sphere• Find the closest point to the sphere center
– tP=RO.D
– If tP<0, no hit
R
r
O
DtPP
![Page 25: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/25.jpg)
© 2004 Steve Marschner • 25Cornell CS465 Fall 2004 • Lecture 3
Ray-sphere intersection: geometric• Find if the ray’s origin is outside the sphere• Find the closest point to the sphere center
– If tP<0, no hit
• Else find squared distance d2
– Pythagoras: d2=R2-tP2
– …
R
r
O
DP
tP
d
if d2> r2 no hit
![Page 26: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/26.jpg)
© 2004 Steve Marschner • 26Cornell CS465 Fall 2004 • Lecture 3
Ray-sphere intersection: geometric• Find if the ray’s origin is outside the
sphere• Find the closest point to the sphere
center
– If tP<0, no hit
• Else find squared distance d2
– if d2 > r2 no hit
• If outside t = tP-t’– t’2+d2=r2
• If inside t = tP+t’
R
rO
DP tP
d t
t’
![Page 27: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/27.jpg)
© 2004 Steve Marschner • 27Cornell CS465 Fall 2004 • Lecture 3
Ray-sphere intersection: geometric
![Page 28: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/28.jpg)
© 2004 Steve Marschner • 28Cornell CS465 Fall 2004 • Lecture 3
Geometric vs. algebraic
• Algebraic was more simple (and more generic)
• Geometric is more efficient– Timely tests– In particular for outside and pointing away
![Page 29: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/29.jpg)
© 2004 Steve Marschner • 29Cornell CS465 Fall 2004 • Lecture 3
Image so far
• With eye ray generation and sphere intersection
Surface s = new Sphere((0.0, 0.0, 0.0), 1.0);for 0 <= iy < ny for 0 <= ix < nx { ray = camera.getRay(ix, iy); if (s.intersect(ray, 0, +inf) < +inf) image.set(ix, iy, white); }
![Page 30: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/30.jpg)
© 2003 Steve Marschner • 30Cornell CS417 Spring 2003 • Lecture 33
Ray-plane intersection
• Condition 1: point is on ray
• Condition 2: point is on plane
• Condition 3: point is on the inside of all edges
• First solve 1&2 (ray–plane intersection)– substitute and solve for t:
![Page 31: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/31.jpg)
© 2003 Steve Marschner • 31Cornell CS417 Spring 2003 • Lecture 33
Ray-triangle intersection
• In plane, triangle is the intersection of 3 half spaces
![Page 32: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/32.jpg)
© 2003 Steve Marschner • 32Cornell CS417 Spring 2003 • Lecture 33
Inside-edge test
• Need outside vs. inside• Reduce to clockwise vs. counterclockwise
– vector of edge to vector to x
• Use cross product to decide
![Page 33: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/33.jpg)
© 2003 Steve Marschner • 33Cornell CS417 Spring 2003 • Lecture 33
Ray-triangle intersection
![Page 34: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/34.jpg)
© 2004 Steve Marschner • 34Cornell CS465 Fall 2004 • Lecture 3
Intersection against many shapes• The basic idea is:
– this is linear in the number of shapesbut there are sublinear methods (acceleration structures)
hit (ray, tMin, tMax) { tBest = +inf; hitSurface = null; for surface in surfaceList { t = surface.intersect(ray, tMin, tMax); if t < tBest { tBest = t; hitSurface = surface; } }return hitSurface, t;}
![Page 35: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/35.jpg)
© 2004 Steve Marschner • 35Cornell CS465 Fall 2004 • Lecture 3
Image so far
• With eye ray generation and scene intersection
Geometry g = new Sphere((0.0, 0.0, 0.0), 1.0);for 0 <= iy < ny for 0 <= ix < nx { ray = camera.getRay(ix, iy); c = scene.trace(ray, 0, +inf); image.set(ix, iy, c); }
…
trace(ray, tMin, tMax) { surface, t = hit(ray, tMin, tMax); if (surface != null) return surface.color(); else return black;}
![Page 36: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/36.jpg)
© 2004 Steve Marschner • 36Cornell CS465 Fall 2004 • Lecture 3
Shading
• Compute light reflected toward camera• Inputs:
– eye direction– light direction
(for each of many lights)– surface normal– surface parameters
(color, shininess, …)
• More on this in the next lecture
![Page 37: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/37.jpg)
© 2004 Steve Marschner • 37Cornell CS465 Fall 2004 • Lecture 3
Image so far
trace(Ray ray, tMin, tMax) { surface, t = hit(ray, tMin, tMax); if (surface != null) { point = ray.evaluate(t); normal = surface.getNormal(point); return surface.shade(ray, point, normal, light); } else return black;}
…
shade(ray, point, normal, light) { v_E = –normalize(ray.direction); v_L = normalize(light.pos - point); // compute shading}
![Page 38: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/38.jpg)
© 2004 Steve Marschner • 38Cornell CS465 Fall 2004 • Lecture 3
Shadows
• Surface is only illuminated if nothing blocks its view of the light.
• With ray tracing it’s easy to check– just intersect a ray with the scene!
![Page 39: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/39.jpg)
© 2004 Steve Marschner • 39Cornell CS465 Fall 2004 • Lecture 3
Image so far
shade(ray, point, normal, light) { shadRay = (point, light.pos - point); if (shadRay not blocked) { v_E = –normalize(ray.direction); v_L = normalize(light.pos - point); // compute shading } return black;}
![Page 40: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/40.jpg)
© 2004 Steve Marschner • 40Cornell CS465 Fall 2004 • Lecture 3
Multiple lights
• Important to fill in black shadows• Just loop over lights, add contributions• Ambient shading
– black shadows are not really right– one solution: dim light at camera– alternative: all surface receive a bit more light
• just add a constant “ambient” color to the shading…
![Page 41: Cornell CS465 Fall 2004 Lecture 3© 2004 Steve Marschner 1 Ray Tracing CS 465 Lecture 3](https://reader031.vdocuments.us/reader031/viewer/2022032600/56649db35503460f94aa3dc7/html5/thumbnails/41.jpg)
© 2004 Steve Marschner • 41Cornell CS465 Fall 2004 • Lecture 3
Image so far
shade(ray, point, normal, lights) { result = ambient; for light in lights { if (shadow ray not blocked) { result += shading contribution; } } return result;}