Computing curve skeletons of 3D shapes is an important tool in computer graphics with many different applications for shape analysis, shape matching, character skeleton construction, rigging and many more. It’s an active field of research and over the years, numerous algorithms have been developed. Most of these algorithms are based on mesh contraction using smoothing or thinning. Another popular approach is to use the voronoi diagram generated by the points of the mesh. Quite an interesting alternative, however, is to rely on spectral analysis for computing the skeleton. The idea is fairly simple and works as follows:

  • Compute the first non-zero eigenvector of the Laplace-Beltrami operator, namely the Fiedler vector.
  • Compute contour lines based on the Fiedler vector
  • Find the center point for every contour
  • Fit curves to the points




  1. Is it possible to generate the countour/isolines from Houdini’s built-in tools, or is that also custom-made? Thanks!


  2. Amazing!
    I have wanted to solve this problem for such a long time, of creating an automated “skeleton”, but never understood how to implement it.

    “Compute the first non-zero eigenvector of the Laplace-Beltrami operator, namely the Fiedler vector”

    Would you need special libraries for this step or is it possible to use houdini vex/volume combinations to create the Fiedler vector field?
    As I understand Laplace-Beltrami operations is just computing the Laplacian of the geometry. Would it be possible to use the Laplacian field from the VDB analysis and later use it to get the first non-zero eigenvector ?
    My math knowledge is limited, I have looked at the eigenvalues and eigenvectors, but I find it difficult to understand how to use them practically, on actual geometry.

    Any help is greatly appreciated!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s