Оптимизация преобразований для скелетной анимации - page 4

С.А. Ивлиев
,
А.А. Павельев
,
Н.Ю. Рязанова
4
Для решения задачи скелетной анимации предлагается использо-
вать комбинированное решение: задавать преобразования набором —
кватернион, коэффициенты масштабирования и перенос, а хранение
и преобразование выполнять в виде матрицы перехода.
Кватернион представляет собой пару
( , )
a u
r
где
u
r
— вектор
трехмерного пространства,
а
— скаляр. Для кватернионов операции
сложения и умножения определяются следующим образом:
( , ) ( , ) (
,
)
a u b v a b u v
+ = + +
r
r
r r
,
( , )( , ) (
,
)
a u b v ab u v av bu u v
= − • + + ×
r r
r r r r r r
,
где
— обозначает скалярное, а
×
— векторное произведение.
Кватернионы можно также определить и как вещественные мат-
рицы следующего вида:
a b c d
b a d c
c d a b
d c b a
− − −
⎟−
− ⎝
.
При такой записи: сопряженному кватерниону соответствует
транспонированная матрица
T
q Q
.
Кватернион, обратный по умножению к
q
, вычисляется как:
1
2
q q
q
=
, где
2 2 2 2
q qq a b c d
= = + + +
, а кватернион
=
a
bi
cj
dk
называется сопряженным к
q
.
Допустим (
w
,
x
,
y
,
z
) — координаты вращения. Тогда кватернион
q
= (
w
,
x
,
y
,
z
) можно определить как
α
α
ω
ω ( , , ) cos
sin ,
2
2
q
xi yj zk
x y z
u
⎛ ⎞
⎛ ⎞
= + + + = +
=
+ ⎜ ⎟
⎜ ⎟
⎝ ⎠
⎝ ⎠
где
u
— единичный вектор. Таким образом, произведение
qvq
–1
вра-
щает вектор
v
на угол
α
вокруг оси
u
[3]. Вращение происходит по
часовой стрелке, если рассматривать его по направлению вектора
u
.
А само преобразование над
v
r
можно записать как
1
α
α
α
α
cos
sin cos
sin .
2
2
2
2
v qvq
u
v
u
⎞ ⎛
= =
+
⎟ ⎜
⎠ ⎝
r
Кватернион описывается структурой:
1,2,3 5,6,7,8
Powered by FlippingBook