Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

realtime latency-free easing

Приведу тут несколько задач. Никто так не делает™, а мне хочется.

Дано: мышь обновляется 200 раз в секунду, экран - 60 раз. Мы хотим правильно™ перетягивать объекты по горизонтали.

Начнём с простого. Допустим, (1а) мышь перемещается идеально равномерно по столу. Надо обеспечить, чтобы Х-координата курсора мыши на экране совпадала с координатой перетягиваемого объекта.

Интересно, что это весьма нетривиальная задача. Скажем, если (2а) никакой реальной мыши нет, а нам надо просто анимацией изобразить, что кто-то равномерно перетаскивает, задача значительно упрощается.

В-общем, визуально наивное решение (1а) отличается от точного решения (2а) довольно сильно. Даже если опустить граничные условия (начало и конец движения).

Проблема известна в обработке сигналов как causal vs not-causal filters. По идее, этим (компенсацией разнообразных отставаний) должны заниматься разрабы мультиплеерных игр и теоретики теории управления, но я что-то не нашёл ничего по теме.

Задача Б - это задача А плюс начало и конец движения. Даже если реальная мышь идеально следует easing-кривым, 2Б всё равно оказывается практически неразрешимой.

В задачах "В" указатель как-то перемещается человеком. В задаче 3В нужно по известной трассе (списку пар "время-координата") построить анимацию, которая была бы максимально близка к трассе, но в то же время была гладенькой и приятной для глаз. В задаче 3А требуется делать то же самое в реалтайме.

В принципе наверное можно собрать обучающую выборку трасс и построить по ней предсказывающую модель. Трудность будет в граничных условиях - т.е. при торможении указателя объект будет его обгонять, и нужно обеспечить возвращение объекта из ошибочно предсказанной в реальную конечную позицию без рывков

Upd литература по теме: Mouse Pointing Endpoint Prediction Using Kinematic Template Matching. Там же ссылки на prior art

Upd2 вопрос по компенсации лага мыши на SO (без ответов)

Upd3 вопрос о природе лага мыши на SO (без нетривиальных ответов)
Tags: programming
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 27 comments