Opentrack: Фильтр Hamilton

Фильтр Hamilton. Что нового.

Фильтры в Opentrack применяются для сглаживания небольших непроизвольных поворотов головы и устранения дрожания выходных координат трекеров. Фильтры делают это достаточно хорошо, в случае, если угловое отклонение головы по Pitch от горизонтального положения не превосходит 20 градусов.

При бОльшем отклонении начинаются проблемы. Проблема заключается в том, что входные данные по Yaw, Pitch, Roll фильтруются независимо друг от друга, как координаты на географической проекции EPSG:4326 WKID:54001 PROJ.4:longlat .

На этом рисунке показаны сильно преувеличенные в размерах квадратные ПМЗ при независимой обработке координат (красные четырёхугольники) и круглые ПМЗ при обработке через сферическую интерполяцию (зелёные окружности), без учёта координаты Roll.


При независимой фильтрации угловых координат Yaw, Pitch, Roll получим квадратную плавающую мёртвую зону (ПМЗ) с квадратной областью сглаживания при Pitch = 0 (на экваторе), и треугольную ПМЗ с треугольной областью сглаживания в Зените и Надире при Pitch = +/-90 (на полюсах). У полюсов ПМЗ и область сглаживания получаются очень сильно сжатыми по горизонтали и до двух раз сжатыми по вертикали.

Даже при нулевом угле Pitch размер ПМЗ вдоль осей меньше размера ПМЗ по диагонали в 1,41 раза. Из-за этого обзор смещается вдоль осей проще, чем по диагонали.

При большом мгновенном повороте, например на 180 градусов по Yaw вблизи Зенита, сглаженный обзор пойдет по горизонтальной дуге, в то время как есть более естественная кратчайшая траектория через Зенит.

Название фильтра Hamilton намекает, что здесь не обошлось без использования кватернионов.

И действительно, в фильтре Hamilton входные координаты поворотов преобразуются в кватернионы, а входные координаты смещений преобразуются в векторы. Поэтому траектория сглаживания всегда проходит по кратчайшему пути, а все ПМЗ и области сглаживания для поворотов и смещений круглые, точнее сферические. Повороты и перемещения получаются более естественными. Полностью отсутствуют скачки обзора на границах +/-180 градусов.

Введена возможность увеличения сглаживания поворотов при зуммировании (при приближении головы к монитору, то есть при увеличении координаты Z). Это даёт возможность точнее прицеливаться и следить за удалёнными целями.


Установка фильтра Hamilton в Opentrack-2.3.11

Для установки фильтра Hamilton нужно скачать библиотеку opentrack-filter-hamilton.dll и скопировать её в папку Modules Опентрека. Проверено в версии Opentrack-2.3.11:

Скачать фильтр Hamilton : opentrack-filter-hamilton.dll



Настройки фильтра Hamilton.

Группы слайдеров Rotations и Positions отвечают за сглаживание и плавающие мёртвые зоны (ПМЗ) для поворотов и перемещений соответственно.

Группы Rotations и Positions состоят из одинаковых слайдеров:


  • Max distance: задаёт максимальный радиус сферической зоны сглаживания. Сглаживание максимально для медленных изменений и плавно уменьшается до нуля при быстром изменении положения за один кадр на Max distance.


  • Smoothing: показатель степени кривой сглаживания.

Уровни сглаживания Smoothing:

        • S = 0: Сглаживание полностью отсутствует.

        • S = 0,25: Сглаживание настолько малое, что даже незаметно.

        • S = 0,5: Сглаживание заметно только для медленных изменений ориентации.

        • S = 1: Линейное сглаживание, действует для малых и средних изменений ориентации.

        • S = 2: Квадратичное сглаживание, действует сильнее линейного, очень похоже на кривую сглаживания в фильтре Accela.

        • S = 4: Максимальное сглаживание четвёртой степени.


  • Dead zone: задаёт радиус плавающей мёртвой зоны. Внутри ПМЗ направление обзора остаётся неподвижным.

Группа слайдеров Zoom smoothing это изюминка фильтра Hamilton. При приближении головы к монитору степень сглаживания вращений будет увеличиваться пропорционально координате -Z. Это обеспечивает сверхплавное изменение направления обзора при большом увеличении и в то же время, обеспечивает быстрое изменение направления обзора при быстрых поворотах головы. По аналогии с "Относительными сдвигами" этот эффект можно назвать "Относительным сглаживанием".


  • Smoothing: показатель степени кривой сглаживания, который увеличивается при увеличении координаты -Z и складывается со степенью сглаживания поворотов, заданных слайдером Rotations:Smoothing.


  • Max Z: максимальное используемое значение выходной координаты -Z трекера (то есть это - максимальное используемое входное значение координаты -Z для фильтра Hamilton). Его нужно определить и задать из графика маппинга оси Z, как показано на скриншоте:

Чтобы настройки фильтра Hamilton сохранились в файле профиля, нужно не забыть нажать кнопку [ OK ].


Заключение

Все фильтры в Opentrack обрабатывают координаты трекеров перед вычислением значений кривых отклика по осям. Фильтр Hamilton выглядел бы ещё лучше после применения кривых отклика, чтобы входные координаты фильтра соответствовали полному обзору по всем осям на 360 градусов.

В полной мере преимущества этого фильтра проявляются в VR. В VR обычно применяются бОльшие углы поворота головы, по сравнению с игрой за монитором, так как в VR дисплей всегда перед глазами и поворачивается вместе с головой.

Фильтр Hamilton прошёл тестирование на форумах forum.il2sturmovik.ru и forums.eagle.ru. Фильтр получил хорошие отзывы и я отправил Pull request на GitHub: Add a new Hamilton filter #1108

28 июня 2020 Stanislaw Halik включил фильтр Hamilton в исходники Opentrack, в следующем релизе мы его обязательно увидим.


Удачи!


Opentrack