Document Sample

Ray Tracing • In a single framework incorporates: – Hidden Surface Removal – Shadow Computation – Reflection of Light – Refraction of Light – Global Specular Interaction I(P) = Ilocal(P) + krgI(Pr) + ktg(Pt) 1 Recursive Ray Tracing I(P) = Ilocal(P) + krgI(Pr) + ktg(Pt) Local term Reflected Transmitted • Treats the same surface differently depending on which term is being evaluated • In the direct Specular Term Ilocal spread is calculated empirically (see Phong) • In the global raytraced terms, spreading of light due to surface imperfections is totally ignored as this would spawn a large number of reflected and refracted rays 2 Ray Tracing • We are only interested in light rays that reach the viewplane from the light source • If we begin at the light source only a small proportion of the rays we trace will reach the viewer Tracing from light source • More efficient to start at viewer and trace in reverse – traditional ray tracing • Some implementations start at the light source and trace the actually light path – backwards raytracing Traditional ray-tracing 3 Ray Casting • For each pixel in the viewport, we cast a ray from the eye (called the eye ray) into the scene, through the pixel and determine the first object hit by the ray ray casting. • We then shade this using an extended form of the Phong Model. Ray Tracing 5 Ray Tracing • The eye ray will typically intersect a number of objects, some more than once sort intersections to find the closest one. • The Phong illumination model is then evaluated BUT: – we trace a reflected ray if the surface is specular – we trace a refracted ray if the surface is transparent – we trace shadow rays towards the light sources to determine which sources are visible to the point being shaded • The reflected/refracted rays themselves will hit surfaces and we will recursively evaluate the illumination at these points. a very large number of rays must be traced to illuminate a single pixel. Recursive Ray Tracing • The ray tracing algorithm is recursive, just as the radiance equation is recursive. – At each intersection we trace a specularly reflected, a shadow ray and transmitted ray (if the surface is specular) or terminate the ray if diffuse. • Thus we trace a ray back in time to determine its history, beginning with the eye ray: this leads to a binary tree Recursive Ray Tracing • Theoretically, this recursive process could continue indefinitely. • In practice, at each intersection the ray loses some of its contribution to the pixel (i.e. its importance decreases). – if the eye ray hits a specularly reflecting surface with reflectivity of 50%, then only 50% of the energy hitting the surface from the reflected direction is reflected towards the pixel. – if the next surface hit is of the same material, the reflected ray will have its contribution reduced to 25%. • We terminate the recursion if: – the current recursive depth > a pre-determined maximum depth or – if the ray’s contribution to the pixel < some pre- determined threshold The Ray Tracing Algorithm for each pixel in viewport { determine eye ray for pixel intersection = trace(ray, objects) colour = shade(ray, intersection) } Intersection trace(ray, objects) { for each object in scene intersect(ray, object) sort intersections return closest intersection } 9 The Ray Tracing Algorithm colour shade(ray, intersection) { if no intersection return background colour for each light source if(visible) colour += Phong contribution if(recursion level < maxlevel) { ray = reflected ray intersection = trace(ray, objects) colour += refl*shade(ray, intersection) ray = transmitted ray intersection = trace(ray, objects) colour += trans* shade(ray, intersection) } return colour } Ray Tracing Issues I(P) = Ilocal(P) + krgI(Pr) + ktg(Pt) 1) Cast a ray 2) Determine Intersections 3) For closest Intersection: – Extend light(shadow feeler) ray + calculate local term – Spawn Transmitted Ray (step 2) – Spawn Reflected Ray (step 2) 11 The Ray • Using a parameterized representation of the ray t<0 x x1 ( x2 x1 ) t x1 it Ray Start (x1, y1, z1) y y1 ( y2 y1 ) t y1 jt t=0 0 <= t <= 1 z z1 ( z2 z1 ) t z1 kt • Or R(t ) O D t Ray End (x2, y2, z2) t>1 Where t=1 R is a set of points on the line O is the origin of the ray D is the direction vector of the ray 12 Eye Ray Construction • We need to construct rays originating at the eye and passing through a point on the viewport. we need to relate the viewport and window co-ordinate systems. – Construct vectors u and v which span the viewing plane – Determine origin of viewport (usually defined as the center) – all points P on the viewport are linear combinations of u and v with scalars and defining the co-ordinate of the point: 13 Eye Ray Construction =1 v =0 P u v u P= ( u+ v) =-1 =-1 =0 =1 14 Eye Ray Construction =1 (0,0) v =0 u P= ( u+ v) =-1 (xres –1, yres -1) =-1 =0 =1 window viewport 2 x 0 5 2 y 0 5 1 1 Pixel center used for ray direction. xres yres Y value is inverted 15 Eye Ray Construction • Given pixel location (x,y) we can readily determine the associated viewport co-ordinates (,). • To construct basis vectors u and v for the viewport we first construct a camera co-ordinate system using the camera parameters. LE • Construct the gaze vector: g LE • The viewport origin is defined using the view plane distance, i.e. move a distance d along g and we reach the viewport center: O Ed g • Normally, the z axis of the camera system is chosen to be g 16 Eye Ray Construction • Construct the x axis by taking the cross product of U and z Uz x Uz • Finally we construct y by taking the cross product of x and z: y zx Eye Ray Construction • To construct u and v, note that they are simple scaled values of x and y respectively we need only determine the length of u and v given the field of view angles and : u d tan , v d tan u d tan x v d tan y Eye Ray Construction • Now we’re in a position to construct an eye ray: – the origin of the ray is simple the eye point E. – the ray direction (normalised) is given by the vector taking us from E to the point P on the viewport associated with a particular pixel: Oray E dray P=O+ u+ v O u v E d ray O u v E 19 Ray Object Intersections • Once we’ve constructed the eye rays we need to determine the intersections of these rays and the objects in the scene. • Upon intersection we need the normal to the object at the point of intersection in order to perform shading calculations. 20 Ray Object Intersection • Usually objects are defined either implicitly or explicitly (parametrically). 0 if v inside surface • Implicit: f v f v0 , v1 ,, vn 0 if v on surface 0 if v outside surface – the set of points on the surface are the zeros of the function f. • Explicit: – n are the generating parameters and usually have infinite ranges S n f 0 , 1 ,, n – for surfaces in 3-space, S2, there will be 2 generating parameters. – we iterate over all parameters to generate the set of all points on the surface. 21 The Sphere • A sphere object is defined by its center C and its radius r. • Implicit Form: f v v C r 2 0 2 f x, y, z x Cx 2 y C y 2 z Cz 2 r 2 0 • Explicit Form: x f x , C x r sin cos y f y , C y r cos z f z , Cz r sin sin • We can use either form to determine the intersection; we will choose the implicit form. 22 Ray Sphere Intersection • All points on the ray are of the form: r O td t 0 • All points on the sphere satisfy: x Cx y Cy z Cz 2 2 2 r2 0 • any intersection points (= points shared by both) must satisfy both, so substitute the ray equation into the sphere equation and solve for t: O t d C O x x x 2 y t d C O y y 2 y t d C r y z 2 2 0 ray equation 23 Ray Sphere Intersection • Rearrange and solving for t leads to a quadratic form (which is to be expected as the sphere is a quadratic surface): At2 Bt C 0 A d x d y d z2 1 2 2 B 2d x Ox C x 2d y O y C y 2d z Oz Cz C Ox C x O y C y Oz Cz r 2 2 2 2 • We employ the classic quadratic formula to determine the 2 possible values of t: B B2 4 AC B B2 4C t 2A 2 24 Ray Sphere Intersection • Depending on the number of real roots we have a number of outcomes which have nice geometric interpretations: – we use the discriminant d: d B 2 4C no roots d 0 1 root (ray is tangent to sphere) d 0 no real roots (ray misses) 1 root d 0 2 real roots: Both positive sphere in front of ray 2 roots One negative ray origin inside sphere 1 root negative 25 Ray Sphere Intersection Test • If we have 2 positive values of t we use the smallest (i.e. the nearest to the origin of the ray). • t is substituted back into the ray equation yielding the point of intersection: Pint Oray tint d ray • We then evaluate the Phong illumination model at this point. To do so we need the normal to the surface of the sphere at the point of intersection. • The normal and the original ray direction are then used to determine the directions of reflected and refracted rays. Normals to Explicit Surfaces • Given an explicitly defined surface S with parameters u and v we can find the normal to the surface at a point x: – first we determine the tangents to the u and v curves at the point f u, v N f u, v v u f f x N v u v f f u v u f u, v 27 Normals to Implicit Surfaces • With implicit surfaces, the function represents a density field the gradient of which is the normal we require: f x, y , z f x, y , z y z N f f f N i j k x y z f f f f x, y , z x y z x f f x, y , z 28 Normal to Sphere • We can therefore compute the normal to a sphere at a point x: f f f x2 y2 z2 r2 0 2x 2y 2z x y z 2 x 2 y 2 z i.e. the normal to the sphere is the normalised vector associated with the point. For a sphere with center C we compute the normal as: x C N x C 29 Ray Plane Intersections • A plane may be defined implicitly as: v nP d p or nx x n y y nz z d P 0 Plane normal perpendicular distance to the origin 30 Ray Plane Intersections • To intersect a ray with a plane we use the same approach as with the sphere i.e. substitute in the ray equation and solve for t: nx Ox td x n y Oy td y nz Oz td z d P 0 n x Ox n y O y n z Oz d P nP Or t nx d x n y d y nz d z nP d r • If nP d r 0 then the ray is parallel to the plane and no intersection occurs. • Note there can only be one intersection. The normal to the plane at each point is the same, i.e. the plane normal nP 31 Ray Polygon Intersections • First intersect the ray with the polygon plane: given this intersection point (assuming ray is not parallel to the plane) determine if it is within the polygon interior using the Jordan Curve Theorem: – construct any ray with the intersection point as an origin – count the number of polygon edges this ray crosses ( = winding number) – if w is odd then the point is in the interior Ray Polygon Intersections • Note that this is essentially a 2 dimensional problem: principal axis – after intersecting the ray and the plane, reduce the problem to 2D by projecting parallel to the polygon’s principal axis onto the plane formed by the other 2 axes – the principal axis is given by the largest ordinate of the polygon normal – e.g. if n = [0.2 0.3 0.93] then z is the principal axis and we project onto the xy plane. – This projection preserves the topology (assuming the projection direction is not parallel projected polygon and intersection point to the polygon) 33 Ray Polygon Intersections • Note that this projection is constant for each polygon, therefore we can pre-compute the polygon projection and principal axis. • Once projected, the winding number is determined. – translate the intersection point to the origin (apply same translation to all projected polygon vertices). – use an axis (not the principal axis) as the direction to try – determine the number of edge crossings along the positive axis. Ray Polygon Intersections • We can speed up the process of determining edge intersection with an axis. There are 3 redundant cases of edge axis topology: Both x values negative no intersection Both z values positive Both z values negative no intersection no intersection 35 Ray Polygon Intersections • If none of these cases are satisfied then we must compute the intersection with the axis and determine if it lies on the positive half of the axis: Remember the general equation of a line: y mx c intersection with the y axis z2 xint x1 z1 x2 x1 x1 z2 z1 x2 If xint > 0 then the edge crosses the z1 axis and the winding number is xint incremented. 36

DOCUMENT INFO

Shared By:

Categories:

Tags:

Stats:

views: | 11 |

posted: | 12/4/2011 |

language: | English |

pages: | 36 |

OTHER DOCS BY hedongchenchen

How are you planning on using Docstoc?
BUSINESS
PERSONAL

By registering with docstoc.com you agree to our
privacy policy and
terms of service, and to receive content and offer notifications.

Docstoc is the premier online destination to start and grow small businesses. It hosts the best quality and widest selection of professional documents (over 20 million) and resources including expert videos, articles and productivity tools to make every small business better.

Search or Browse for any specific document or resource you need for your business. Or explore our curated resources for Starting a Business, Growing a Business or for Professional Development.

Feel free to Contact Us with any questions you might have.