A python dictionary is actually quite a good way to explain the core concept. There are keys and values, for instance lets say our keys are numbers from 1 to 5, and our values are 1115.
keys

1

2

3

4

5


values  11  12  13  14  15 
Notice how they match in length. Now we want to interpolate the keys based on the values. Interpolate 13 on the keys. Quite easy as its literally just going to the keys and seeing the number 3. This could work for any range, all we have to do is remap the values right? So if keys are 01 and values are 100200 then it should look like this:
keys

0.0

0.25

0.5

0.75

1.0


values  100  125  150  175  200 
That is a super simplified example based on 1D input data. Now for an RBF node we may want to interpolate positions based on rotations. As example we have 3 rotations and 3 positions.
rotations

90,0,0

0,90,0

0,0,90


positions  1, 0, 1  1,0,1  1,0,1 
How do we find the interpolation of the rotation 45,45,45? Is it 0.5, 0, 0.5? Or is it 0.5. 0, 0.5?
If we try and calculate it with just standard arithmetic and as the input data gets increasingly complex you will see that there are in fact multiple solutions possible, there isn't just a single one. We do want to have a single solution though, the best possible interpolation between any number of elements. What if we have 500 rotations and 500 positions?
To find a single solution we essentially build matrices of the distances between all of our keys and our values and we use linear equations to solve this. Since we have 3 values in each, we will create a 3x3 matrix which will have the euclidean distance from each position to all the other positions.
We will then build another 3x3 matrix of the positions and solve the linear equation Ax=B where A is the matrix of position distances and B is the matrix of rotations. We are looking to find x here which is basically the weight of A contributing to form B and our ultimate solution. There are many python packages to solve linear equations out there and to be completely honest I haven't fully understood the math behind it, it is actually quite complicated but if you want to read up more about it then you can find plenty of information on Google about solving linear equations using LU Decomposition.
I made a quick video to demonstrate this node, written in Python. Towards the end of the video you can see the clavicle joint rotation driving some blend shapes. Hope you enjoy!
I made a quick video to demonstrate this node, written in Python. Towards the end of the video you can see the clavicle joint rotation driving some blend shapes. Hope you enjoy!