Графический дизайн, арт игры, концепт, персонажи, текстуры, анимации, модели
GameDev.ru / Графический Дизайн / Статьи / Приближение анимации персонажа к реальности.

Приближение анимации персонажа к реальности.

Страницы: 1 2 3 4 Следующая

Автор:

Предисловие
«Статичные» анимации и теория «Временных интервалов»
«Динамичное» движение и метод анализа
Полезные рекомендации

Предисловие

Первый и единственный вопрос, который возник по поводу моей статьи – подручная литература, поэтому я отвечу на него сразу (всё, что есть у меня в арсенале):
- Стефани Рис «Анимация персонажей в 3d Studio Max»
- Стивен Эллиотт и Филипп Миллер «Внутренний мир 3d Studio Max 2»
- сайт, с библиотекой материалов для аниматоров
http://www.creatstudio.ru/animation/library/

При написании статьи я опираюсь в основном на пользователей модуля Character Studio 4 в программном продукте 3ds Max 6. Однако, в общем-то, как теоретические, так и практические аспекты не имеют на сегодняшний день особых границ, т.к. передовые программы сравнялись в своей функциональности.

Все примеры ориентированы на 3ds Max версии 6.

Архив с примерами к статье: examples.zip (1,1 Мб.)

Некоторые условности:
- CStudio (Character Studio) – сокращенное название подключаемого модуля для анимации персонажей.
- COM (center of mass) – центр массы у скелета Biped, с помощью которого выполняются передвижения в пространстве.
- копирование ключа – данную операцию удобно выполнять через строку с анимационными ключами, расположенную под ползунком времени. Выделите нужный ключ, и при зажатом SHIFT’е переместите в новое положение.

Долгое начало

Я взял именно такую тему, которая является как задачей, так и тенденцией на сегодняшний день. С анимацией я работаю довольно долго, правда, только год назад столкнулся с темой приближения анимации персонажей к реальности. Дело в том, что я работал аниматором в одном бесплатном проекте, где доводилось создавать определенный перечень анимаций для игровых персонажей. Причём, за всё время работы нужно было делать несколько версий анимаций по ходу усложнения и расширения самого проекта, или, другими словами, приходилось выпускать несколько релизов. Конечно же первый релиз заставляет сейчас только улыбаться, тогда же это была серьезная работа, особенно для меня. Затем, спустя несколько месяцев, передо мной поставили задачу по переработке старых анимаций, да я и сам стал замечать множество деталей, которые желательно подправить. В итоге я всё равно все анимации собрал по-новому. Вот так я столкнулся с проблемой «приближения анимации персонажа к реальности».

За весь период работы я обзавёлся собственными методами и различными уловками при работе, которые мне помогали скорее и качественнее справляться с очередными заданиями. Я даже выдвинул небольшую теорему, не судите её строго, но логическое подтверждение ей тоже придумано. Есть ещё одна причина моих долгих исследований – я не очень хорошо рисую, недостаточно, чтобы передать движение через набор поз, поэтому избираю, скажем так, более материальные и физические опоры для своей работы. В любом случае, думаю, что пора уже перейти «от слов к делу».

Схема 1. «Процесс создания анимации».
Изображение

Представленную схему я использую для моделирования той или иной анимации. Теперь разъясню, как весь этот процесс работает.

Разъяснять я вовсе не собираюсь по порядку (это вовсе не из-за характера), а сразу перейду к указанной в схеме создания анимации последней стадии – обработка траектории движения. Зачем это нужно? Дело в том, что, на мой взгляд, хорошее представление этой стадии позволит избежать множества ненужных кадров при создании даже чернового варианта анимации.

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

Настройка параметров ключа

Ключ Biped является прообразом TCB (tension - натяжение, continuity - непрерывность, bias - смещение). В добавок к этим трём параметрам есть ещё два: Ease To (ослабление к ключу), Ease From (ослабление от ключа). Хочу заметить, что не только в Biped скелете имеются ключи с подобными параметрами, так, например, в LightWave интерполяция определяется таким же самым образом.

Значение основных трёх параметров:

tension – натяжение ключа. С практической точки зрения позволяет управлять кривизной траектории в диапазоне от кривой (значение 0) до прямой линии (значение 50).

Естественно, если требуется воспроизвести движение прямым переходом от ключа к ключу, то tension = 50, иначе переход будет как можно более плавнее.

continue – непрерывность. На деле позволяет нарушить непрерывность интерполяции в области ключа за счёт образования «клина» в форме траектории.

bias – очень полезный параметр, особенно его эффективно использовать при анимировании остановок. Например, поднятая рука достигает высоты и должна  остановиться, зафиксировав позицию. Без выставления bias этого не произойдет, рука будет «ёрзать» туда-сюда.

Как видно из рисунка, параметр bias позволил при нулевом значении плавно «войти» в ключ и затем «выйти», используя линейную интерполяцию. При выставлении значения равным 50, происходит противоположное действие.

Изображение Изображение Изображение

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

Изображение

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

Изображение

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

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

«Руки вверх»

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

Для нас в этом примере не стоит задача в установки чёткого тайминга, поэтому я приведу его сам без особых разъяснений. После долгих математических вычислений и умственных преобразований я пришёл к выводу, что на поднятие рук персонаж затратит 40 кадров, продержит их в таком положении 10 кадров и соответственно кадров 30 у него займёт опускание рук.

Загрузите анимацию с файла «handsUp_start» (результат простой расстановки ключевых кадров) и вы увидите нечто похожее на вышеописанное. Однако руки вовсе не «висят» между 40-50 кадрами, они в движении. Исправим это… Откройте диалог настроек второго для руки ключа (кадр) и уставите для bias значение равное 0, для третьего ключа значение равное 50. Эти действия выполните для одной руки: так можно будет сравнить с нередактированной траекторией. Теперь всё правильно, и рука останавливается, что и требовалось.

Двигаемся дальше. Выделите кисть отредактированной руки и включите режим показа траектории (кнопка расположена в свитке KeyInfo). В видовом окне должен появиться дугообразный путь с однородно расположенными по нему точками, т.е. скорость движения во времени примерно постоянная. Однако для более правильного тайминга от нас требуется следующее: рука при подъёме и спуске должна набирать скорость. Причём, это всё вполне объяснимо: когда рука поднимается вверх, то из состояния покоя она выходит не сразу, а постепенно. Что же касается падения руки, то здесь добавляется сила тяжести, поэтому рука, естественно, будет ускоряться. Вот такие штрихи следует добавить в анимацию. Приступим.

Откройте диалог настройки параметров самого первого ключа той самой руки, над которой мы уже проводили преобразования, и установите значение ослабления от ключа (Ease From) равным 50. Аналогичную операцию проведите с предпоследним, третьим ключом. Вот, собственно, и всё, что требовалось. Если возникли какие-то неясности, то обратитесь к файлу «handsUp_end».

Советую вам продолжить работу над этим примером, добавляя больше ключей и редактируя траекторию для достижения различных эффектов. Тренируйтесь в контролировании траекторией. Дело в том, что я встречал множество случаев, когда вместо точной настройки ключей, прибегают к добавлению большего их количества. Чаще это приводит к тому, что аниматор устаёт от работы со всеми этими «джунглями», особенно если в анимации нужно подправить тайминг и в итоге, переделывает всё по- новой.

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

Основные принципы в анимации персонажей

1) Каждое действие вызывает равное противодействие.
Если мы рассматриваем движение двуногого персонажа в физическом мире, то для передвижения ему следует удерживать равновесие. Например, наклонившись вперёд, таз «отходит» назад и т.д.

2) Действие:
a. подготовительная стадия (упреждение)
b. выполнение действия
c. завершение действия

Подобные три фазы действия являются очень важными. Привожу пример их использования – простой прыжок на скейте (Оли).

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

Без выполнения первой и последней стадии действие будет «сухим» и неестественным.

3) Цепная реакция (ведущее и последующее)
Большинство движений одной части тела приводит к передаче импульса движения другой части тела.

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

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

4) В природе нет прямолинейных движений. Это действительно вроде так, поэтому и при анимировании персонажей старайтесь избегать подобных форм траекторий для своих объектов.

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

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

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

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

Пауза – обязательная составляющая анимации. Она позволяет нам достаточно хорошо понять, что, собственно, происходит. К примеру, персонаж всунул ключ в замочную скважину, но он же не сразу его оттуда вытащит. Здесь нужна пауза.

Ускорение и замедление являются также неотъемлемой частью в анимации, так как представляют собой разновидности физического движения.

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

6) Движение, совпадающее по направлению с гравитацией, будет ускоряться.

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

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

Надо быть осторожным с «работой мышц», чтобы не получилось, что зрителя начнёт удивлять медленная скорость движения. Если нет возможности или просто не получается передать напряжение мышц, то лучше «не перегибать палку» и делать в нормальном темпе.

Итак, работа мышц влияет на временные интервалы и, в каком-то смысле, корректирует её, однако учитывать этот фактор следует вам. Т.к. именно аниматор должен себе представлять движение.

Ну что ж, вот думаю и всё, вступительный экскурс можно считать пройденным. Я представил те элементы из схемы, которые имеют, на мой взгляд, первостепенное значение. После их рассмотрения, думаю, можно двигаться дальше — создавать анимации.

Страницы: 1 2 3 4 Следующая

29 сентября 2004

#3D Studio MAX, #анимация, #персонажи

2001—2017 © GameDev.ru — Разработка игр