This project implements the seam-aware decimation portion of our SIGGRAPH Asia 2017 paper Seamless: Seam erasure and seam-aware decoupling of shape from mesh resolution. Seam-aware decimater simplifies a mesh while preserving its UV's boundary. It allows the same texture to be used across all decimation levels—notably along seams.
Our seam-aware decimation allows seamless texture reuse at all decimation levels (here, approximately 1%). Seams on the original model are shown in purple. Parameterizations are shown inset. Garland and Heckbert [1998] (implemented by MeshLab [Cignoni et al. 2008]) do not preserve seams precisely, leading to artifacts in the texture. Red areas near seams in the inset parameterization indicate this deviation in the parametric domain. Maya [2017] prevents decimation of seams entirely, leading to suboptimal allocation of mesh vertices.
This project uses C++ 11, and it depends on:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
./decimater ../models/animal.obj percent-vertices 50
./decimater ../models/animal.obj num-vertices 1000
Note: this library only works on triangle mesh.
The Animal model is decimated to 3% of its original number of vertices. The boundary of its UV parameterization stays.