Оптимизация преобразований для скелетной анимации
7
– максимум находится в нулевом столбце:
'
'
'
11 22 33
0,5
2 1
,
,
S
m m m X
S
= + − −
=
'
'
'
'
'
'
12
21
13 31
23 32
(
) / ,
(
) / ,
(
) / ;
Y m m S Z m m S W m m S
= +
= +
= +
– максимум находится в первом столбце:
'
'
'
'
'
12 21
11 22 33
0,5
2 1
,
,
,
m m
S
m m m X
Y
S
S
+
= − + −
=
=
'
'
'
'
23 32
13 31
(
) / ;
(
) / ;
Z m m S W m m S
= +
= +
– максимум находится во втором столбце:
'
'
'
'
'
11 22 33
13 31
2 1
,
(
) / ,
S
m m m X m m S
= − − +
= +
'
'
'
'
23 32
12 21
0, 5
(
) / ;
,
(
) / .
Y m m S Z
W m m S
S
= +
=
= +
Таким образом, матричные преобразования удалось свести к ква-
терниону.
Кроме использования комбинированного подхода к выполнению
графических преобразований для уменьшения временных затрат при
формировании кадра изображения, можно создать буфер для записи в
него информации о пикселях изображения без отрисовки каждого
пикселя. Как известно, при этом процессе постоянно происходит пе-
реключение в режим ядра, что существенно замедляет процесс вос-
произведения изображения. Для этого в GDI+ имеются функции:
LockBit() — предназначена для создания буфера, и UnLockBit() —
копирует содержимое буфера в видеобуфер. В результате их исполь-
зования переход в режим ядра происходит только при заполнении
буфера.
ЛИТЕРАТУРА
[1] Ваткин С.Г.
Кватернионы в программировании игр
. URL:
.
gamedev.ru / article
[2]
Streaming SIMD Extensions — Matrix Multiplication
. URL: http:// download.
intel. com/design/PentiumIII/sml/24504501.pdf , June 1999 Order Number: 245045-
001
[3] Норель М.
Вращение и кватернионы. Сборник рецептов
. URL: http:// www.
gamedev.ru/code/articles/?id=4215