Hexahedral meshing based on 'SRF' approach.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Hex Machina

Python implementation of the SRF approach to hexahedral meshing. (Work in Progress)

Couldn't load picture.


  • The final volume parametrization step is not working (linear mixed-integer CG).
  • Edge collapse adjustments need to be implemented.
  • Move numerical optimizations to CUDA.
  • Back-propagation to compute gradients in L-BFGS, hopefully improve runtime.
  • Maybe run additional smoothing on surface cross-field.


Inputs : Triangle mesh as .stl (binary)

Given an input triangle mesh, a tetrahedral mesh is generated (using TetGen) and its boundary surface is extracted. The vertex-based curvatures and normals of the boundary surface are computed, as well as other topological information. A 3D frame is initialized at the centroid of each tetrahedron. The frame field smoothness is optimized by minimizing a non-linear energy function, solved using the efficient L-BFGS method. Moreover, some case-by-case adjustments are made to ensure the field is singularity-restricted. After the optimization, a volume parametrization is fit to the framefield as an atlas of linear maps defined on the vertices, using a CG (Conjuate Gradient) method. The hexahedral mesh is extracted based on the integer isosurface intersections.

Outputs: Saved to disk as .vtk files, which can be viewed in Paraview. This includes tetrahedral mesh, curvature cross-field, optimized 3D frame field, singular graph and the hexahedral mesh.

State of the Art

A non-exhaustive list of papers that inspired this implementation.

Volume parametrization

Boundary parametrization


Python 3, and set up other dependencies with:

pip install requirements.txt