CS488 - Introduction to Computer Graphics - Lecture 15

Comments and Questions


  1. Polygons
  2. Back-face culling

Hidden Surface Removal

Every polygon, in 3D, has two sides

It is very convenient to assume that surfaces are closed

Then we can say that every polygon has only a single side with visual properties

Backface Culling

Do not render any polygon with n.E < 0.

Does not handle occlusion, so we need to finish off with one of the following algorithms.

Painter's Algorithm

Sort polygons back to front, then render backmost first.

Warnock's Algorithm

Divide and conquer

  1. Start with whole window
  2. Divide into four subwindows
  3. Keep dividing into subwindows until

    then paint the window

Warnock's algorithm is

Depth-Buffer Algorithm (also called zed-buffer)

Use a second frame buffer with depth values stored in it

  1. Initalize depth-buffer to far plane distance
  2. If a pixel has z less than the current depth buffer value

The depth buffer algorithm is

  1. easy to implement
  2. fast, O(n)
  3. no longer memory-intensive, though it used to be

Almost all graphics cards have hardware depth buffers.

Mouse Interface


For assignment 3 you need to be able to rotate with the mouse

The virtual trackball

You need to modify the sample code.


For assignment 3 you need to be able to select graphical objects with the mouse

The simple principle

  1. Mouse gives (x, y).
  2. Render pixel at (x, y ) keeping track of the polygon it comes from.
  3. Associate polygon with object

For the assignment let GL do it for you.

See the notes.

Hierarchical Models

Suppose you are modelling classical temples. How do you do it?

  1. Open up Vitruvius. You will find that all temples are assumbled from a few basic parts, such as
  2. You don't know the words, but there are drawings with dimensions.
  3. There are rules for making them bigger and smaller, so you think of scaling matrices.
  4. There are rules for putting them in different orientations, so you think of rotation matrices.
  5. There are rules for placing them in different locations, so you think of translation matrices.

At this point you can make a temple, but it's a lot of work. To make it easier, divide and conquer

  1. Column = base + shaft + capital. Reuse this as a unit.
  2. Entablature = architrave + frieze + cornice. Reuse this as a unit.

You get the idea. The result is

Return to: