Implemented a shape matching algorithm in Houdini using VOP. This is based on "Meshless Deformation Based On Shape Matching" (Müller et al., 2005).
Given a set of non-connected point cloud, the algorithm fits the original geometry into it in the best way possible.
The most involved part in the algorithm is finding the square root of a symmetric matrix. It's interesting to know that Houdini has a VOP that returns the eigenvalues of a matrix, but not their corresponding eigenvectors :( The eigenvalues and eigenvectors would have been useful in transforming the matrix into a diagonal matrix in another basis and thus making the square root easy to calculate. Used the Denman-Beaver iteration in the end instead and it seems to work pretty well.
This is just the first part - shape matching. What's left to be done is to use this shape-matched geometry as a goal for each vertex for soft body deformations, using the unconditionally stable integration method mentioned in the paper.
[ Houdini 11 ]