RBF Interpolation.

Technical Exploration

Interpolation is the process by which we can estimate, or approximate values given a set of known values.

why should I care?

         It’s not important to know everything about these concepts in order to create amazing visuals, but it can help to broaden our understanding so that we can more easily create and implement complicated techniques down the line. It will also help us to troubleshoot when things aren't looking the way we expected. Houdini and other graphics processing platforms heavily utilize interpolation in many of its operators and processes and is an extremely common process for computer graphics processing, 

        While discussing these concepts,

lets take the example of this line with

moving points.

       As an example in Houdini, the resample SOP exploits many types of interpolation and is used to generate new point positions that lie between surrounding input points. The key defining factor of interpolation is that it creates new data (new points) based off an arbitrary set of input data (input points/ polyline). Subdivision, smooth, polyreduce, point deform, divide, scatter – these are only a few of the many nodes that also heavily rely on this concept.

so....what is RBF?

          Radial Basis Function (RBF) interpolates data based solely on the distances between input data by creating weights associated with values. It is generally more computationally heavy than IDW approximation for large data-sets, but also produces extremely smooth and more visually consistent results, without much tweaking. Additionally it does not produce as much visual artifacting as other methods

rbf interpolation of new input points

point deform interpolation of new input points

           RBF also allows for space warping, which effectively deforms the coordinate system of input geometry.  This is because RBF weights every input point regardless of how far or near it is to include in our interpolation solve, whereas IDW only weights points within its distance or max point threshold. Therefore we can think of the resulting interpolation as bending space because every real-valued input point is deformed to a new deformed coordinate-space.

rbf interpolation of new input points(space warping) 

point deform interpolation of new input points

         RBF is used extensively in pose-morph deformation weighting as it can create very smooth weighting schemes for arbitrary input data. Each distance is run through a basis function (such as cubic) and inherits a linear sum of weighted deformation values. We can see the weights below by running color through our basis function.

rbf weights

rbf weights

other interpolation?

There are many type so interpolation used in computer graphics, but a few basic ones:

Linear interpolation (bilinear and trilinear) – creates a linear function that describes the relationship between two points of data, repeated for the amount of dimensions needed.

Polynomial interpolation (spline) – creates a polynomial function that describes a line that moves through all input data points. Input values can be run through a basis function that can adjust curve profiles (linear, cubic, etc).

IDW approximation – inverse distance weighting; this averages surrounding weighted values relative to input data’s proximity to surrounding points

            Houdini also makes it very easy to exploit interpolation without knowing it with the multitude of SOPs that utilize the method. However, through Houdini’s many vex functions we have direct access to interpolation functions that we can use for any amount of input data. Here are a few:

  • Lerp(), slerp()

  • Spline(), lkspline(), spline(), etc

  • Fit(), efit(), fit01(), etc

Lets get technical.