Интерполяционное вращение вокруг оси - кватернионы и slerp vs линейная интерполяция углов - PullRequest
1 голос
/ 28 мая 2019

Я делаю простую 3d-игру, в которой несколько лодок сталкиваются и меняют направление, чтобы избежать друг друга.

Часть обработки столкновений строится вокруг подпрыгивания и последующего незначительного отклонения направления движения (лодка A ударная лодка B, A отскакивает назад, затем поворачивается, скажем, на 10 градусов влево и возобновляет движение)

Пока что я только что обновил направление движения, которое выглядит немного резким. Я намерен интерполировать из старого заголовка в новый. Это очень просто, заголовок всегда просто угол вокруг одной оси. Таким образом, в основном он идет от 90 градусов до 110 градусов.

Я знаю кватернионы и сперму, которые давали бы мне постоянную скорость (мое вращение должно быть гладким и шелковистым). Но я просто чувствую, что кувалдой нужно убить муху. Что на самом деле является следствием простой ванильной линейной интерполяции от 90 до 110 для угла поворота? Будет ли даже визуально заметно, что я использовал кватернионы вместо гораздо более простой и гораздо более дешевой линейной интерполяции значений углов? У меня нет специальных важных «ключевых кадров», которые нужно нажимать - «анимационных данных» нет вообще, 3d-модели статичны.

Поэтому, если бы кто-то мог пролить свет на возможные проблемы, с которыми я мог бы столкнуться, если бы я просто интерполировал градусы вращения вместо использования slerp, это было бы очень полезно.

Спасибо / Jim

...