Скелетная анимация, прямая и инверсная кинематика
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Скелетная анимация – это тот самый случай, когда совсем общую теорию объяснить очень просто, а вот добиться реальных результатов, тем более, результатов серьёзных оказывается очень сложно.

Скелетная анимация – это анимирование 3D-фигуры посредством относительно небольшого количества управляющих элементов, и внешне и по принципу работы, напоминающие скелет – или строение марионетки.

Как он «изготавливается», мы рассматривали в статье «Риггинг». От того, насколько разумно и правильно риггинг был выполнен, зависит и результаты первых попыток анимировать что-либо. Если иерархия костей сделана как надо, то и поведение цепочки, равно как и привязанных к ней вершин, будет «жизнеподобным». Ошибки же могут привести к совершенно нелепым последствиям: ноги могут «уехать» за голову, например.

При умелом использовании скелетная анимация позволяет значительнейшим образом экономить на усилиях – естественно, гораздо проще двигать несколько «костей», нежели тягать с места на место группы вершин и полигонов.

Существуют два основных типа планирования движения «скелета» – это прямая кинематика (Forward Kinematics - FK) и инверсная, или обратная кинематика (Inverse Kinematics – IK). Их также выбирают на этапе риггинга, – впрочем, этот процесс от скелетной анимации вообще неотделим.

Создадим отдельно взятую цепочку «костей» (Рисунок 23) – без добавления мяса пока что. Все операции осуществляются в пакете Blender3D, скриншоты, стало быть, тоже оттуда.

 

Рисунок 23 - Отдельно взятая цепочка «костей»

 

Видим четыре кости, где первая - «родительская», все последующие – находятся в последовательной иерархической зависимости от предыдущих.

В случае если использовать прямую кинематику, то при попытке сдвинуть какие-либо звенья (кости) ниже уровнем, чем родительская, приведут к тому, что двигаться будут только нижестоящие.

Повернули кость 2, вместе с ней повернулись (но остались на одной прямой) кости 3 и 4 (Рисунок 24).

 


Рисунок 24 – Поворот «костей»

 

Это прямая кинематика: перемещение старших по иерархии костей приводят к тому, что перемещаются и младшие.

При использовании обратной кинематики алгоритм получается ровно противоположный (Рисунок 25):

 

Рисунок 25 - Использовании обратной кинематики

 

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

Звено цепочки, изменение положения которого приводит к изменению положения других звеньев, называется effector (Рисунок 26) (существует диковинный перевод «влиятель»).

 


Рисунок 26 – Звено effector («влиятель»)

 

Подвигали кость 3. Звенья 1-2 поменяли своё положение, а 4 – осталось на одной прямой со звеном 3. Кость 3 теперь является effector'ом, и всё, что находится ниже по иерархии, подчиняется алгоритмам прямой кинематики.

Инверсная кинематика применяется главным образом там, где требуется точное расположение конечного звена в нужной точке (например, чтобы при ходьбе ноги персонажа не «проскальзывали» по поверхности или не утопали в полигонах, изображающих твердь земную).

Самое же важное – это грамотная расстановка ограничителей (constraints) для подвижных элементов на этапе риггинга. Конечности модели персонажа должны вести себя «в разумных антропоморфических пределах», например, чтобы колени не прогибались не в ту сторону или пальцы рук не заворачивались за запястье.

Далее начинается процесс автоматизации движений (Рисунок 27) – тут всё делается так же, как и при обычной анимации. Задаются ключевые кадры для отдельных управляющих элементов, и они тащат за собой все остальные. При этом анимационные пакеты вполне могут регистрировать ключевые положения только для индивидуальных костей, для всех звеньев разом или для отдельных их групп. При этом генерируются кривые движения/вращения/масштаба для каждого элемента, участвующего в анимации. Современные пакеты, разумеется, предоставляют в избытке средства, позволяющие экономить на усилиях – например, «глобализовать» управление сразу множеством элементов, группируя их более-менее удобным способом. На скриншоте ниже представлено всё рабочее окно Blender с активированными Action Editor и Timeline Editor.

 

Рисунок 27 - Процесс автоматизации движений

 

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

 



Дата: 2019-07-30, просмотров: 208.