This code is adapted from Alec Jacobson's qslim implementation using libigl. My contribution in this codebase is merely adding the part where we use total curvature calculated by our TotalCurvatureCalculator to weight the quadric, so that fine details at highly curved regions are better preserved during decimation. Note that, the idea of curvature-aware mesh decimation is not my contribution. That contribution traces back to Anisotropic Polygonal Remeshing by Pierre Alliez et al. This repo is a simple showcase to demonstrate more accurate curvature calculator can help improve the performance of real-world applications, which serves as one validation for our paper.
Left: using the total curvature calculated by Libigl. Right: using the proposed TotalCurvatureCalculator.
Compilation of this codebase has been validated on MacOS.
Fetch the code with dependencies:
git clone https://github.com/HeCraneChen/curvature-qslim-mesh-decimation.git --recursive
Compile this project using the standard cmake routine:
cd curvature-qslim-mesh-decimation
mkdir build
cd build
cmake ..
make
Run:
./CurvatureQSLIM
@inproceedings{10.1145/3587421.3595439,
author = {Chen, Crane He},
title = {Estimating Discrete Total Curvature with Per Triangle Normal Variation},
year = {2023},
isbn = {9798400701436},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3587421.3595439},
doi = {10.1145/3587421.3595439},
booktitle = {ACM SIGGRAPH 2023 Talks},
articleno = {56},
numpages = {2},
location = {Los Angeles, CA, USA},
series = {SIGGRAPH '23}
}