/intrinsic-simplification

Surface Simplification using Intrinsic Error Metrics

Primary LanguageC++MIT LicenseMIT

Surface Simplification using Intrinsic Error Metrics

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]

Installation

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.

Layout

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.

Compilation

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

Citation

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