$\require{color}$

Mesh simplification

Motivation

Save memory from

  1. Oversampled scan data
  2. Overtessellation (from isosurfaces, voxel data, or geometric manipulations)
  3. LODs (level of detail) for efficient geometry processing
  4. Adapt to smaller/weaker display/rendering/memory hardware

Wishful thinking

Optimize between minimizing number of triangles and minimizing difference in quality.

Vertex clustering

One whole cluster of vertices $\rightarrow$​​ One vertex.

Vertex clustering

  1. Gridding the model into a uniform 3D grid recursively.
  2. Continue subdividing until each cube has approximately the same number of triangles.
  3. Cluster these vertices into 1 vertex

Hierarchical subdivision

Ways to position

Average Geometric median Error quadrics
Average Geometric median Error quadrics
  1. Average: Vector sum of deleted vertices and dividing by their count
  2. Median: The point closest to all of the points
  3. Error quadrics (best): The point that minimizes the sum of distance to all the planes of the triangles.

Retriangulation

After deleting the discard vertices, to fill up the holes we now need to

Note: this could lead to topology changes, where mesh connectivity changes etc.

Topological changes

Iterative decimation

  1. Set up goal (triangle count, error margin, etc.)
  2. Choose a single decimation operation for a vertex/edge/triangle from a priority queue (decimation priority: which triangles you want to decimate first?)
  3. Modify the priority queue if needed
  4. Repeat steps 1 and 2 until goal is reached

Vertex deletion

Edge contraction

Merge 2 vertices

Potential issues

  1. Change in topology (due to vertex merging): handled by link check
  2. Flipped triangles: handled by normal checking of neighbouring triangles

Flipped triangles

Possible Criteria for deletion

Quality

Circumcircle