Last week, we talked about Bezier curves and Bezier surfaces, as well as splines and how to compute those. Today, we're going to talk about Mesh Representation & Geometry Processing.

Let's start with a small example of an object made out of triangles. This is a very small mesh of triangles that compose an object - 12 triangles, with 8 vertices.

Let's start with a small example of an object made out of triangles. This is a very small mesh of triangles that compose an object - 12 triangles, with 8 vertices.

Larger objects have many, many more triangles. Google Earth has trillions of triangles!

Larger objects have many, many more triangles. Google Earth has trillions of triangles!

The topic that we're going to talk about today is Geometry Processing. Why do we want to do processing? Maybe we want to do some form of scan ⇒ process ⇒ print flow.


Three Types of Processing

We're going to look at three different types of processing: mesh unsampling, mesh downsampling, and mesh regularization.

Mesh Unsampling (Subdivision) - increase the resolution via interpolation.

Mesh Unsampling (Subdivision) - increase the resolution via interpolation.

Mesh Downsampling (Simplification) - decrease resolution while preserving shape & appearance.

Mesh Downsampling (Simplification) - decrease resolution while preserving shape & appearance.

Mesh Regularization - modify sample distribution to improve quality.

Mesh Regularization - modify sample distribution to improve quality.


Mesh Representations

First, let's look at how these meshes are stored at a data structure level.

Approach #1: Just store a list of triangles! This isn't the most space efficient, however. Lots of data is repeated, it's hard to traverse, etc.

Approach #1: Just store a list of triangles! This isn't the most space efficient, however. Lots of data is repeated, it's hard to traverse, etc.

Approach #2: List of points & indexed triangle. Sharing vertices reduces memory usage, and we ensure the integrity of the mesh (moving a vertex causes that vertex in all the polygons to move).

Approach #2: List of points & indexed triangle. Sharing vertices reduces memory usage, and we ensure the integrity of the mesh (moving a vertex causes that vertex in all the polygons to move).


Topology vs. Geometry

Topology - the same set of connectivity (e.g. how the points are connected).

These meshes have the same geometry, but a different mesh topology.

These meshes have the same geometry, but a different mesh topology.

These meshes have the same topology, but different geography.

These meshes have the same topology, but different geography.