Generalized Adaptive Refinement for Grid-based Hexahedral Meshing

This is the code we used for the experiments in the paper "Generalized Adaptive Refinement for Grid-based Hexahedral Meshing" by L. Pitzalis, M. Livesu, G. Cherchi, E. Gobbetti and R. Scateni (ACM TOG, SIGGRAPH Asia 2021).

New: Try our Online Demo! 😊

Dependencies

This project is built on top of some external libraries. Make sure to have them installed on your machine before proceeding with the building process. In addition to Cinolib, which is already a submodule of this repository, it is necessary to install Gurobi for ILP resolution and CGAL for the computation of the Shape Diameter Function (SDF). Follow the instructions at this link to install Gurobi and run the following command to install CGAL:

MacOS

brew install cgal

Linux

sudo apt-get install libcgal-dev
⚠️ WARNING: FindGUROBI.cmake is configured to search for gurobi 9.1.x versions. Please edit the "gurobi91" entry in FindGUROBI.cmake if you have a different gurobi version installed on your machine

Building

Clone this repository, including submodules, with:

git clone --recursive https://github.com/cg3hci/Gen-Adapt-Ref-for-Hexmeshing.git

Build the executable by running the following commands:

cd Gen-Adapt-Ref-for-Hexmeshing 
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=<build type> ..
make

Usage

You can generate a paired and balanced grid starting from a triangle mesh by running the following command:

./make_grid --surface --input_mesh_path=your_input_mesh.obj --output_grid_path=grid.mesh

Look at the available customizable options with:

./make_grid --help

Citing us

If you use our code in your academic projects, please cite our paper using the following BibTeX entry:

@article{PLCSG21,
  title   = {Generalized Adaptive Refinement for Grid-based Hexahedral Meshing},
  author  = {Pitzalis, Luca and Livesu, Marco and Cherchi, Gianmarco and Scateni, Riccardo and Gobbetti, Enrico},
  journal = {ACM Transactions on Graphics (SIGGRAPH Asia 2021)},
  year    = {2021},
  volume  = {40},
  number  = {6},
  doi     = {https://doi.org/10.1145/3478513.3480508}
}