Kalman Filters and B-Spline Interpolation applied to 3D Sign Vectors
Raw coordinates. Stretching occurs when subject size changes. Jitter occurs from low FPS.
// Absolute XY applied directly
Arm_X = MediaPipe_X * CanvasWidth
Arm_Y = MediaPipe_Y * CanvasHeight
// Stretches Avatar completely!
// Jitters wildly on packet loss.
Vector Normalization prevents stretching. Splines provide 100% smooth easing.
// 1. Vector Normalization
v_dir = (Bone_End - Bone_Start).normalized()
// 2. Kalman Filtering
Est_State = Predict(Prev_State)
Updated = Update(Est_State, New_Measurement)
// 3. Easing (Spline Interpolation)
Curr_Pos += (Target_Pos - Curr_Pos) * 0.15