ну принципы интерполяции не куда не денутся ... или я в блице давно не прогал
код интерполяции который обычно в irrlicht юзается
f32 dt = ( (timeMs-StartTime) * Speed );
s32 idx = static_cast< s32 >( 0.001f * dt ) % Points.size();
f32 u = 0.001f * fmodf( dt, 1000.0f );
p0 = Points[ clamp( idx - 1, Points.size() ) ];
p1 = Points[ clamp( idx , Points.size() ) ];
p2 = Points[ clamp( idx + 1, Points.size() ) ];
p3 = Points[ clamp( idx + 2, Points.size() ) ];
// hermite polynomials
f32 h1 = 2.0f * u * u * u - 3.0f * u * u + 1.0f;
f32 h2 = -2.0f * u * u * u + 3.0f * u * u;
f32 h3 = u * u * u - 2.0f * u * u + u;
f32 h4 = u * u * u - u * u;
// tangents
t1 = ( p2 - p0 ) * Tightness;
t2 = ( p3 - p1 ) * Tightness;
// interpolated point
p = p1 * h1 + p2 * h2 + t1 * h3 + t2 * h4;