10. ray tracing - computer science departmentcheng/cs535/notes/cs535-ray.pdf · 1 cs dept, uk 10....

37
CS Dept, UK 1 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

Upload: dinhanh

Post on 10-Feb-2018

222 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 1

10. Ray Tracing

Generate a ray for each pixel and trace the

ray backwards to its origin

Page 2: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 2

Sample Result: back side and right side of the room are both mirrors. So you would see reflections of the room on both sides

Page 3: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 3

10.1 Basic Ray Tracing Algorithm

• Trace each ray to FIRST object hit by ray

• Structure of basic ray tracing program:

------------------------------------------------------------- Compute u, v, w basis vectors

for each pixel do

compute viewing ray

find first object hit by ray and its surface normal n

use material, light, and n to compute pixel color

-------------------------------------------------------------

Page 4: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 4

10.2 Computing Viewing Rays

Parametric representation of a ray:

where e is eye point and s is a point on the screen

),-t((t) eseP

(r,t,n)

(l,b,n)

Page 5: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 5

10.2 Computing Viewing Rays

Computation of s:

if resolution of the screen is and coordinates of the

3D window on the view plan (w = n) are (l, b, n) and (r, t, n)

defined in the uvw coordinate system, then

yx nn

where

and (i,j) are pixel indices satisfying

Page 6: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 6

10.2 Computing Viewing Rays

Why?

(i, j)

(l, b, n)

(r, t, n)

Page 7: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 7

10.2 Computing Viewing Rays

Page 8: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 8

10.3 Ray-Object Intersection: ray-sphere intersection

Page 9: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 9

10.3 Ray-Object Intersection: ray- triangle intersection

c

b

a

Page 10: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 10

10.3 Ray-Object Intersection: ray- triangle intersection

c

b

a

Page 11: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 11

10.3 Ray-Object Intersection: ray- polygon intersection

First, compute the intersection poin between

the ray and the plane containing the polygon

Use this t we can compute p . Then determine if p is inside the

polygon.

Page 12: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 12

10.3 Ray-Object Intersection: ray- polygon intersection

How do you tell if a point P

is inside a 2D polygon???

Assuming P is in the same

plane as the polygon

Question:

P

Page 13: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 13

10.4 A Ray-Tracing Program

Using ray-tracing technique to produce images

similar to the z-buffer or BSP-tree codes

Page 14: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 14

If ray hits an object …

The statement “if ray hits an object” can be implemented

as a (boolean) function that tests for hits in the interval

[t0, t1] as follows:

Page 15: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 15

If ray hits an object …

In actual implementation, we should return a reference to

the object that is hit. This can be done by passing a

record/structure such as

hit-record rec

Should define a super class “surface” with sub- classes

such as sphere, cone, cube, … to cover all the objects

that could be intersected by a ray

Anything that a ray can intersect would be under that

class

Page 16: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 16

Object-Oriented Design for a Ray Tracer

Develop a class hierarchy:

that not only include everything that can be hit by a ray, but also

efficiency structures, such as bounding volume hierarchies

Definition of the class surface:

class surface

virtual bool hit(ray e + td , real t0, real t1, hit-record rec)

virtual box bounding-box()

….

(t0, t1) is the interval on the ray where hits will be returned.

Page 17: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 17

Object-Oriented Design for a Ray Tracer

Page 18: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 18

10.5 How to Generate Shadows?

Use shadow rays (different from viewing rays) to

determine if a point is in shadow

Viewing ray

P Light Shadow ray

e

d

l

Page 19: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 19

implement shadow rays for Phong lighting:

Page 20: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 20

10.6 Specular Reflection

l

n

r

d

a

h

q q

h = (-d + l ) / || -d+l ||

Two approaches:

use or

Add specular reflection to ray tracing

a

Page 21: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 21

Add specular reflection to ray tracing

r

n

q q

r = d + 2 ( -d h n ) n

d

For the view direction d, compute its specular reflection r

Use r to recursively compute

contribution from specular

reflection (see next page)

To avoid an infinite loop in the

above recursive call, set up a

maximum recursive depth

Page 22: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 22

Add specular reflection to ray tracing:

Use r to recursively compute contribution

from specular reflection

color I = I + k raycolor ( p + sr , e , infinity) s

Where k is the specular RGB color

reflection coefficient. s

Page 23: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 23

Include specular reflection in "raycolor" (making it a real ray-tracing process):

Page 24: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 24

Illustration:

Page 25: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 25

10.7 Refraction

Add refraction to ray tracing

Light is refracted when it enters a dielectric

(transparent material that refracts light). The

refraction follows Snell’s law

q sinsin tnn

where and are the refractive indices of

the objects

n tn

Page 26: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 26

10.7 Refraction

q q

t

d

h ( = d )

-n

n

b q

q

n tn

Page 27: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 27

10.7 Refraction q

q

2222 cos1cos1

sinsin

t

t

nn

nn

q

cosn

ng

cossin

sing

cossin

t

n

n

nbt

Page 28: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 28

10.7 Refraction

b

d

q

n

g g = d + n (-d hn )

= d – n ( d hn )

b = g / sin q

qq sinsin bdg

Page 29: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 29

10.7 Refraction

Page 30: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 30

Illustration:

Page 31: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 31

Include refraction in "raycolor" (making it a 100% raytracing process):

Page 32: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 32

10.8 Instancing

• How should we ray trace an instance of an object

transformed by a matrix M?

• The matrix could be the

accumulation of several

transformations

• Ray tracing the

transformed object

can be done in the

space of the

untransformed object

Page 33: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 33

10.8 Instancing

• One needs to transform the ray to the space of the untransformed

object, do the tracing there, then transform the results to the space

where the transformed object is in

• If we define an instance class of type surface, we need to create a hit

function:

Page 34: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 34

10.9 Sub-Linear Ray-Object Intersection

• Three techniques to speed up ray-tracing:

- bounding volume hierarchies

- uniform spatial subdivision

- binary space partitioning

Page 35: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 35

10.9.1 Bounding Boxes

• Only need to know if the ray hits the box; do not need

to know where

• Bounding box: [xmin, xmax] × [ymin, ymax]

• Ray: e + td

• Compute the ray parameters:

where the ray hits the line

respectively. The ray hits the box iff the intervals

[txmin, txmax] and [tymin, tymax] overlap.

Page 36: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 36

10.9.2 Hierarchical Bounding Boxes

• Bounding boxes can be nested by creating boxes around

subsets of the nodel

• Use top-down ray-box testing and bottom-up parameter-

merging

Page 37: 10. Ray Tracing - Computer Science Departmentcheng/cs535/Notes/CS535-Ray.pdf · 1 CS Dept, UK 10. Ray Tracing Generate a ray for each pixel and trace the ray backwards to its origin

CS Dept, UK 37

End of 10.9