Скелетная анимация: Введение (2 стр)
Автор: Сергей Шайкин
Преимущества скелетной анимации.
В чем преимущества подхода реализации деформации в виде скелетной анимации? Во-первых, это относительно малое количество данных, требуемое для хранения анимации, например, если сравнивать с морфингом. Выигрыш из иерархии также в том, что для задания какой-то анимации нет необходимости задавать и хранить анимацию для каждой кости. То есть, например, если мы сгибаем руку в локте, не нужно описывать движение кисти руки. Кроме того, использование скелета делает более очевидной задачу использования ключей для анимации и последующую интерполяцию между ними, либо линейную, либо сплайновую. При этом, частоту появления ключевых кадров можно значительно уменьшить: в линейном случае можно провести оптимизацию на незначительных изгибах кривой движения, а в сплайновом - задаётся аниматором.
Во-вторых, поскольку скелет представляет собой некую иерархию костей, то имеется возможность использовать инверсную кинематику.
Иногда предоставляется возможность применять одну и туже анимацию для похожих моделей с одинаковой структурой. Например, ясно, что если у нас есть анимация ходьбы для какого-нибудь мальчика, то мы не можем применить эту анимацию к животному, например, к собаке, однако модель девочки может использовать ту же самую анимацию для своей ходьбы. То же самое можно распространить и на "уровни детализации" и на замещение некоторой части полигональной модели, например, если у вас есть некий герой, который меняет одежду, то не нужно для каждого обмундирования иметь свою отдельную анимацию, достаточно аниматорам создать соответствующую привязку вершин к нужным костям скелета.
Кроме того, к преимуществам можно отнести эффективное использование скелетной анимации, описанное ниже.
Эффективное использование скелетной анимации.
Здесь мы рассмотрим один из типов соединений между костями, также называемые связями или суставами, которые часто можно использовать в построении скелета. Называются такие связи шарнирами (revolute joint). В шарнирных соединениях конечная точка одной кости вращается вокруг какой-то статической точки, обычно конечной точки родительской кости. Приятной особенностью такой связи является то, что для перемещения каждой кости в новую позицию задаётся только вращение. Отсюда следует, что для анимации необходимо хранить только информацию о вращении.
Итак, можно предоставить простой способ представления скелета. Имеется иерархия костей. Каждая кость имеет локальный набор информации - длину и вращение. Вращение обычно задаётся кватернионом.
По договорённости, каждая кость выровнена по оси X. Конечная точка кости находится на оси X и смещена по ней на длину кости. Относительная матрица вращения вычисляется из локального значения вращения текущей кости, а перемещение является сдвигом на длину родительской кости по X-координате в локальной системе координат родителя.
Использование шарнирных соединений ведёт к более низким затратам на хранение анимации.
Заключение.
Вся информация, предоставленная здесь, собрана из моего личного опыта, моих личных знакомых и друзей из сферы game development'а, также из опыта работы команды разработчиков 1C:Multimedia/Maddox Games и по материалам различных англо- и русскоязычных форумов. При написании статьи ни одно животное, включая мелких грызунов, не пострадало. Все тараканы сохранены и вынесены на поля. Для тех, кто пасётся данными этой статьи, обязательным является указывать пальцем в эту сторону, вплоть до неприличного после известных напитков. Присылайте уведомления, угрызения, несогласия, апельсины, наставления и прочие всяческие мысли по поводу.
#анимация, #скелетная анимация
17 сентября 2001 (Обновление: 13 июня 2009)