In 3D computer graphics and solid modeling, a polygon mesh is a collection of vertices, edges and faces that defines the shape of a polyhedral object's surface.
The variety of operations performed on meshes includes Boolean logic (Constructive solid geometry), smoothing, and simplification.
Algorithms also exist for ray tracing, collision detection, and rigid-body dynamics with polygon meshes.
Polygon meshes may be represented in a variety of ways, using different methods to store the vertex, edge and face data.
For certain operations it is necessary to have a fast access to topological information such as edges or neighboring faces; this requires more complex structures such as the winged-edge representation.
However, VV meshes benefit from small storage space and efficient morphing of shape.
This is the most widely used mesh representation, being the input typically accepted by modern graphics hardware.
This representation is widely used in modeling programs to provide the greatest flexibility in dynamically changing the mesh geometry, because split and merge operations can be done quickly.
Their primary drawback is large storage requirements and increased complexity due to maintaining many indices.
A good discussion of implementation issues of Winged-edge meshes may be found in the book Graphics Gems II.
To simplify this, winged-edge meshes provide only four, the nearest clockwise and counter-clockwise edges at each end.
Rendering of winged-edge meshes for graphics hardware requires generating a Face index list, which is usually done only when the geometry changes.
Winged-edge meshes explicitly store nearly all information, and other operations always traverse to the edge first to get additional info.
As the mesh representations become more complex (from left to right in the summary), the amount of information explicitly stored increases.
This gives more direct, constant time, access to traversal and topology of various elements but at the cost of increased overhead and space in maintaining indices properly.
As a general rule, face-vertex meshes are used whenever an object must be rendered on graphics hardware that does not change geometry (connectivity), but may deform or morph shape (vertex positions) such as real-time rendering of static or morphing objects.
Winged-edge or render dynamic meshes are used when the geometry changes, such as in interactive modeling packages or for computing subdivision surfaces.
Vertex-vertex meshes are ideal for efficient, complex changes in geometry or topology so long as hardware rendering is not of concern.