Introduction

The transmission of a non-trivial amount of geometry data over a network
has a lot of applications. First, data that is not available locally may
need to be downloaded in order to be viewed and used. To avoid extremely
lengthy transmission times some kind of compression technique should be
employed. Special techniques for geometry compression have been developed
for this purpose. The problem gets worse when data needs to be sent continuously,
say, because it is being generated dynamically by the server. Apart from
compression there is also the issue of simplification. With simplification
the primary aim is not to compress geometry in its original resolution,
but to generate one or more simplified versions of a geometric model. These
can be used to speed up both transmission and rendering times, for instance.
As soon as several levels of resolution, i.e., detail, have been generated
for a model the idea of combining all of these into a single, uniform data
structure seems very worthwhile. Such multiresolution data structures can
be used to transmit geometry progressively over a network, render at a
level of detail that is appropriate for the current viewing distance, and
a lot of other applications, like multiresolution editing.

This document contains material I used for my research seminar talk
on January 13, 1999. The topic of this talk was mesh simplification and
multiresolution data structures, and their utility to the transmission
of geometry data over networks.

Acknowledgments

I have used images from [Gar97], [Gar98],
[Hop96],
and [Hop98] to illustrate the two case studies of Quadric
Error Metrics and Progressive Meshes, respectively.

1. Problem Statement

Highly detailed geometric models need to be:

• rendered
• stored
• transmitted

There are also a lot of other uses for mesh simplification and multiresolution
data structures, like collision detection at a different resolution than
the one use for rendering, editing a model not in its highest resolution,
but at an arbitrary level of detail, automatically applying the changes
to the entire multiresolution structure, and so on.

2. Overview of Methods

Over the past several years a tremendous amount of work has been done on
mesh simplification and multiresolution data structures and editing. The
following list contains some of the work that has been very important and
influential, being representative for a distinct approach to tackle the
problem.

Group vertices into clusters and determine a single representative
vertex. Iteratively merge clusters into larger clusters until only a single
cluster/vertex remains. Clustering by simple coordinate quantization, octrees,
...

Very early work on Mesh Decimation. Iteratively remove vertices
that pass a certain distance/angle criterion. Patch resulting holes by
local retriangulation. Primarily developed for processing output of Marching
Cubes.

Mesh Optimization paper. Vertices connected by an edge are
collapsed into a single representative vertex. This is the most often used
primitive operation! Efficiency depends on the error metric employed.

Distribute entirely new set of vertices over the surface of
the model. Best suited to curved surfaces, bad for models with sharp corners
and edges. Few other restrictions on the model (may have holes, ...). Points
are placed by point repulsion and then connected together.

Requires regular, hierarchical decomposition (e.g., regularly
gridded meshes). Multiresolution for free! Very good results, but not very
fast.

3. Classification of Algorithms

There are a lot of criteria that can be used to classify the huge number
of approaches and algorithms, like whether an algorithm is able to operate
on arbitrary topology, produces manifold or non-manifold output, is only
able to operate on height-fields, and so on:

4. Case Studies

The following section contains two case studies. First, Quadric Error Metrics
[Gar97]
uses an error metric that combines computational efficiency and high quality
results. Second, Progressive Meshes [Hop96] introduces
a format for efficient representation of a mesh in a progressive multiresolution
data structure.

4.1 Case Study #1: Generation (Quadric
Error Metrics)

"Surface Simplification Using Quadric Error Metrics", introduced at SIGGRAPH
1997 by Michael Garland and Paul S. Heckbert [Gar97]
uses a remarkable error metric that can be used for efficient generation
of multiple levels of detail for a given triangle mesh of arbitrary topology.
Surface properties have been integrated into their original approach later
on [Gar98].

Edge Contraction

The basic primitive for simplification is the edge contraction:

Figure 1: edge contraction

Whenever two vertices have to be contracted a new representative vertex
has to be chosen:

There are two different approaches: subset placement (one of the two
original vertices is used), and optimal placement (a new vertex position
is synthesized).

Quadric Error: Contraction Cost

The squared distance of a point to a plane is fundamental to the calculation
of the cost (error introduced) of edge contractions:

A quadric (represented by a symmetric, positive semi-definite matrix
Q) is associated with each vertex, subsuming the sum of the squared distances
of the vertex to all its incident planes:

Figure 2: Structure of quadric matrix and error calculation of a single
vertex

Algorithm Overview

Quadric Isosurfaces

Quadric Error Metrics have a nice geometric interpretation. Each quadric
corresponds to a quadric surface centered at the point of minimal error.
The surface itself (an ellipsoid in the non-degenerate case) has the same
error everywhere, that is, it is an isosurface for a given error.

Figure 3: non-degenerate quadric isosurfaces (ellipsoids)

Boundary Constraints

To prevent destruction of boundaries invisible orthogonal planes with large
penalty have to be added to boundary edges:

Figure 4: orthogonal boundary plane

For example, a cylinder without caps would be teared apart by the algorithm,
if no boundary constraints (planes) are used:

Figure 5: preventing destruction of boundaries

Surface Properties

Addition of surface properties to the algorithm:

surface normals

colors (linearly interpolated)

textures (texture coordinates)

The integration of surface properties is the n-dimensional extension of
the original approach for geometry.
Still, there is a huge problem with attribute discontinuities, especially
if there are a lot of them!
See [Gar98].

Preserving Discontinuities

Attribute discontinuities can be preserved by introducing boundary planes
in n-dimensional space, analogously to the preservation of geometric boundaries
in the 3-dimensional case:

Figure 6: preserving discontinuity curves

4.2 Case Study #2: Representation (Progressive
Meshes)

"Progressive Meshes", SIGGRAPH 1996, by Hugues Hoppe [Hop96]
introduced a very efficient data structure that can be used to represent
a triangle mesh at multiple levels of detail, also allowing progressive
refinement and transmission. This paper also introduced a very high quality
error metric using energy functions. Another paper by the same author focuses
exclusively on the progressive mesh format [Hop98]
and how to use it efficiently.

Basic Idea

Store the simplified mesh (base mesh) along with the inverse of all performed
edge collapses (vertex splits).

Inherently progressive (transmission, ...)

PM Representation

Figure 7: From original mesh to base mesh

The base mesh has the lowest resolution and can be refined progressively
by iteratively applying vertex splits, the inverse operation of edge collapses:

Vertices, Corners, and Wedges

Two different kinds of attributes have to be distinguished:

discrete (face attributes)

scalar (vertex attributes)

Figure 8: vertices, wedges, corners

Because of discontinuities scalars have to be associated with corners.
A corner is a (vertex,face) pair.

What do we need to store?

The following information needs to be stored in a progressive mesh:

geometry:

{v1}: ( x, y, z )

{v2}: ( x, y, z )

connectivity:

{f1}: { v1, v2, v3 }

{f2}: { v3, v2, v1 }

face attributes:

{f1}: material (shader)

corner attributes:

{ f1, v1 }: (u,v) ( nx, ny, nz )

{ f2, v1 }: (u,v) ( nx, ny, nz )

Geomorphs

In order to perform smooth visual transitions between different levels
of detail geomorphs can be performed. The ancestor vertex of a set of vertices
is determined and all vertices are interpolated between ancestor and destination
position.

Figure 9: Ancestor tracking for geomorphs

Relation to Geometry Compression

Normally multiresolution representations need more space than a single
resolution, because not only the original mesh needs to be stored, but
also additional information for all other levels of detail.

However, if the only mesh stored in its entirety is the lowest-resolution
mesh and all other levels are stored as deltas from the base-mesh it can
also be used for compression: delta encoding. At least, the storage requirements
of a multiresolution representation need not be higher than storing a high-resolution
mesh.