Возможности анимации отдельных частей персонажа в 3D Max

На форуме можно опубликовать свой урок по работе с любым 3D-редактором. Сообщения о поиске уроков тут не публикуются.

Возможности анимации отдельных частей персонажа в 3D Max

Сообщение nikolau3d » Вт май 10, 2005 4:49 pm

ВОЗМОЖНОСТИ АНИМАЦИИ ОТДЕЛЬНЫХ ЧАСТЕЙ ПЕРСОНАЖА В СРЕДЕ 3D MAX

Изображение

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

Соглашусь, что оба эти варианта подходят для получения качественного, реалистичного результата, но и хлопот они доставят не мало. Не проще ли поручить этот контроль програмным средствам 3D MAX тем более что такая возможность есть.

И так, основа метОды использованой в этом уроке - это контролеры анимации “SPRING” и “LOOKAT CONSTRAINT”. Контролер “Spring” позволяет добавить к анимации положения обьекта в пространстве пружинящие, постепенно затухающие колебания. Ограничитель “LookAt Constraint” дает возможность анимировать вращение обьекта при помощи другого обьекта-цели, в сторону которого он будет всегда направлен.

Хочу предупредить, что анимация описаным ниже способом будет носить, так сказать, “реактивный” характер, тоесть будет реакцией на движение более старших (родительских) обьектов в иерархической цепочке.

Ну что ж приступаем! Предполагается, что читатель имеет навыки анимации в 3D MAX и представление о контролерах анимации. Для начала нам нужен собственно персонаж (полигональная сетка) или хотя бы его голова с ушами соответственно. Я использовал специально созданную для урока голову этого милого пса (рис.1).

Изображение

Суть метода поясню на простом примере:

Создадим три Бокса квадратных в основании и высотой раз в пять больше ширины и длины. Расположим их друг над другом по оси Z таким образом, что основание следующего бокса касается вершины предыдущего (рис.2.01).

Связываем их в иерархическую цепочку при помощи инструмента “Select and Link” начиная с верхнего и по порядку до нижнего (верхний со средним, средний с нижним).

Создаем два обьекта-пустышки (Create > Helpers > Dummy) и располагаем их таким образом, что первый (Dummy01) находится в точке сочленения второго (Box02) и третьего бокса (Box03), а второй (Dummy02) на вершине Box03. Dummy01 связываем с помощью “Select and Link” с обьектом Box01, а Dummy02 с обьектом Box02.

Обоим обьектам Dummy назначаем контролеры анимации “spring” на анимацию положения (выделяем нужный объект (Dummy01, Dummy02) > панель “Motion” > “Assign Controller” > выделяем строку “Position: Position XYZ”, жмем на кнопку “Assign Controller”, в открывшемся списке выбираем “Spring” и жмем “OK”).

Оставляем параметры контролера теми, какие есть по умолчанию. Теперь, если задать обьекту Box01 произвольную анимацию перемещения в пространстве, можно наблюдать, что обьекты Dummy “болтаются” за ним как привязаные на пружинках, полдела сделано!

Следующая наша задача - заставить Box02 всегда “смотреть” вершиной на Dummy01, а Box03 - на Dummy02. Сделать это можно назначив анимации поворота этих обьектов контролер “LookAt Constraint” (выделяем нужный объект (Box02, Box03) > панель “Motion” > “Assign Controller” > выделяем строку “Rotation: Euler XYZ”, жмем на кнопку “Assign Controller”, в открывшемся списке выбираем “LookAt Constraint” и жмем “OK”).

В качестве цели для Box02 выбираем Dummy01, для Box03 - Dummy02 (выделяем нужный объект (Box02, Box03) > панель “Motion” > свиток “LookAt Constraint” > кнопка “Add LookAt Target” > выбираем нужную цель (Dummy01, Dummy02)).

Если сейчас запустить нашу анимацию то результат будет впечатляющим. Несколько кадров приведены на рис.2.02 - 2.04. Все это при том, что анимировали мы лишь Box01.

Изображение

Теперь самое время заняться ушами нашего пса. Принцип работы остается тот же, разница лишь в том, что работать придется с костями (панель”Create” > “Sistems” > “Bones”), которые не нужно связывать в иерархические цепочки ибо связь эта в них уже присутствует. Вставляем кости в уши персонажа: рисуем три кости и делаем щелчек правой кнопкой мыши, четвертая замыкающая кость создается автоматически она нас интересовать не будет (схема расположения костей, вспомогательных обьектов и сетки персонажа представлена на рис.3).

Первую кость цепочки - Bone 01 (в основании уха) следует привязать к кости черепа (“Select and Link”), об остальных элементах сцены по порядку:
- Bone02: Контролер Rotation - “LookAt Constraint”, цель - Dummy01;
- Bone03: Контролер Rotation - “LookAt Constraint”, цель - Dummy02;
- Dummy01: связан (“Select and Link”) с Bone01, Контролер Position - “Spring”;
- Dummy02: связан (“Select and Link”) с Bone02, Контролер Position - “Spring”.
Затем следует связать сетку персонажа с костями при помощи одного из имеющихся способов (”Skin” или “Phisic”) и дело сделано!

Если теперь анимировать черепную кость, то уши будут совершать упругие колебония автоматически. На рис.4 представлен скелет нашего персонажа,а на рис.5 - последовательные кадры итоговой анимации .


При необходимости изменять положение ушей в пространстве вручную после назначения всех необходимых контролеров можно перемещая обьекты Dummy.

Изображение

Изображение

(Этот GIF отрендерен в Final Toon, к описаной анимации ушей добавлен морфинг нижней челюсти и век.)

Под конец немного о настройке ограничителей анимации:

- “LookAt Constraint”. До этого момента мы оставляли все параметры по умолчанию, но кто попробовал анимацию костей описанным выше способом мог заметить, что при движении в пространстве черепной кости, кости Bone03 и Bone02 начинают совершать паразитические закручивания вокруг своей продольной оси, что для анимации ушей персонажа согласитесь мало пригодно (но может использоваться в анимации других типов).

Чтобы избавиться от этого брака идем > панель “Motion” > свиток “LookAt Constraint” > самая нижняя панель “Aligned to Apnode Axis:”, и стоящий по умолчанию параметр “Z” меняем на “X”. Сцена иллюстрирующая разницу в работе этого ограничителя при установленных параметрах X и Z входит в состав архива ссылка на который дана в конце урока.

- Важный параметр в настройке контролера “Spring” - это масса обьекта (Motion” > свиток “Spring Dynamics” > “Point” > “Mass”). Увеличение массы ведет к увеличению амплитуды колебаний и более размашистым движениям.

По этой ссылке можно скачать файлы для урока (для 3D MAX 7) с настроенными обьектами и контролерами :

http://www.liveinternet.ru/images/attac ... 305686.rar

А здесь можно взять урок в формате pdf:
http://www.liveinternet.ru/images/attac ... 331382.rar

Рецензии принимаются круглосуточно: nikolau3d@yandex.ru :)


[ Редактировано Sergey|Marina в 10.5.05 16:25 ]

На сегодняшний день хочеться добавить, что метода прекрасно работает с контролером инверсной кинематики "SplineIK Solver"? а контролер "Spring" назначаем обьектам "Point Helper" которые автоматически создает "SplineIK Solver"

[ Редактировано nikolau3d в 23.1.07 11:46 ]

[ Редактировано MartiMakflay в 25.3.07 17:04 ]
nikolau3d
Знакомый
 
Сообщений: 40
Зарегистрирован: Вт май 10, 2005 4:39 pm
Откуда: Вологда


Вернуться в Уроки по 3D-графике

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron