
344 Chapter 9 Geometric Primitives in 3D
(a) (b)
Figure 9.16 A rectangle has two parallel edges joined together forming (a) a cylindrical strip
(orientable) or (b) a M
¨
obius strip (nonorientable).
An application has to decide which of the two consistent orderings it will use
for meshes. The typical choice is based on visibility of the mesh from an eye point
(camera location). The ordering is chosen so that mesh faces that are visible (ignoring
self-occlusion for the sake of the argument) have normal vectors that are directed
toward the eye point. That is, if a mesh face is in a plane n · (X −P)= 0, and if the
eye point is E, the face is visible when n · (E −P)>0. Such faces are said to be front-
facing. The vertices, when viewed from the eye point, are counterclockwise ordered
in the plane of the face. The faces for which n · (E − P)≤ 0 are said to be back-
facing. In a standard graphics rendering system, back-facing faces can be discarded
immediately and not transformed or lit, thereby saving a lot of time in rendering.
For a scene with a lot of closed meshes, the intuition is that approximately half of the
faces are back-facing. Not drawing them leads to a signicant increase in performance.
Using the same convention for selecting the consistent ordering, the normals of a
closed mesh point outside the region bounded by the mesh. This is important for
visibility and lighting as mentioned earlier, but it is also important for geometric
queries. For example, a point-in-polytope query might depend on the fact that all
normals are outward pointing. Of course, if all normals are inward pointing, the test
can still be correctly implemented. What is important is that a consistent ordering be
chosen and the various systems that manipulate meshes adhere to that ordering.
Toward that goal, sometimes applications can construct a connected manifold
mesh that is orientable, but the face orderings are not consistent. The classic exam-
ple is extraction of a level surface from a 3D voxel data set as a mesh of triangles.
Each voxel is processed independently of the others, and a collection of triangles that
approximate the level surface is constructed. The triangles are specified as triples of
indices into an array of vertices that lie on the level surface. The full set of triangles
forms an orientable mesh (level surfaces are always orientable), but the triangle or-
derings might not be consistent because of the independent processing. It is desirable
to reorder some of the triples of indices to produce a consistent ordering for the mesh.
If the mesh is stored in a vertex-edge-face table, a depth-first search of the abstract
graph represented by the table can be used to obtain the consistency. An initial face
is selected. All faces in the mesh will be reordered to be consistent with that initial
face. The reordering is purely topological and has only to do with the order of ver-
tices, not with any geometric properties of the faces. As such, you get a consistent
ordering, but for a closed mesh, you might get all inward-pointing normals when in