SeamAwareDecimater
Mesh simplification with UV's boundary preserved
Install / Use
/learn @songrun/SeamAwareDecimaterREADME
Seam-aware Decimater
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. <img src = "results/blub_representative.png" width="100%">
Requirements
This project uses C++ 11, and it depends on:
Compile this project
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
Run this project
./decimater ../models/animal.obj percent-vertices 50
./decimater ../models/animal.obj num-vertices 1000
Note: this library only works on triangle mesh.
Various strictness
Seamless criteria is even stricter than UV shape preservation. I add a "strictness" parameter to satisfy different requirements. Strictness could be 0, 1, or 2. Strictness 0 means no UV shape is preserved, but UV parameters is still part of the metrics. Strictness 1 means UV shape is preserved. Strictness 2 means seam aware decimation which also considers the length ratio criteria. It works like this:
./decimater ../models/animal.obj percent-vertices 50 --strict 1
./decimater ../models/animal.obj num-vertices 1000 --strict 1
The default strictness is 2.
Example
The Animal model is decimated to 3% of its original number of vertices. The boundary of its UV parameterization stays. <img src = "results/extreme_decimation.001.png" width="100%"> <img src = "results/strictness.png" width="100%">
Related Skills
node-connect
341.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.6kCommit, push, and open a PR
