Смекни!
smekni.com

Организация автоматизированного рабочего места 3D-аниматора (стр. 5 из 8)

Больше всего «костей», естественно, придётся задавать для рук - а точнее, пальцев. Здесь структура виртуальных костей должна быть в наибольшей степени похожа на структуру костей в реальных руках, просто для того, чтобы пальцы сгибались там и так, как им полагается. Длина их также должна обладать «реалистичными» пропорциями: если взглянем на человеческую руку, то увидим, что фаланги пальцев имеют неодинаковую длину (Рисунок 20).


Рисунок 20 - Модель кисти руки с выстроенным ригом

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

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

В свою очередь, если речь идёт о риге для анимации какой-то техники, то нужно представлять себе, как двигаются её составные части, и опять-таки, что с ними может происходить, и чего не может.

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


2.8 3D-анимация: как это делается

Определение традиционной рисованной анимации – «технические приёмы получения движущихся изображений, иллюзий движения и/или изменения формы разнообразных объектов живой и не живой природы» – к 3D анимации подходит весьма относительно. Правильнее сказать, что 3D анимация – это автоматизация перемещения и трансформаций 3D модели в пространстве с течением времени.

В основном применяются три способа анимации 3D объектов. Первый и простейший - это перемещение и вращение целого объекта, без изменения его формы. Второй - это динамические деформации (бьющееся сердце - идеальный пример). Третий, самый сложный, и применяемый обыкновенно для анимации персонажей, - это скелетная анимация.

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

Анимация по ключевым кадрам в 3D по своему принципу очень похожа на работу традиционных аниматоров, когда главный художник рисует ключевые позы персонажа, а его подчинённые художники-позировщики заполняют промежуточные кадры, отрисовывая надлежащие трансформации фигуры. Разница в том, что роль позировщика выполняет уже компьютер (а точнее, соответствующие алгоритмы в программе-редакторе). Аниматору достаточно зафиксировать несколько ключевых положений фигуры, интерполяция осуществится автоматически.

Соответственно, процесс выглядит следующим образом: выбираем первый ключевой кадр (А), фиксируем в нём изначальное положение объекта; затем выбираем следующий ключевой кадр (Б), трансформируем объект (перемещаем, вращаем, изменяем размеры), фиксируем. Программа далее рассчитывает промежуточный процесс - траекторию движения и вращения между кадрами А в Б, а также - изменения размеров (но не формы), отображая эти изменения в виде кривых движения (Рисунок 21).

Рисунок 21 - Изменения в виде кривых движения

Кривые движения (Рисунок 22) - это, собственно, представление перемещения или трансформации объекта в виде графиков для каждой из его координат XYZ. Чтобы лучше понять суть этого процесса анимации, придётся вспоминать школьный курс математики. С другой стороны, такие кривые и их редактирование, как правило, чрезвычайно наглядны, и когда понимаешь взаимозависимости, проблем особых уже не возникает.

Рисунок 22 - Кривые движения

Кривые движения (Loc), вращения (Rot) и изменения размеров (Scale), представленные на одном графике. Это всё то, что претерпевает наша фигура. Скриншоты рабочего окна программы Blender 3D.

Кривые очень удобно использовать для точного контроля над каждым параметром; управление ими в современных пакетах реализуется достаточно наглядно, так, чтобы было минимум путаницы. Но без постоянного учёта множества всяких параметров, качественной 3D анимации сделать не получится.

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

Ну, и наконец, траектории - это, собственно, они и есть: отдельно задаётся путь перемещения объекта (с направлением), определяется его скорость и возможные изменения ориентации объекта в пространстве, каковая регулируется обычно всё теми же вышеупомянутыми кривыми.

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

Применяются они и при скелетной анимации, но о ней разговор пойдёт в следующей части.

2.9 Скелетная анимация, прямая и инверсная кинематика

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

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

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

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

Существуют два основных типа планирования движения «скелета» – это прямая кинематика (ForwardKinematics - FK) и инверсная, или обратная кинематика (InverseKinematics– 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 с активированными ActionEditor и TimelineEditor.