C481 B581 Computer Graphics
Dana Vrajitoru

Representation and Modeling (continued)

Triangulation

Def. Given a set of points or vertices V={v1, v2, ..., vn}, find a set of triangles T={t1, t2, ..., tm} such as: Example.

Lazy algorithm:

Open and interesting problems


Binary Space Partitioning Trees

A BSP tree is a recursive sub-division of space that treats each line segment (or polygon, in 3D) as a cutting plane which is used to categorize all remaining objects in the space as either being in "front" or in "back" of that plane.

It has applications in hidden surface removal and ray tracing.

Example


Quadtrees and Octrees

Def. Multi-resolution representation in 2D (quadtrees) or 3D (octrees).

General idea: recursively divide the space into 4 square cells (2D) or 8 cubic cells (3D) of equal size. 3D cells are also called voxels. Each of them is either empty or full (belongs to the object or not). Divide the size of the cell by 2 at each step.

Applications: medical imaging, fluid modeling, etc.

Examples:


Quadtree


Octree


Metaballs (Blobs)

Each voxel is a ball. If two balls are close enough, they merge like drops of water.

Used for modeling fluffy objects, fluids, animated characters, etc.

More information and examples:
Etheral3D
SIGGRAPH metaballs page.


Interpolation Surfaces

Interpolating Curves Interpolation on 3 Points

Bezier Curves
Some of the control points are used to define the tangent to the curve (page 494).

Spline Curves

Surfaces

Nurbs in OpenGL
GLUnurbsObj *nobj;
nobj = gluNewNurbsRendered();
gluBeginSurface(nobj);
gluNurbsSurface(nobj, nrku, uknots, nrkv, vknots, du, dv, points, 4, 4, surf_type);
gluEndSurface(nobj);
// type: GLU_MAP2_VERTEX_3


Constructive Solid Geometry

The scene can also be represented as a tree, but the container nodes define logical operations on the subtrees: