6. Jitter Reduction using Time Prediction
Now, our client
animation system is fed with property (especially position) updates
that, at a given time, are more frequent for certain entities than
for others. Actual animation of entity is interpolated between the
received position updates, starting with a delay, and the movement
speed is set so that the client has already received at least one
position in advanced when the entity is displayed at an updated
position.
This would be easy
with a constant update frequency. However, to allow smooth movement
of a particular entity, the time control of movement animations has
to withstand frequency changes in the feeding data. If the entity has
not received the next position, it will be forced to stop their
course and probably will have to jump to next position once it is
received – this is what we try to avoid.
Thus we need to anticipate
frequency changes, to adjust the movement speed in advance. We
compared various algorithms to do so.
Statistical Prediction of Position
Update Frequency
A test bench was developed to simulate various movement cases, and
measurements of the update frequency were done on a simulated client.
Then several prediction formulas were computed from the latest
received data, in order to adjust the movement speed using a
predicted interval that should be, most of the time, slightly greater
than the actual update interval. While our early scoring attempts
were OK, we browsed some research papers to benefit from theoretical
works.
Voice-over-IP
technology was found to have similar challenges: in this case the aim
is to transmit a sound with the smallest possible lag, avoiding voice
cuts [Moon-Kurose-Towsley]. Then we adapted an algorithm from a
research paper [Kansal-Kandikar], which proved more efficient than
our first attempts (Figure 7).
|