И для имитации работы мышц существует насколько способов. В скелет могут быть добавлены особые кости, которые, поворачиваясь и изменяя длину, имитируют увеличения объема и «перетекание» кожи по суставам. А можно под кожей разместить специальное тело, обычно это эллипсоид, который подобно костям будет деформировать кожу. И когда надо, менять размер этого тела. Этот способ позволяет более тонко передать работу мышцы, но более требователен к ресурсам машины, так как, по существу, каждая вершина деформирующего тела – это отдельная кость.
Если для создания инверсной кинематики обычно достаточно пары кликов мышкой, то для того, чтобы сделать мышцу, придется программировать. Большинство солидных 3D-пакетов включают в себя язык для написания встроенных программ. Вот и в этом случае поведение мышцы зависит не только от расположения костей, но и от скорости их взаимного движения. Ведь при одном и том же положении локтевого сустава бицепс будет находиться в совершенно разных состояниях в зависимости от того, сгибается рука или разгибается.
Если мы присмотримся, например, к бегущей собаке, то увидим, что некоторые части ее тела колеблются в такт прыжкам. Это, конечно, можно сделать аналогично мышцам, написав соответственный код. Но можно воспользоваться возможностью 3D-пакетов рассчитывать динамику упругих тел. Многие физические процессы можно моделировать встроенными средствами программ для моделирования. И так «подвесив» в нужном месте деформирующее тело на специальные пружины и настроив необходимые динамические параметры, мы получим желаемый результат. Существенно повысить реалистичность можно, если применить аналогичный метод ко всем крупным мышцам существа.
Посмотрите на свою руку: видите морщины, появляющиеся на ней, когда вы сгибаете локоть? Нашему персонажу такие морщины тоже нужны. Для их имитации строятся специальные кривые, которые, в отличие от костей, продавливают кожу. И после размещения в нужном месте «привязываются» к скелету.
Теперь тело персонажа практически готово. Но лицо, ну или морда, что у него там есть, остается неподвижным. А если в фильме будут крупные планы? Для создания мимики существует несколько принципиально разных подходов. Естественный – для мимики используется имитация лицевых мышц. Они, как ни удивительно, делаются из тех же костей, что и скелет, но работают, как настоящие мышцы, – изменяя длину, двигают ткани лица. Этот метод дает практически полную свободу в создании различных выражений лица, но достаточно сложен в управлении, ведь лицевых мышц может быть очень много.
Более простой в управлении метод основан на плавной модификации трехмерных объектов. Сначала лицо персонажа дублируется в нескольких экземплярах, обычно не более пяти. Каждый из дублей модифицируется таким образом, что выражает крайнюю степень той или иной эмоции: радости, гнева, страха.… После чего специальный инструмент позволяет «смешивать» в разных пропорциях эти лица. Теперь при помощи пяти ползунков можно управлять мимикой персонажа. Более того, таким же образом можно создать и эффект плавной трансформации, всего лишь сделав пару из новых лиц, сильно не похожих друг на друга.
Когда все предварительные работы завершены, в дело вступают аниматоры. Именно эти люди научат наше существо двигаться на экране. Самый простой метод анимации компьютерных персонажей называется методом ключевых кадров (Key Frames). Состояние героя точно задается на некотором наборе кадров, эти кадры не обязаны идти в фильме последовательно, например поза существа может быть задана на первом десятом и пятидесятом кадрах. После чего для всех промежуточных (не ключевых) кадров автоматически вычисляется положение всех частей героя. Этот способ достаточно прост в реализации, но слишком трудоемок для создания движений сложной конфигурации и требует большого умения аниматора для получения реалистичности поведения персонажа. Более того, не все позы персонажа в реальности бывают возможными. Зритель вряд ли поверит в существо с явно смещенным центром тяжести. Например, при анимации хвоста бегущего динозавра надо следить за тем, чтобы хвост, как и его прототип, балансировал в воздухе, помогая своему хозяину не упасть. В таких случаях зачастую применяется процедурная анимация, здесь для управления персонажем или его частью пишется специальная программа, которая может расположить одни части тела персонажа оптимальным образом исходя из других и существа в целом. Но и такой подход не всегда дает приемлемый результат.