Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ray Tracing Geometry CSE 681.

Similar presentations


Presentation on theme: "Ray Tracing Geometry CSE 681."— Presentation transcript:

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 Assume virtual screen is one unit away (D=1) in w direction CSE 681

12 Pixel Calculation Tan(q/2) = yres*pixelHeight/2
pixelHeight = 2*Tan(qy/2) /yres pixelWidth = 2*Tan(qx/2) /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 = ? Tan(q/2) = yres*pixelHeight/2 pixelHeight = 2*Tan(qy/2) /yres pixelWidth = 2*Tan(qx/2) /xres v u w Using camera coordinate system vectors, form location of upper left corner of screen in world space 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


Download ppt "Ray Tracing Geometry CSE 681."

Similar presentations


Ads by Google