Skelton2: skeleton modeling library
Skelton2 is a library for skeleton-based modeling.
There are two use cases:
- Build a scaffold for a skeleton made of line segments.
- Create an implicit surface with an anisotropic convolution field and generate a quad-dominant mesh of th surface by projecting a scaffold.
The skeletons are made of line segments or arcs of circle. There is no restriction on the topology of the input skeleton.
A scaffold is a quad-dominant mesh that tightly follows the structure of a skeleton made of line segments. Every quad on the mesh is associated to only one line segment. Skelton2 can generate scaffolds with the same number of quads around each line segment - regular scaffolds. Or, scaffolds that respects a group of symmetries of the underlying skeleton - symmetric scaffolds. Regular symmetric scaffolds are also possible.
For details on the scaffolding algorithm check out the following paper here:
Alvaro Javier Fuentes Suárez, Evelyne Hubert. Scaffolding skeletons using spherical Voronoi diagrams: feasibility, regularity and symmetry. Computer-Aided Design, Elsevier, 2018, 102, pp.83 - 93. doi:10.1016/j.cad.2018.04.016. hal:hal-01774909
Anisotropic convolution surfaces
With skelton2 the user can design a shape (made with line segments or arcs of circle) and then generate a surface around it. The surface is implicitly defined as an anisotropic convolution. An anisotropic convolution surface is defined by a skeleton piece plus radii and rotation information at the extremities. The output of the library is a quad-dominant mesh polygonization of the implicit surface. This mesh is obtained by projecting a scaffold onto the surface. Hence it follows the structure of the skeleton and has some polar-annular regions at the extremities of the model.
For details on Anisotropic convolution surfaces check out the following paper here:
TODO: add description on how to update the paths to the libraries
Clone and make directory called
build anywhere, then
cd build cmake <path/to/skelton> make -j4
- Qhull: Convex hull computations.
- GSL: Mathematical functions, mainly integration and root finding.
- GLPK: Linear programming.
- Eigen3: Linear algebra.
- Catch2: Unit testing (shipped with the library).
- We use the reentrant C++ interface of Qhull so be sure to include/build it.
- Eigen3 is a header only library thus only the path to the include folder of Eigen3 is needed.
- Catch2 is header only also, we include a copy of the library in the
testfolder. Update to newer version at your own risk.