CS488 - Introduction to Computer Graphics - Lecture 24

Review

1. Surface normals
2. Constructive Solid Geometry
3. Office hours

More Ray Tracing

Speeding Up Intersection Tests

1. Bounding Volumes (usually Boxes)
1. Find the smallest - or close to smallest - regular volume that encloses the object
2. Use ray-intersect-volume as a pretest for fast negative results.
• benefit of quicker `miss'detection
• cost of getting a good bounding surface
• Both increase as complexity of primitive increases

Scene subdision

1. Divide the scene volume into sub-volumes: many ways to do it, such as
• oct-trees
• BSP trees
• ...
2. List all primitives by sub-volume.
3. Only test primitives in the sub-volumes through which a ray passes.

Anti-aliasing

Two different, but linked, types of artifacts

1. Spatial (or temporal) frequency aliasing,
• image features appear at innappropriate sizes
2. Reconstruction aliasing
• totally new features, like jaggedness, appear.

Exact solutions are simple in principle

1. Remove high spatial frquencies by filtering
1. Fourier transform in image space: remember that you need to keep both amplitude and phase.
2. Filter
3. Inverse transform in image space

Filtering is the tricky part.

2. Use a sampling filter that is the inverse of the reconstruction filter
1. For the display to be used find the pixel shape
2. Construct a sampling filter appropriate for the pixel shape
3. Do ray-tracing calculating over a weighted area

Finding the pixel shape is the hard part.

These are the things that apply to images where you end up with a bunch of graphical primitives on the image plane, so that you image is effectively designed at infinite resolution. A similar effect is produced when ray tracing, but has different types of solution, which are

1. Beam tracing
• project a pixel-sized beam into the scene
• if the whole beam covers the first primitive it hits, excellent.
• otherwise, cut off the part of the beam that hits the first primitive and follow the remainder of the beam into the scene
• and so on
• add up all the fraction pixels at the end and use that colour.
2. Super sampling
• project many rays for each pixel
3. Stochastic sampling
• project many rays at random locations for each pixel
4. Importance sampling
• concentrate the extra rays where they make the most difference.

Lighting

Bidirectional Ray Tracing

The `caustic' project

Surfaces

Texture Mapping

1. Basic
2. Map 2D image onto primitive using a 2D affine transformation
• Simple if the surface of the primitive is flat
• otherwise, ...
• Texture pixels normally do not match display pixels, so some image processing may be needed.
3. Backwards map intersection point with ray into the image to get the surface properties
2. Normal Mapping (Bump mapping)
1. Start with a difference surface, defined with respect to the surface
2. Calculate the normals to the difference surface and map them onto the surface of the primitive
3. Use the mapped surface models for lighting
4. No occlusion, shadows are wrong, silhouettes are wrong, nobody notices!
3. Solid Textures
1. Solution to mapping texture onto curved surfaces
2. Usually procedural