Download presentation
Presentation is loading. Please wait.
1
Ray Tracing Geometry CSE 681
2
The Camera Model Based on a simpile pin-hole camera model
Simplest lens model Pure geometric optics – based on similar triangles Perfect image if hole infinitely small Inverted image pin-hole camera simplified pin-hole camera CSE 681
3
Basic Ray Tracing Algorithm
for every pixel { cast a ray from the eye for every object in the scene find intersections with the ray keep it if closest } compute color at the intersection point CSE 681
4
Construct a Ray 3D parametric line r(t) = eye + t (p-eye)
r(t): ray equation eye: eye (camera) position p: pixel position t: ray parameter r(t) p t=0 Question: How to calculate the pixel position P? CSE 681
5
What are given? Camera (eye) position
View direction or center of interest Camera orientation (which way is up?) specified by an “up” vector Field of view + aspect ration Distance to the image plane Pixel resolutions in x and y “up” vector eye ray CSE 681
6
Camera Setup v n w u We need to have a ‘view
“up” vector v n w View direction u We need to have a ‘view coordinate system, i.e., compute the u, v, w vectors u v w w image plane Eye + w goes through the image plane center Use info about camera to construct 3D camera coordinate system CSE 681
7
Camera Setup v n w u w: known u = w x “up” v = u x w
“up” vector v n w View direction u w: known u = w x “up” v = u x w “up” may not be perpendicular to w x: cross product CSE 681 CSE 681
8
Pixel Calculation Coordinate (in u,v,n space) of upper left corner of screen Eye + w v yres u w xres Using camera coordinate system vectors, form location of upper left corner of screen in world space Assume virtual screen is one unit away (D=1) in w direction Eye + w - (xres/2)*PixelWidth*u + (yres/2)*PixelHeight *v CSE 681
9
Pixel Calculation Coordinate (in u,v,n space) of upper left corner of screen Eye + w v yres u w xres How do we calculate PixelWidth and PixelHeight? Assume virtual screen is one unit away (D=1) in w direction Eye + w - (xres/2)*PixelWidth*u + (yres/2)*PixelHeight *v CSE 681 CSE 681
10
Camera Setup (yres/2) * pixelHeight Tan(q/2) = yres*pixelHeight/2D
Side view of camera Given theta (either half angle or full angle of view can be specified), D Compute extent of virtual frame buffer Then using pixel resolution, computer pixel height and width Tan(q/2) = yres*pixelHeight/2D pixelHeight = 2*Tan(qy/2) *D/yres D pixelWidth = 2*Tan(qx/2) *D/xres CSE 681
11
Screen Placement How do images differ if the resolution doesn’t change? Q: if same pixel resolution, what’s different about the images generated when using different distances for virtual frame buffer? A: nothing So use D = 1 to simplify computations CSE 681
12
Pixel Calculation Tan(q/2) = yres*pixelHeight/2D
pixelHeight = 2*Tan(qy/2) *D/yres pixelWidth = 2*Tan(qx/2) *D/xres Pixel AspectRatio = pixelWidth/pixelHeight Aspect ratio is width to height ratio Coordinate (in u,v,n space) of upper left corner of screen = ? CSE 681
13
Pixel Calculation Coordinate (in u,v,n space) of upper left corner of screen = ? v u w Tan(q/2) = yres*pixelHeight/2 pixelHeight = 2*Tan(qy/2) /yres pixelWidth = 2*Tan(qx/2) /xres Using camera coordinate system vectors, form location of upper left corner of screen in world space Assume virtual screen is one unit away (D=1) in w direction Eye + w - (xres/2)*PixelWidth*u + (yres/2)*PixelHeight *v CSE 681
14
Pixel Calculation Coordinate (in u,v,n space) of upper left pixel center = ? Then back off half a pixel width and height to compute pixel center Eye + w - (xres/2)*PixelWidth*u + (yres/2)*PixelHeight *v + (pixelWidth/2)*u - (pixelHeight/2)*v CSE 681
15
Interate through pixel Centers
scanlineStart = Eye + w - (xres/2)*PixelWidth*u + (yres/2)*PixelHeight *v + (pixelWidth/2)*u - (pixelHeight/2)*v Update by pixel width and pixel height to go to adjacent pixel on scanline and next scanline, respectively There will pixelCenter += pixelWidth * u scanlineStart -= pixelHeight * v CSE 681
16
Pixel loops ScenlineStart = [from previous slide] For each scanline {
pixelCenter = scanlineStart For each pixel across { form ray from camera through pixel …. pixelCenter += pixelWidth*u } scanlineStart -= pixelHeight*v Update by pixel width and pixel height to go to adjacent pixel on scanline and next scanline, respectively There will CSE 681
17
Process Objects For each pixel { Form ray from eye through pixel
distancemin = infinity For each object { If (distance=intersect(ray,object)) { If (distance< distancemin) { closestObject = object distancemin = distance } Color pixel according to intersection information Keep closest intersection Need intersection function for each object type processed Later, we’ll build ‘intersection structure’ CSE 681
18
After all objects are tested
If (distancemin > infinityThreshold) { pixelColor = background color else pixelColor = color of object at distancemin along ray d ray object eye CSE 681
19
Ray-Sphere Intersection - geometric
Knowns C, r Eye Ray t= |C-eye| k d+k = (C-eye) · Ray s t2= (k+d) 2 + s2 d r C r2 = k2+ s2 If s > r, then no intersection If s == r, then ray just grazes intersection eye t d = (k+d) - k CSE 681
20
Ray-Sphere Intersection - algebraic
x2 + y2 + z2 = r2 P(t) = eye + t*Ray Substitute definition of p into first equation: (eye.x+ t *ray.x) 2 + (eye.y+ t *ray.y)2 + (eye.z+ t *ray.z) 2 = r2 Analytic equation of sphere and parametric form for ray Use quadratic equation to solve for u If term inside radical is <0, no intersection If term == 0, ray just grazes sphere Expand squared terms and collect terms based on powers of u: A* t 2 + B* t + C = 0 CSE 681
21
Ray-Sphere Intersection (cont’d)
For a sphere with its center at c A sphere with center c = (xc,yc,zc) and radius R can be represented as: (x-xc)2 + (y-yc)2 + (z-zc)2 – R2 = 0 For a point p on the sphere, we can write the above in vector form: (p-c).(p-c) – R2 = 0 (note ‘.’ is a dot product) Solve p similarly CSE 681
22
Quadratic Equation When solving a quadratic equation at2 + bt + c = 0
Discriminant: And Solution: CSE 681
23
Ray-Sphere Intersection
b2 – 4ac <0 : No intersection b2 – 4ac >0 : Two solutions (enter and exit) b2 – 4ac = 0 : One solution (ray grazes the sphere) CSE 681
24
Determine Color Use z-component of normalized normal vector FOR LAB #1
Clamp to [ ] objectColor*Nz ray What’s the normal at a point on the sphere? Simple illumination example Just use z coordinate for normalized normal vector, clamped from below to 0.3, eye CSE 681
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.