第五课 ray tracing. overview of the section why ray tracing? what is ray tracing? how to tracing...

Post on 20-Jan-2016

287 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

第五课 Ray Tracing

Overview of the Section

Why Ray Tracing? What is Ray Tracing? How to tracing rays? How to accelerating ray-tracing?

Object-ordering rendering

Each polygon or triangle is processed in turn and its visibility is determined using algorithms such as Z-buffer

After determining its visibility, the polygon or triangle is projected onto the viewing plane

Polygon or triangle is shaded using Phong Model\

OpenGL, rasterization ( 光栅化 )

Object-ordering rendering

Advantage Fast rendering can be implemented on

hardware Disadvantage

Difficult to model lighting effects such as reflection or transparency

Difficult to model lighting effects are caused by the interaction of objects, i.e. shadows

Assumption Light travels from visible objects towards the

eye

Ray tracing

Question Do light proceed from the eye to the light

source or from light source to the eye? To answer the question, it’s important to

understand Light rays do travel in straight lines Light rays do not interfere if they cross Light rays travel from the light source to the

eye but the physics are invariant under path reversal

Ray tracing

Image order rendering Start from pixel, what do you see through

this pixel Allows to add more realism to the

rendered scene by allowing effects such as Shadows Transparency Reflections

How ray-tracing works

Looks through each pixel (e.g. 640 x 480) Determines what eye sees through pixel

Trace light ray: eye -> pixel (image plane) -> scene

If a ray intersect any scene object? Yes, render pixel using object color No, it uses the background color

Automatically solves hidden surface removal problem

Ray misses all objects

Ray hits an object

Ray hits an object

Ray hits object: Check if hit point is in shadow, build secondary ray towards light sources

Ray hits an object

If shadow ray hits another object before light source: first intersection point is in shadow of the second object. Otherwise, collect light contributions

Reflected Ray

When a ray hits an reflective object, a reflection ray is generated which is tested against all of the object in the scene

Shadows and Reflections

Transparency

If intersected object is transparent, transmitted ray is generated

Transparency

Recursion

Reflected rays can generated other reflected rays

Recursion

Scene with one layer of reflection

Recursion

Scene with two layer of reflection

Ray Tree

Reflective/transmitted rays are continually generated until ray leaves the scene without hitting any object or a preset recursion level has been reached

Ray-Object Intersections

Express ray as equation (origin is eye, pixel determines direction) R0 = [x0, y0, z0] – origin of ray Rd = [xd, yd, zd] – direction of ray

Define parametric equation of ray R (t) = R0 + Rd * t, with t > 0.0

Express all objects mathematically Ray tracing idea:

Put ray mathematical equation into object equation Determine if real solution exists Object with smallest hit time is object seen

Ray-Object Intersection

Dependent on parametric equation of object

Ray-Sphere Intersections Ray-Plane Intersections Ray-Polygon Intersections Ray-Box Intersections Ray-Quadric Intersections (cylinders, c

ones, ellipsoids, paraboloids)

Accelerating Ray Tracing

Ray tracing is very time-consuming because of intersection calculations

Each intersection requires many floating float point operations

Solutions Use faster machines Use specialized hardware, especially parallel

processors Speed up computations by using more

efficient algorithms Reduce the number of ray-object

computations

Reducing Ray-Object Intersections

We will look at spatial ( 空间的 ) data structures Hierarchical ( 层次 ) bounding volumes ( 包围

盒 ) Uniform Grids ( 均匀格 ) Quadtree/Octree ( 四叉树 / 八叉树 ) K-d Tree/BSP tree ( 空间二分树 )

Good spatial data structures could speed up ray tracing by 10-100 times

Ray intersection

Ray Intersection

Bounding Volume

Wrap (包住 ) things with bound volumes that hard to test for intersection in things that are easy to test. Ray can’t hit the real object unless it hits the bounding volume

Bounding Box and Bounding Sphere

Bounding Volume

Hierarchical Bounding Volume

HBV ( 层次包围盒 ) Limitation of bounding volume

Still need to test ray against every object, O(n) time complexity, where n is the number of objects

A natural extension to bounding volumes is a HBV

HBV

Given the bounding volumes of the objects in the scene, a tree data structure of bounding volumes is created with the bounding volume of the objects at the leaves

Each interior node v of HBV corresponds to the bounding volumes that completely encloses the bounding volumes of all the children node of v

HBV

An example Several triangles (right) HBV (below)

HBV

HBV

HBV

Works well if you use good bounding volume and hierarchy

Should give O(logn) time complexity

Can have mulitple classes (box, sphere) of bounding volumes

Uniform Grids ( 均匀网格 )

Data structure: a 3D array of cells that tile space Each cell lists all primitives which

intersect with that cell

Uniform Grids

Intersection testing Start tracing at cell where ray begins Step from cell to cell, searching for the

first intersection cell At each cell, test for intersection with

all primitives intersected with that cell If there is an intersection, return the

closest one

Uniform Grids

Advantage Easy to construct and easy to traverse

Disadvantage Uniform grids are a poor choice if the world i

s non-homogeneous ( 不均匀 ). Many polygons will cluster in a small space

How many cells to use? Too few -> many objects in a cell -> slow Too many -> many empty cells to traverse -> slow

and large storage Non-uniform spatial division is better

QuadTree/Octree

QuadTree The 2D generalization of binary tree Node is a square Recursively split square into four equal sub-squa

re Stop when leaves get “simple enough”

Octree 2D generalization of QuadTree Node is cube, recursively split into 8 equal sub-c

ubes

Construction of Octree

First, enclose the entire scene in a minimal axis-aligned box

Built recursively in a top-down fashion, and stops recursion when criterion is fulfilled

These criteria include: a maximum number of recursion level has been reached, or that there is fewer than a threshold number of primitives in a node. ( 递归终止条件:已达到最大层次、或包围盒内物体已很少 )

BSP tree

Construction of BSP

Similar to octree, BSP is also constructed hierarchically in top-down fashion A splitting plane (perpendicular to axis

x or y or z) is selected to subdivide a current leaf node into two equal size sub-nodes

BSP tree Examples

BSP tree Examples

KD-tree

Difference between BSP and KD tree Distinguished by the position of the

splitting plane: in BSP tree, the plane always lies at the mid-point of the current node, but the KD tree has arbitrarily position of the plane

Thus, any BSP tree is a KD tree, but not vice versa

Thanks

top related