Surface Simplification Using Quadric Error Metrics
Many applications in computer graphics require complex, highly detailed models. However, the level of detail actually necessary may vary considerably. To control processing time, it is often desirable to use approximations in place of excessively detailed models. We have developed a surface simplification algorithm which can rapidly produce high quality approximations of polygonal models. The algorithm uses iterative contractions of vertex pairs to simplify models and maintains surface error approximations using quadric matrices. By contracting arbitrary vertex pairs (not just edges), our algorithm is able to join unconnected regions of models. This can facilitate much better approximations, both visually and with respect to geometric error. In order to allow topological joining, our system also supports non-manifold surface models
conda create --file requirements.txt --name viz python=3.9 -y
conda activate viz# NOTE try pip3 if that doesn't work on Mac OS Catalina or later.
pip install -r requirements.txtpython src/main.py \
--simple-pair-selection \
--n-contractions 1 \
models/icosahedron.ply- citation-2417323.bib: BibTEX citation for original paper downloaded from ResearchGate.
- quadrics.pdf: Original CMU paper, for convenience.
- cow.obj: Original 3D cow model from the original paper.
- garland_heckbert.py: Main file for the alorithm implementation.
python scripts/viz_cow.py- Tips for writing mesh code in Python can be found here.