Если вам известна матрица вида модели, вы можете найти кватернион, однозначно представляющий ваше вращение.
Вот ссылка с формулой для вычисления кватерниона из матрицы вращения http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm
РЕДАКТИРОВАТЬ:
Если у вас есть 2 матрицы вида модели для вашего объекта и вы хотите плавное перемещение из одной позиции в другую, вы все равно можете использовать кватернионы!
Пусть у вас есть 2матрицы w1
w2
.Для каждой сборки кватернионов q1
и q2
с использованием существующих формул - это просто.Создайте анимацию так:
на каждом шаге анимации создайте текущий кватернион для поворота объекта:
allTransform = q2 - q1
currentTransform = q1 + t*allTransform
, где t
от [0, 1]
, allTransform - это кватернион Когда вы знаетеcurrentTransform
кватернион строит из нее матрицу представления модели - просто используя готовую формулу.
Это даст приятную и плавную анимацию.