The topic of interpolation is ubiquitous in Houdini with SOPs like eg. AttributeTransfer, PointDeform, VDBfromPolygon or AttributeBlur (proximity) posing as essential parts of it’s toolkit. These operators usually follow the same scheme: For every target point find all source points within a radius, fetch the needed attribute values and weigh them by their inverse distances. So the closer a source point the more influence it’s value will have. This method is known as inverse distance weighting or IDW and very common, it can be multithreaded easily and is pretty fast.
Radial basis function interpolation works similarly, but instead of just checking within a radius, all the source points are considered. So its defining a continuous space (of distances) rather than just looking at a subset of data, hence it produces very smooth values even with sparse point clouds as a source.
In the following example we’re going to interpolate a vector to deform a mesh, but you could use any other type. It could be a transform matrix, an orient quaternion, a color vector…there are many other useful applications for this interpolation method.
Tommy getting some @Cd complemented by well-behaved medium squabs (@orient)
For further reference have a look at Hunter Williams’ blog which features a great roundup of multiple interpolation methods, including RBF. It finally inspired me to do this implementation. Wikipedia is, as always, another great source.
That being said, let’s start building our RBF deformer!