Public code release for Surface Simplification using Intrinsic Error Metrics. For more details, please refer to:
Surface Simplification using Intrinsic Error Metrics
Hsueh-Ti Derek Liu, Mark Gillespie, Benjamin Chislett, Nicholas Sharp, Alec Jacobson, Keenan Crane
ACM Transaction on Graphics (Proceedings of SIGGRAPH 2023)
[Preprint] [ArXiv]
To get started, clone this repository recursively
git clone --recursive https://github.com/HTDerekLiu/intrinsic-simplification.git
so that you will also clone our dependencies, libigl and polycope. On all platforms, we assume you have installed cmake and a modern c++ compiler on Mac OS X, Linux, or Windows.
The main folder contains separate examples that demonstrate some core functionalities and typical usage of our code. All of them have a similar directory and file layout:
cmake/
CMakeLists.txt
README.md
main.cpp
00_coarsening/
: a minimal example to demonstrate how to use our intrinsic simplification.01_prolongation_scalar/
: constructs a prolongation operator for scalar functions (Section 7.2), alongside a Laplace matrix and mass matrix on the simplified mesh.02_mixture_quantities/
: shows how our method can mix and match different quantites for coarsening (Fig. 11)03_visualization/
: shows how to visualize the intrinsic triangles sitting atop the original fine mesh (Fig. 15)04_multigrid/
: shows how to use our intrinsic coarsening to construct a Galerkin multigrid solver, following the technique presented in Surface Multigrid via Intrinsic Prolongation (SIGGRAGH North America 2021)05_prolongation_vector/
: constructs a prolongation operator for vector fields (Section 7.3), alongside a connection Laplacian matrix and vector mass matrix on the simplified mesh.06_delaunay_refinement/
: shows how our method can be combined with intrinsic Delaunay refinement (Section 6.3), either before or after simplification, to obtain higher quality triangulations.
And they share a common src
folder for source code and a meshes
folder for input meshes.
We provide compilation guide for each example in its corresponding folder. In general, one should be able to compile our code with the common cmake/make routine, such as
cd 00_coarsening
mkdir build
cd build
cmake ..
make -j8
and then run
./main
If this code contributes to academic work, please cite as:
@article{Liu:2023:SSI,
author = {Liu, Hsueh-Ti Derek and Gillespie, Mark and Chislett, Benjamin and Sharp, Nicholas and Jacobson, Alec and Crane, Keenan},
title = {Surface Simplification Using Intrinsic Error Metrics},
journal = {ACM Trans. Graph.},
volume = {42},
number = {4},
year = {2023},
publisher = {ACM},
address = {New York, NY, USA},
issn = {0730-0301},
url = {https://doi.org/10.1145/3592403},
doi = {10.1145/3592403},
month = {jul},
articleno = {118},
}