![Page 1: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/1.jpg)
Ray Tracing Basics CSE 681 Autumn 11
Han-Wei Shen
![Page 2: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/2.jpg)
Forward Ray Tracing• We shoot a large number of photons
Problem?
![Page 3: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/3.jpg)
Backward TracingFor every pixel
Construct a ray from the eye For every object in the scene
Find intersection with the ray
Keep if closest
![Page 4: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/4.jpg)
The Viewing Model• Based on a simple Pinhole Camera model
Simplest lens model Inverted image Similar triangles
Perfect image if hole infinitely small
Pure geometric optics No blurry
pin-hole camera simplified pin-hole camera
![Page 5: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/5.jpg)
Simplified Pinhole Camera Eye = pinhole, Image plane = box face (re-arrange) Eye-image pyramid (frustum) Note that the distance/size of image are arbitrary
![Page 6: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/6.jpg)
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 }
![Page 7: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/7.jpg)
Construct a Ray3D parametric line
p(t) = eye + t (s-eye) r(t): ray equation eye: eye (camera) position s: pixel position t: ray parameter
eye
p r(t)
t=0
Question: How to calculate the pixel position P?
![Page 8: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/8.jpg)
Constructing a Ray• 3D parametric line
p(t) = e + t (s-e)
*(boldface means vector)
• So we need to know e and s
• What are given (specified by the user or scene file)? ✓ camera position ✓ camera direction or center of interest ✓ camera orientation or
view up vector✓ distance to image plane✓ field of view + aspect ratio ✓ pixel resolution
es s-e
![Page 9: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/9.jpg)
Given Camera Information
u
vn
e
Nxres
yres
• Camera• Eye• Look at• Orientation (up vector)
• Image plane• Distance to plane, N• Field of view in Y • Aspect ration (X/Y)
• Screen• Pixel resolution
![Page 10: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/10.jpg)
Construct Eye Coordinate System
• We can calculate the pixel positions much more easily if we construct an eye coordinate system (eye space) first
Known: eye position, center of interest, view-up vector
To find out: new origin and three basis vectors
Assumption: the direction of view is orthogonal to the view plane (the plane that objects will be projected onto)
eye
center of interest (COI)
![Page 11: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/11.jpg)
Eye Coordinate System Origin: eye position Three basis vectors: one is the normal vector (n) of
the viewing plane, the other two are the ones (u and v) that span the viewing plane
eye
Center of interest (COI)
n
uv
(u,v,n should be orthogonal to each other)
![Page 12: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/12.jpg)
Eye Coordinate System Origin: eye position Three basis vectors: one is the normal vector (n) of
the viewing plane, the other two are the ones (u and v) that span the viewing plane
eye
Center of interest (COI)
n
uv
Remember u,v,n should be all unit vectors
n is pointing away from the world because we use righthand coordinate system
N = eye – COIn = N / | N |
(u,v,n should be orthogonal to each other)
![Page 13: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/13.jpg)
Eye Coordinate System
What about u and v?
eyeCOI
n
uv
V_upWe can get u first -
u is a vector that is perpendicularto the plane spanned by N and view up vector (V_up)
![Page 14: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/14.jpg)
Eye Coordinate System
What about u and v?
eyeCOI
n
uv
V_upWe can get u first -
u is a vector that is perpendicularto the plane spanned by N and view up vector (V_up)
U = V_up x n
u = U / | U |
![Page 15: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/15.jpg)
Eye Coordinate System What about v?
Knowing n and u, getting v iseasy
eyeCOI
n
uv
V_up
![Page 16: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/16.jpg)
Eye Coordinate System What about v?
Knowing n and u, getting v iseasy
eyeCOI
n
uv
V_up
v = n x u
v is already normalized
![Page 17: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/17.jpg)
Eye Coordinate System Put it all together
Eye space origin: (Eye.x , Eye.y, Eye.z)
Basis vectors:
n = (eye – COI) / | eye – COI| u = (V_up x n) / | V_up x n | v = n x u
eyeCOI
n
uv
V_up
![Page 18: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/18.jpg)
Next Step?• Determine the size of the image plane
• This can be derived from
✓ distance from the camera to the center of the image plane
✓ Vertical field of view angle
✓ Aspect ratio of the image plane ★ Aspect ratio being Width/Height
![Page 19: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/19.jpg)
Image Plane Setup • Tan(θv /2) = H / 2d
• W = H * aspect_ratio
• C’s position = e - n * d
• L’s position = C - u * W/2 - v * H/2
• Assuming the image resolution is X (horizontal) by Y (vertical), then each pixel has a width of W/X and a height of H/Y
• Then for a pixel s at the image pixel (i,j) , it’s location is at
L + u * i * W/X + v * j * H/Y
θv
d
H
W
C
L
e
![Page 20: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/20.jpg)
Put it all together• We can represent the ray as a 3D parametric line
p(t) = e + t (s-e)
(now you know how to get s and e)
• Typically we offset the ray by half
of the pixel width and height, i.e, cast the ray from the pixel center
es s-e
incrementing(i,j)
(0,0)
![Page 21: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/21.jpg)
Put it all together• We can represent the ray as a 3D parametric line
p(t) = e + t (s-e)
(now you know how to get s and e)
• Typically we offset the ray by half
of the pixel width and height, i.e, cast the ray from the pixel center
es s-e
incrementing(i,j)
(0,0)
![Page 22: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/22.jpg)
Ray-Sphere Intersection
• Problem: Intersect a line with a sphere✓ A sphere with center c = (xc,yc,zc) and radius R can be
represented as:
(x-xc) + (y-yc) + (z-zc) - R = 0
✓ For a point p on the sphere, we can write the above in vector form:
(p-c).(p-c) - R = 0 (note ‘.’ is a dot product)
✓ We can plug the point on the ray p(t) = e + t d
(e+td-c).(e+td-c) - R = 0 and yield
(d.d) t + 2d.(e-c)t + (e-c).(e-c) - R = 0
2 2 2 2
2
2
2 2
![Page 23: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/23.jpg)
Ray-Sphere Intersection
• When solving a quadratic equation
at + bt + c = 0
We have
• Discriminant
• and Solution
2
![Page 24: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/24.jpg)
Ray-Sphere Intersectionb2 – 4ac < 0 ⇒ No intersectionb2 – 4ac > 0 ⇒ Two solutions (enter and exit)b2 – 4ac = 0 ⇒ One solution (ray grazes sphere)
Should we use the larger or smaller t value?
![Page 25: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/25.jpg)
Ray-Sphere Intersectionb2 – 4ac < 0 ⇒ No intersectionb2 – 4ac > 0 ⇒ Two solutions (enter and exit)b2 – 4ac = 0 ⇒ One solution (ray grazes sphere)
Should we use the larger or smaller t value?
![Page 26: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/26.jpg)
Calculate Normal
• Needed for computing lighting
Q = P(t) – C … and remember Q/||Q||
C t
Q
![Page 27: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/27.jpg)
Calculate Normal
• Needed for computing lighting
Q = P(t) – C … and remember Q/||Q||
C t
Qnormal
![Page 28: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/28.jpg)
Choose the closet sphere
• Minimum search problem
For each pixel {form ray from eye through the pixel centertmin = ∞For each object {
if (t = intersect(ray, object)) {if (t < tmin) {
closestObject = objecttmin = t
}}
}}
![Page 29: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/29.jpg)
Final Pixel Color
if (tmin == ∞) pixelColor = background colorelse pixelColor = color of object at d along ray
d
rayeye object
![Page 30: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/30.jpg)
CSE 681Ray-Object Intersections:
Axis-aligned Box
![Page 31: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/31.jpg)
Ray-Box Intersection Test
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 32: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/32.jpg)
Ray-Box Intersection Test
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 33: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/33.jpg)
Ray-Box Intersection Test
• Intersect ray with each plane– Box is the union of 6 planes
x = x1, x = x2
y = y1, y = y2
z = z1, z = z2
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 34: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/34.jpg)
Ray-Box Intersection Test
• Intersect ray with each plane– Box is the union of 6 planes
x = x1, x = x2
y = y1, y = y2
z = z1, z = z2
• Ray/axis-aligned plane is easy:
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 35: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/35.jpg)
Ray-Box Intersection Test
• Intersect ray with each plane– Box is the union of 6 planes
x = x1, x = x2
y = y1, y = y2
z = z1, z = z2
• Ray/axis-aligned plane is easy:
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 36: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/36.jpg)
Ray-Box Intersection Test
• Intersect ray with each plane– Box is the union of 6 planes
x = x1, x = x2
y = y1, y = y2
z = z1, z = z2
• Ray/axis-aligned plane is easy:
E.g., solve x component: ex + tDx = x1
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 37: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/37.jpg)
Ray-Box Intersection Test
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 38: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/38.jpg)
Ray-Box Intersection Test
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 39: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/39.jpg)
Ray-Box Intersection Test
1. Intersect the ray with each plane 2. Sort the intersections
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 40: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/40.jpg)
Ray-Box Intersection Test
1. Intersect the ray with each plane 2. Sort the intersections3. Choose intersection
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 41: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/41.jpg)
Ray-Box Intersection Test
1. Intersect the ray with each plane 2. Sort the intersections3. Choose intersection with the smallest t > 0
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 42: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/42.jpg)
Ray-Box Intersection Test
1. Intersect the ray with each plane 2. Sort the intersections3. Choose intersection with the smallest t > 0 that is within the range
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 43: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/43.jpg)
Ray-Box Intersection Test
1. Intersect the ray with each plane 2. Sort the intersections3. Choose intersection with the smallest t > 0 that is within the range of the box X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 44: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/44.jpg)
Ray-Box Intersection Test
1. Intersect the ray with each plane 2. Sort the intersections3. Choose intersection with the smallest t > 0 that is within the range of the box X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 45: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/45.jpg)
Ray-Box Intersection Test
1. Intersect the ray with each plane 2. Sort the intersections3. Choose intersection with the smallest t > 0 that is within the range of the box
• We can do more
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 46: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/46.jpg)
Ray-Box Intersection Test
1. Intersect the ray with each plane 2. Sort the intersections3. Choose intersection with the smallest t > 0 that is within the range of the box
• We can do more efficiently
X = x1 X = x2
Y = y2
Y = y1
Z = z1
Z = z2
![Page 47: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/47.jpg)
Only Consider 2D for Now• if a point (x,y) is in the box, then (x,y) in
[x1 , x2] x [y1, y2]
x = x1 x = x2
y = y1
y = y1
![Page 48: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/48.jpg)
The Principle• Assuming the ray hits the box boundary lines at
intervals [txmin,txmax], [tymin,tymax], the ray hits the box if and only if the intersection of the two intervals is not empty
28
txmin txmax
tymin tymax
tymin
tymax
txmin
txmax
![Page 49: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/49.jpg)
Pseudo Code
txmin =(x1 - ex )/Dxtxmax =(x2 - ex )/Dxtymin = (y1 - ey )/Dytymax = (y2 - ey )/Dyif (txmin > tymax) or (tymin > txmax)
return falseelse return true
29
//assume Dx >0
//assume Dy >0
![Page 50: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/50.jpg)
30
Pseudo Code
6
//if Dx < 0
//if Dy < 0
txmin =(x2 - ex )/Dxtxmax =(x1 - ex )/Dxtymin = (y2 - ey )/Dytymax = (y1 - ey )/Dyif (txmin > tymax) or (tymin > txmax) return falseelse return true
![Page 51: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/51.jpg)
Now Consider All Axis
• We will calculate t1 and t2 for each axis (x, y, and z)
• Update the intersection interval as we compute t1 and t2 for each axis
• remember: t1=(x1- px)/Dx
t2=(x2- px)/Dx
x = x1 x = x2
p
D
t1
t2
![Page 52: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/52.jpg)
Update [tnear, tfar] • Set tnear = -∞ and tfar = +∞• For each axis, compute t1 and t2
– make sure t1 < t2 – if t1 > tnear, tnear =t1 – if t2 < tfar, tfar = t2
• If tnear > tfar, box is missed
x = x1 x = x2
p
D
t1
t2
![Page 53: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/53.jpg)
AlgorithmSet tnear = - ∞, tfar = ∞R(t) = p + t * DFor each pair of planes P associated with X, Y, and Z do: (example uses X
planes)if direction Dx = 0 then
if (px < x1 or px > x2) return FALSE else
begin t1 = (xl - px) / Dx t2 = (xh - px) / Dx if t1 > t2 then swap (t1, t2)
if t1 > tnear then tnear = t1 if t2 < tfar then tfar = t2 if tnear > tfar return FALSE
if tfar < 0 return FALSE end
Return tnear
![Page 54: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/54.jpg)
Special Case• Ray is parallel to an axis
– If Dx = 0 or Dy = 0 or Dz = 0
• px < x1 or px > x2 then missy =y2
y=Y1
x=X1 x=X2
p
D
![Page 55: Ray Tracing Basicsweb.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf · Basic Ray Tracing Algorithm for every pixel { cast a ray from the eye for every object in](https://reader034.vdocument.in/reader034/viewer/2022042205/5ea7e2e8b1c89c15d420e43e/html5/thumbnails/55.jpg)
Special Case
• Box is behind the eye– If tfar < 0, box is behind
x = x1 x = x2
pD