Extensions:Uni-Verse/Progressive Reduction
Introduction
The progressive reduction library is based on a progressive compression method described in [1] and [2]. The progressive reduction reduces the triangles in meshes based on an error metric for visual purposes. The process of removing triangles and the information on the triangles is saved in a list to be able to rebuild the original mesh from that information. This is a standard approach like it is realized in other progressive compression systems as well. The reduction library was developed using C++. It has no dependencies on other libraries except the standard C++ libraries and can therefore easily be integrated in other applications
Error Metric
The error metric included is mainly vertex based. Every vertex gets a priority that is calculated using the surrounding geometric attributes. The decision which vertex will be removed or not later in the reduction process is based on these priorities. If the priorities are calculated, the vertices with high priority are removed using half edge collapse method. In every simplification step all vertices with low priority will be removed. The description of the removed vertices and their surrounding topology are saved in a progressive list. When the simplification is complete the execution of the list in reverse order will reconstruct the original geometry step by step.
References
[1] J. Sahm, I. Soetebier, and H. Birthelmer. Efficient representation and streaming of 3d scenes. Computer & Graphics, 28(1):15–24, 2004. [2] I. Soetebier, I. Birthelmer, J. Sahm, and V. Luckas. Managing large progressive meshes. Computer & Graphics, 28(5):691–701, 2004.