Dr Neil Dodgson, University of Cambridge Computer Laboratory
Part II course, 1998

# 2B) Generative models

## Sweeps

These are three dimensional objects generated by sweeping a two dimensional shape along a path in 3D. Two special cases of the sweep are surfaces of revolution, where the path is a circle; and extrusions, where the path is a straight line.

Surfaces of revolution are covered in R&A section 6-2. Sweeps are covered in R&A section 6-3 and FvDFH section 12.4.

### Extrusion

On the left (above) is an example extrusion. On the right is its generating polygon (the red star), with the generated 3D object shown in semi-transparent cyan.

### Surface of revolution

On the left (above) is an example surface of revolution. On the right (above) is its generating quadrilateral (the red polygon), with the generated 3D object shown in semi-transparent cyan. Below that is another view of the same surface of revolution.

### Revolution or extrusion?

Some objects can be generated in more than one way. The hollow cylinder shown above (left) could be generated as either a surface of revolution (above right) or as an extrusion (immediately right).

## Generalised Cylinders

Pushing the idea of sweeps to its limit brings us to generalised cylinders. Here you may specify any or all of the following things to produce a three dimensional swept shape:
• Cross section
Some two dimensional shape that is to be swept along the sweep path. This is the cross section of the "cylinder". It does not have to be circular. At right are two generalised cylinders, one with a circular cross-section, one with a polygonal cross-section.
• Sweep path
The path along which the two dimensional cross section is swept to produce the three dimensional shape. It may be any curve. At right we see two views of the same generalised cylinder: a polygonal cross-section is swept along a convoluted path.
• Twist
How the cross section twists (rotates) as it moves along the sweep path. The default would be to have no twist at all. At right is a generalised cylinder with and without some twist.
• Scale

How the cross section scales (changes size) as it moves along the sweep path. The default would be to have it stay the same size along the whole path. Above are a cylinder, and the same cylinder with different scales along its length.
• Normal vector direction
The normal vector of the 2D cross section will usually point along the sweep path at each point. Changing this will change the nature of the generalised cylinder. See R&A Figure 6-17 for an example.
At right is a generalised cylinder with a circular cross-section, semi-circular path, and varying scale.

You may be able to think of parameters, other than those in the list above, which you could modify to make an even more generalised cylinder.

 Exercises [1998/7/12] Show how the following object can be represented as a swept object. Use the following different methods of specifying a geometrical model for this picture (assuming it's a three dimensional model and not a line drawing). Come as close as you can to the original for any of the methods, and describe the difficulties in using a particular method for this model. Extrusions Surfaces of revolution Sweeps Generalized cylinders For each of the following categories list five real-world objects which could be represented by the primitives in the category. The ray-tracing primitives in Lecture 1C Extrusions Surfaces of revolution Generalized cylinders A flume (water tunnel) at a swimming complex is modeled as a circle swept along a particular path. The designers also want to model the volume swept out by a person traveling down the flume. (We can approximate the cross-section of a person with something roughly elliptical and we'll assume the `virtual' person doesn't move legs or arms while hurtling along.) Explain why a standard `sweep' is insufficient to do this and explain what form of generative model would be needed to model the volume swept out by a person traveling down the flume.

Neil Dodgson | Advanced Graphics | Computer Laboratory

Source file: l2b.html
Page last updated on Mon Sep 7 12:47:50 BST 1998