The Radial Basis Function Solver allows to interpolate an input in a system defined by Poses. Each pose describes a Key and a Value so the concept is similar to the DrivenKey.
But a regular DrivenKey has one dimensional Keys and one dimensional Values.
Basically each Key is a Float, and its Value is a Float.
The RBF solver has N-dimensional Keys and M-dimensional Values.
It simply means that Keys can be anything, and Values can be anything.
The cheapest way to interpolate Corrective Shapes/Joints or anything !
This is a Python implementation without any dependency,
Sample Scenes are included.
.nInput: the input sliding between the pose keys, it is N-dimensional
.state: bool, enable that pose or not
.nKey: the key of that pose, N-dimentional
.mValue: the value of that pose, M-dimensional
.mOutput: the output M-dimensional
Euclidian or Angular* distance based. *only for N=2or3
Interpolation functions are Linear, Gaussian, Multiquadratic, Cubic, Inverse Quadratic, Inverse Multiquadratic.
BlendShapeMode insure the non-negativity of the Outputs to be plugged in BlendShape weights.
Demo here :