Interactive Viewing Of Multi-Resolution Meshes

Multi-Resolution data representations are useful but how do you determine what to render?

Rendering is a **view dependent** operation while construction of multi-resolution data structures are not constructed for particular views.

Unlike the off-line generation multi-resolution data structures, what to render is an **on-line** operation.

- Also how to use Multi-Resolution data for other viewing operations.

Simple Solution: Global Metric

Distance to Object / Performance.

Use a basic metric to determine at what level to display the data. Typically**, Distance from Object Center** or **Rendering Performance.**

- Benefits:

- Trivial to implement.
- Fast test.
- Provides correct results for most simple models.

- Problems:

- Modeler has to provide the input.
- Wasting information such as providing high resolution for entire surface when only part of it is visible.
- Metric is global which wont work for non-convex models, like a Grand Canyon mesh.
- Not much different then providing separate than models for different levels of detail.

- Usage:
**Everywhere**(Cosmoworlds ....)

A Better Solution:

Progressive Meshes

Hugues Hoppe, Microsoft Research

- Taking advantage of viewing conditions for that rendering can improve quality of rendering.
- Only use high level of detail when needed to by the view orientation.

**Basic idea**: Compute a multiresolution data structure off-line and traverse each part of the graph according to a metric which is applied locally to the model.

Multi-Resolution data structure is implemented with a vertex tree, defined by edge collapses and vertex splits.

Progressive Meshes

Implementation

Which cuts of the vertex mesh to display?

Metrics: **Orientation**, **View Frustum**, **Pixel Error**

- Orientation: Don't split the vertex if pointed away from the viewer.
- Frustum: Don't split the vertex if outside of the view.
- Pixel Error: Don't split, if resulting vertexs result in a screen space difference less than a defined tolerance (like 0.5 pixels). Can be preprocessed to require minimal math in actual tree traversal.

Traversing the tree can be done from the base mesh until the "vertex front" is established.

Temporal Coherence in Progressive Meshes

Also to improve performance, temporal coherence can be used by modifying the current vertex list to the next vertex list, instead of generating from the base mesh.

Progressive Meshes Results

Works great for large meshes like terrain data where global metrics can't

Does require large pre-computing times and data files, but traversing can happen quite fast.

Can be used to prevent popping with **geomorphs**.

Other Methods: Wavelet Approach.

Basic Idea: Treat the viewed model as an approximation, which can be updated with wavelets.

Implementation: Send a base mesh. Send wavelet additions until desired level of detail is achieved.

- Benefits:
- Very simple base mesh.
- Mathematical representation can compress the mesh.
- Problems:
- Need a triangulation algorithm
- Wavelet math is not trivial.
- Doesn't use the viewing orientation.

Wavelet Results

- Browser viewer download times
- Can used to generate color as well.