Хитрости Cinema4D. Скелетная анимация

Вот честно сказать, мне не нравится перевод «play» и «player» — «проиграть» и «проигрыватель» (лучше «выиграть» и «выигрыватель»), точно также коробит часто встречающийся термин «анимация на костях». Прямо такие вот живые мощи посетили мир 3D-графики.

Сегодня мы поговорим о скелетной анимации. В Cinema4D мы имеем достаточно оптимизированный вариант. Вообще, к «сложной» анимации принято относить три типа: использование скелетов, работа с множеством частиц (дым, облака, море), работа с множеством объектов (ветер дует — волосы развеваются).

Как примерно происходит работа с множеством, мы еще рассмотрим. Сегодня же мы поговорим о скелетной анимации, которая используется повсеместно в мультфильмах, играх и кино. Даже более того, скелетная анимация в последнее время перекочевала и в некоторые пакеты по 2D.

Сама суть скелетной анимации — автоматизация трудоемких процессов. Ведь не секрет: для того чтобы показать шагающего персонажа, нужно следить за множеством параметров, работать на полигональном уровне с изменением пропорций графических примитивов или все реализовывать на уровне NURBS- кривых. Причем именно эта работа очень сложна, особенно в современных условиях, когда используются объекты с огромным количеством составных элементов. Но… нетрудно догадаться, что все эти изменения пропорций можно описать общими математическими законами, и это сильно облегчает задачи моделлеров и аниматоров.

Прямая и обратная кинематика

Перед тем как приступить к обсуждению bones, следует отметить, что скелет объекта обычно строится по принципу: родитель — наследник. То есть некая кость является главной, от нее строятся другие.

Что называется прямой кинематикой? Объясним на примере: чтобы поднять руку модели человека, в которой что-то находится, вы смещаете сначала плечо, потом предплечье, а после и кисть. Это правильный метод!

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

Почему на это стоит обратить особое внимание? Именно потому, что некоторые аниматоры неосознанно используют IK, думая, что так все и нужно, и не заостряют вопросы на «естественности». Например, вы часто можете встретить анимации, в которых персонажи неестественно ходят и двигаются, хотя по идее их движения должны быть более натуральными.

Кстати, инверсная кинематика — это практически бич 2D-анимации в случаях, когда используются пакеты, предусматривающие наличие скелетов. Конечно, рисовать тогда нужно гораздо меньше, на все тратится мало времени, но результаты… В принципе, неправильное использование инверсной кинематики видно сразу, а хорошие и качественные продукты на особом счету.

Сгибающийся цилиндр

Давайте реализуем простейший пример, в котором будут использоваться обычный цилиндр и две кости Bone. Bone относится к инструментам деформации, и, в принципе, это соответствует истине.

Запускаем Cinema4D. Размещаем примитив — цилиндр (радиус 20 м, высота 300 м, количество сегментов по высоте (Height Segments) оставляем равным восьми, по окружности (Radius Segments) — 36). Координату по Y указываем 150.

В меню деформаторов находим Bone (кость). Помещаем ее в рабочую область. Рассмотрим ее. Кость окрашена в зеленый цвет, заключена в габаритный контейнер красного цвета и на данный момент расположена по оси OZ. Утолщенный конец — это основание, именно от него считается начало координат этого объекта, утонченный называется вершиной, оранжевая точка в вершине — регулятор. Он служит не только для непосредственно регулирования направления кости, ведь именно из этой точки «рождаются» дочерние кости.

Указываем для Bone длину (Length), равную 150 м. После этого, удерживая клавишу Ctrl, мы создаем/вытягиваем из точки-регулятора вторую дочернюю кость. Для скорости вручную указываем ее длину, равную 150 м, а также обнуляем все цифры в полях Rotation. Обе кости должны быть расположены на одной прямой. После этого выделяем обе кости (выделение нескольких объектов производится при нажатом Shift), поворачиваем их в вертикальное положение и помещаем внутрь цилиндра.

Теперь в меню объектов (где мы видим, что там появилось древовидная структура из Bones) указателем мыши переносим родительскую кость внутрь объекта Cylinder. Нажимаем правой кнопкой мыши на родительской кости и в контекстном меню выбираем пункт Fix Bones. Нажимаем ОК.

Теперь вы можете изменить углы поворота каждой из костей, в результат чего увидите, что ваш цилиндр ведет себя так, как будто нанизан на скелет. Так оно и есть. Поскольку у нас вертикаль цилиндра была разбита на малое количество сегментов (параметр Height Segments), видны изломы. Мы можем это исправить, увеличив число Height Segments. Это раз. Второе — можно поменять функцию работы кости на 1/r.

Далее в качестве самостоятельной работы рекомендую изучить параметры для объекта кость Bone, а именно, сила, диапазон действия, формула.

Синхронные танцы

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

Теперь помещаем на форму еще один цилиндр. Относим его на определенное расстояние от первого. Копируем Bone из первого и помещаем во второй. Для этого нового Bone мы открываем контекстное меню и вызываем ShowTracks. В результате в окне анимации появятся все движения первого. Запускаем на исполнение — два объекта начинают танцевать синхронно.

Данный пример показывает, что для однотипных объектов достаточно один раз создать скелет и схему передвижения/анимации, после чего переносить его на множество других. Это часто используется.

Промежуточное завершение

О профессиональной скелетной анимации мы поговорим в следующем материале. Дело в том, что это не очень тривиальная тема. Но используется она везде, даже более того - в профессиональных специализированных пакетах уже имеются шаблоны ходьбы и т.п. для разного типа существ. Главное, чтобы все выглядело естественно. И глядя на какой-нибудь 3D-мультфильм или монстров либо роботов в кино/играх, многие даже не представляют, что за анимированными моделями стоят скелеты.

Создаем проект, помещаем цилиндр, берем деформатор Bone, «вытягиваем из него дочернюю кость»

После прикрепления «костей» к цилиндру он начинает их слушаться

Все должно выглядеть естественно и без изломов, поэтому выбирайте оптимальное количество сегментов разбиения

Поведение костей зависит от формул. Обратите внимание на фрагменты сгиба

Это пример скелета собаки, взятый из другой программы (LightWave3D). Как вы понимаете, скелетная анимация во всех 3D-пакетах строится по схожему принципу

Синхронные танцы цилиндров

В 2D-анимации иногда тоже используются скелеты. Пример — e frontier Anime Studio Pro. Если вы не совсем понимаете принципы работы скелетной анимации, то можете воспользоваться этой программой для обучения

Кристофер christopher@tut.by


Компьютерная газета. Статья была опубликована в номере 01 за 2010 год в рубрике soft

©1997-2022 Компьютерная газета