Advanced Graphics Study Guide

Advanced Graphics, Dr Neil Dodgson, University of Cambridge Computer Laboratory
Part II course, 2002 and 2003


Part 4: Other 3D modelling mechanisms
A: Generative models
B: Converting swept objects to polygons
C: Constructive Solid Geometry
D: Implicit surfaces, voxels and marching cubes
E: Subdivision surfaces
...back to part 3 | on to part 5...

4D) Implicit surfaces, voxels and the marching cubes algorithm

Implicit surfaces

These are covered in Wyvill (see introduction to this study guide for the full reference). Brian Wyvill has a wonderful introduction to implicit surfaces on his website at the University of Calgary.

Voxels and the marching cubes algorithm

Voxels are the three dimensional analogue of pixels. Rather than storing a colour in a voxel, you will generally store a density value. Voxels and the marching cubes algorithm are both covered in Lorenson and Cline's 1987 SIGGRAPH paper "Marching cubes: a high resolution 3D surface construction algorithm", Proc SIGGRAPH 87, pages 163-169.

Exercises
  1. Give a definition of an implicit surface and give three examples of where such things might be useful.
  2. Explain how voxel data can be thought of a defining an implicit surface (or surfaces). Explain, conversely, an implicit surface can be converted into voxel data.
  3. Following Section 4 of Lorenson and Cline's paper, sketch an implementation of the two-dimensional `marching squares' algorithm -- where you generate line segments in 2D rather than triangles in 3D. An appliation of this algorithm would be the drawing of isobars on a weather map, given pressure values at a regular (2D) grid of points. [This question is practically identical to the exam question below.]
  4. [2001/7/9] (a) The marching squares algorithm is a two-dimensional version of marching cubes, where you generate line segments in 2D rather than triangles in 3D. It could be used, for example, where you have a regular grid of height values and want to draw contours of constant height. Sketch an implementation of this two-dimensional marching squares algorithm. [6 marks]
  5. Medical data is captured in slices. Each slice is a 2D image of density data. The distance between slices may be different to the distance between the pixels within a slice (for example, see Lorenson and Cline, Section 7.1, p. 167). What effect, if any, does this difference have on the voxel data? What effect, if any, does it have on the marching cubes algorithm?
  6. Consider Lorenson and Cline, Section 6. This research was done about fifteen years ago. Given your knowledge of processor performance, what differences in performance would you expect to see between then and now?
  7. Lorenson and Cline is an example of a graphics research paper. Critically evaluate Lorenson and Cline. How good is this piece of research?
  8. Research papers at the SIGGRAPH conference are limited in their length. Evaluate Lorenson and Cline in terms of the following questions. What has been left out that would have been useful? What has been included that could have been left out? Where could the explanation have been better? Are any of the figures extraneous? Where would an extra figure have been helpful? For light relief, list any grammatical or spelling errors that you find (there is at least one of each).
  9. [2002/8/4] (b) Implicit surfaces are normally combined by adding the field functions together to create a "blobby" blended surface. Describe an alternative mechanism (or mechanisms) for combining implicit surfaces which would produce results more akin to CSG union and intersection. Explain why it produces these results. Given this mechanism, suggest a way of combining implicit surfaces to produce a result similar to CSG dierence. [4 marks]


Part 4: Other 3D modelling mechanisms
A: Generative models
B: Converting swept objects to polygons
C: Constructive Solid Geometry
D: Implicit surfaces, voxels and marching cubes
E: Subdivision surfaces
...back to part 3 | on to part 5...


Neil Dodgson | Advanced Graphics | Computer Laboratory

Source file: p4d.html
Page last updated on Mon Oct 14 11:52:45 BST 2002
by Neil Dodgson (nad@cl.cam.ac.uk)