Войти
ПрограммированиеТермины

Skeletal Animation (Скелетная Анимация)

Впервые эта технология использовалась в игре Half-Life и в дальнейшем получила большое распространение в компьютерных играх.

Вместо того чтобы хранить ключевые кадры (как в случае твиннинга) для каждой позы персонажа, использование скиннинга подразумевает наличие одной модели в нейтральной позе и большого набора матриц, которые трансформируют различные части этой модели. По причинам, которые станут ясными позже, эти матрицы называют "костями". Одна или несколько этих матриц влияют на каждую из вершин модели в нейтральной позе. Каждой матрице назначается некий коэффициент, который определяет насколько матрица влияет на вершину. Такой коэффициент называют весом. Данная величина лежит в пределах 0..1. Очевидно: 0 - означает, что кость совершенно не влияет, 1 - полностью определяет положение вершины.
Каждая вершина в сетке привязана к любому числу костей, поэтому при описании вершины необходимо хранить значения индексов, которые указывают на номер кости.
Формула для расчета:
1.GIF | Skeletal Animation (Скелетная Анимация)
v‘ - искаженная векторная позиция вершины.
n – количество костей
vn - первоначальная векторная позиция вершины относительно кости n, т.е. позицию которую получим из входящих данных в шейдере.
Mn - матрица трансформации кости n.
wn - скалярный вес вершины к кости n, при этом должно выполнятся обязательное условие:
2.GIF | Skeletal Animation (Скелетная Анимация)
что, кстати позволяет переписать основную формулу в таком виде:
3.GIF | Skeletal Animation (Скелетная Анимация)

В сравнении с более простой, вершинной анимацией, скелетная имеет следующие преимущества:
- Уменьшение количества хранимых данных для анимации, так как не надо хранить все варианты сеток, для каждого кадра анимации, надо хранить лишь положения костей скелета. Что становиться все более актуальным в связи с увеличением количества полигонов в современных моделях.
- Возможность использования одного набора данных анимаций для различных моделей.
- Так же можно управлять костями напрямую, что позволяет реализовать Инверсную Кинематику и технологию RagDoll.
- Позволяет более гибко смешивать различные анимации и интерполировать кадры, что дает более плавную и реалистичную анимацию в результате.
- На анимирование требуется меньше процессорного времени и памяти.
- На скелете можно конструировать составные меши. Например, на скелет можно "повесить" одновременно и тело персонажа, и его одежду, и различные предметы, а потом все это менять в динамике, а анимирование будет касаться лишь одного скелета.

К недостаткам можно отнести то, что с помощью скелетной анимации нельзя сделать качественную анимацию гибких материалов, таких как ткани или волосы, а также невозможность сложного морфинга геометрии объектов (например, превращения сферы в куб), но для таких целей можно как раз и использовать вершинную анимацию.

Что такое Skeletal Animation (Скелетная Анимация)?

3 августа 2005 (Обновление: 27 авг. 2005)

Комментарии [5]