Progressive meshes project (csc570)
Michael Wagner
Introduction
"Progressive Meshes" by Hugues Hoppe presents a way to simplify a mesh. This technique involves simplifying to a "base mesh", and recording how the reductions were made by using "vsplits". Together, a base mesh and a series of vsplits constitutes a progressive mesh.
The program offered here converts a mesh into a progressive mesh representation. Also, it allows the user to specify what percentage of the original (that is, what percentage of the original number of vertices) is desired for the base mesh. The file format used is the simple .m, which is vertices followed by faces. The file format is as follows:
Vertex [1] [x] [y] [z]
...
Vertex [m] [x] [y] [z]
Face [1] [vertex reference] [vertex reference] [vertex reference]
...
Face [n] [vertex reference] [vertex reference] [vertex reference]
The file format outputted by this project, is the same as the .m representation but appended to the bottom are the vsplit records. The vsplit records are encoded as 3 vertices: the first and second are vertices that need to be added. The third is the vertex that will be replaced with the first two. A vsplit entry looks like:
Vsplit [vx1] [vy1] [vz1] [vx2] [vy2] [vz2] [vx3] [vy3] [vz3]
Download:
To use this program:
Command promptt>MeshSimplification
Usage: MeshSimplification [source .m file] [new file name] [percentage of
source]
For example, say we want to convert a file named example.m to a progressive
mesh.
Also for the base mesh, we want it to have 60 percent of the vertices. Just
type,
MeshSimplification example.m example.pm .6
Note: use 0.0 for [percentage of source] to reduce as far down as possible
Results
The test mesh
The original
After simplification...
C:\Documents and
Settings\Mike\Desktop\Project>MeshSimplification test.m test.pm 0.0
This mesh has 10 vertices, 19 edges, and 10 faces.
Reducing to base mesh m0...
It now has 8 vertices, 13 edges, and 6 faces.
Created test.pm
Writing out vertices... done!
Writing out faces... done!
Writing out vsplit records... done!
Input: test.m
Output test.pm
The Cessna
The original
After simplification...
C:\Documents and
Settings\Mike\Desktop\Project>MeshSimplification cessna500.m cessna.pm 0.0
This mesh has 272 vertices, 750 edges, and 500 faces.
Reducing to base mesh m0...
It now has 44 vertices, 66 edges, and 44 faces.
Created cessna.pm
Writing out vertices... done!
Writing out faces... done!
Writing out vsplit records... done!
Input: cessna500.m
Output cessna.pm
The gargoyle
The original
After simplification
Command Prompt>MeshSimplification
gargoyle500.m gargoyle.pm 0.0
This mesh has 252 vertices, 750 edges, and 500 faces.
Reducing to base mesh m0...
It now has 4 vertices, 6 edges, and 4 faces.
Created gargoyle.pm
Writing out vertices... done!
Writing out faces... done!
Writing out vsplit records... done!
Input: gargoyle500.m
Output gargoyle.pm
The fan disk
The original
After simplification...
C:\Documents and
Settings\Mike\Desktop\Project>MeshSimplification fandisk_10k.m fandisk.pm 0.0
This mesh has 6475 vertices, 19419 edges, and 12946 faces.
Reducing to base mesh m0...
It now has 4 vertices, 6 edges, and 4 faces.
Created fandisk.pm
Writing out vertices... done!
Writing out faces... done!
Writing out vsplit records... done!
Input: fandisk_10k.m
Output fandisk.pm
The dragon
The
original
After simplification...
Command Prompt>MeshSimplification
dragon10k.m dragon.pm 0.0
This mesh has 4960 vertices, 15000 edges, and 10000 faces.
Reducing to base mesh m0...
It now has 122 vertices, 486 edges, and 324 faces.
Created dragon.pm
Writing out vertices... done!
Writing out faces... done!
Writing out vsplit records... done!
Input: dragon10k.m
Output dragon.pm
References
1. "Progressive Meshes", Hugues Hoppe, SIGGRAPH, 1996
2. "Zoe Wood's website", Zoe Wood, csc.calpoly.edu/~zwood