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.

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.

Wow, this is super useful!

May I have a file to study?

LikeLike

Unfortunately I can’t share the file but I’m always willing to help if you’re going for an implementation.

LikeLike

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

LikeLike

It’s just standard SOPs and a bunch of wrangles. I’ve attached an example file.

https://drive.google.com/open?id=0By9c7CX4X0HAaXZUS0JvQy1oN2s

LikeLike

Ah, that’s very helpful, thank you!

LikeLike

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!

LikeLike