Modeling Surfaces
- How to represent objects for 3D graphics?
- How to construct such representations quickly and/or automatically?
- How to manipulate such representations?
Goals
- Accuracy
- Conciseness
- Intuitive specification
- Affine invariant
- Efficient display
- Efficient intersections
- Arbitrary topology
- Natural parameterization
- Guaranteed continuity
- Local support
Variety of Representations
- Raw Data
- point cloud - unstructured 3D point samples

- range image - depth data (acquired from range scanner)

- voxels - uniform grid of sample data (acquired from MRI, CAT, etc)

- unconnected polygons - created interactively?

- Surfaces
- mesh - connected set of polygons

- subdivision - coarse mesh + subdivision rule

- parametric - geometric equation

- implicit - points satisfying function: F(x, y, z) = 0

- High-level structures
- scene graph - union of objects at leaf nodes

- skeleton - graph of curves with radii

- application specific

Generating Surfaces
- Typically start with 2D polygon or curve and extend in 3D
- Polyhedra, any closed collection of planar polygons
Since many vertices are shared, avoid redundancy by separating vertex, normal, and face data
- Platonic solids

- Prisms

- Constructive Solid Geometry (CSG), combine surfaces via union,
intersection, difference

- Extrusions, any 2D shape that is pulled or swept through 3D space
- Segmented tubes

- Ruled surfaces - a straight line swept through space

- Surfaces of revolution - a curve rotated about an axis

- Curves used to define 3D surfaces
- Quadrics, 3D analogs of conic sections

- Superquadrics, quadrics extended with "bulge" factors to produce
greater variety

- Spline Surfaces
- Can be expensive for high-quality approximation if simply evaluate
at each point
- Evaluate using Horner's rule for factoring reduces multiples
to O(n)
- Approximate by sub-dividing control points based on de Casteljau's geometric construction
- Approximate using forward differencing reduces to adding pre-computed
constants each step
Polygon Mesh
- Most basic representation for 3D systems (usually triangles)
- Made up of vertices, edges, and faces
- Order in which vertices are traversed determines direction of normal
Normals
- Used to determine surface lighting (based on dot product with light
direction)
- Can be calculated per polygon, flat shading, or per vertex, interpolated
shading
- Often original surface, if there even was one, is gone, so need some way to make up plausible normals
- If polygon is planar, can calculate normal as cross product of edge
vectors
- If not, approximate by "averaging" using Newell's method
- this method is numerically "robust": if two vectors are almost parallel, cross product is small, so result may be inaccurate
- Advantages of using vertex normals instead of face normal
- facilitates clipping
- facilitates shading of smoothly curved shapes
Tessellating Surfaces
- Goal: generate fewest number of polygons
- Variety of ways to polygonalize ideal surface
- Simplest: given function of surface, sample at given intervals

- Marching cubes, divide 3D space into cubes, sample at specific points, connect
samples
References