curvature-qslim-mesh-decimation

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.

Screenshot 2023-09-22 at 4 52 50 PM

Left: using the total curvature calculated by Libigl. Right: using the proposed TotalCurvatureCalculator.

decimation_compare

Dependencies

  • STL
  • eigen for matrix data structures
  • libigl for mesh data structures and geometry processing tools

Compile and Run

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

Citation

@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}
}