WarCraft 3: Этап II: костное анимирование

Анимация от "А" до "Я"

Основная часть

Этап II: костное анимирование

Теория

С чего начать этот важнейший этап в становлении модели? С кнопки "Создать" – скажут многие и будут правы, но это уже практическая часть анимирования, мы же начнём с продумывания и представления анимаций в своей голове и вне её, хотя многие опытные моделлеры, умеющие работать с анимациями делают это прямо во время основного процесса, не отвлекаясь от создания представляемого.
В первую очередь подумайте над концепцией анимаций, их характерности, необычности или наоборот, похожести на какие-либо другие. Может быть, ваш персонаж будет двигаться как ветер, а может лениво переставлять лапы? Знаете только вы. Попробуйте обрамить эти представления рамками анимаций WarCraft'а, а если вы еще и хорошо рисуете, можете нарисовать эскизы каких-нибудь моментов движения. Продумайте время каждой анимации, особенности движения костей, частиц, всего реализуемого, что только взбредёт в голову, и соедините в целостную картину.
Бывает, что представить анимацию в окне того самого Mdlvis'а довольно сложно, тогда, если вы делаете гуманоида, можно попробовать проверить представляемые анимации на самом себе, можно даже перед зеркалом, отметить положение собственных костей, а если под рукой есть секундомер, то и точно отсчитать время всей анимации и каждого движения в отдельности.
Но помните, что как у WarCraft'а, так и у Mdlvis'а есть определённые ограничения, и не уходите слишком далеко от суровой игровой реальности.
Получилось? Представили? Теперь немного о технической части.
Анимации можно разделить на 6 типов: костные анимации, анимации поверхностей, анимации материалов, анимации текстур, анимации света и частиц. Последние мы разбирать не будем, так как это отдельная большая тема, по которой на нашем сайте есть статьи.
  • Костные анимации основаны на движении костей, помощников, точек крепления и прочих объектов. Их движения обеспечиваются созданием ключевых кадров, или просто КК, в определённых временных промежутках анимации (на линейке кадров), а Mdlvis уже сам, в зависимости от выбранной интерполяции движения, строит перемещение, вращение и масштабирование костей.
    Костные анимации бывают локальными (обычными) и глобальными; первые работают на определённом временном промежутке, т. е. локально, а глобальные отличаются тем, что проигрываются постоянно, даже вне локальных, и выключить их ни коим образом нельзя. Кость, задействованная в глобальной анимации, невозможно переместить, повернуть или масштабировать в любой другой анимации.
  • Анимации поверхностей делают возможным мигание, изменение цвета, создание прозрачности или непрозрачности для определённой поверхности (Geoset).
  • Анимации материалов дают возможность управлять прозрачностью определённых слоёв или всего материала в целом, а также сменой ID текстур материала, как, например, у водного элементаля.
  • Анимации текстур позволяют перемещать, вращать и масштабировать текстуру не меняя при этом UV-развёртку модели или поверхности.
  • Анимации света позволяют анимировать цвет, интенсивность, видимость и другие характеристики источника света.
Последние три типа можно создавать и редактировать только в War3 Model Editor, анимации поверхностей можно создавать и в Mdlvis’е, но это довольно неудобно, а костные анимации наоборот, можно сравнительно без труда делать в Mdlvis'е, в то время как w3me располагает лишь текстовым средством для установки положения костей в пространстве.
Теперь перейдём к практике.

Практика

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

Костная анимация (15-30)

Пожелаем себе удачи в этой нелёгкой части и перейдём в Редактор анимаций (F3) на вкладку Анимки.
Изменения интерфейса состоят в замене координат и инструментов редактирования настройками анимации (п. 1 на 2.1) и в появлении линейки кадров (п. 2 на 2.1).
Рассмотрим характеристики анимации. В выпадающем меню "Текущая анимация" (п. 3 на 2.1) отображаются все имеющиеся костные анимации, как локальные, так и глобальные. Локальным анимациям в отличие от глобальных можно задавать имена, глобальные же именуются номером кадра, являющегося последним в анимации. Иначе говоря, название глобальной анимация – это её длина. Когда глобальная анимация выбрана, её название выделяется красным цветом.
Далее идут параметры анимации:
  • Однократность (п. 4 на 2.1) определяет, как проигрывается анимация после отдачи команды: один раз, или непрерывно до окончания действия. Наверняка те, кто работал с триггерами, сталкивались с тем, что после отдачи команды на триггерное воспроизведение анимаций, некоторые анимации воспроизводятся непрерывно, а некоторые только один раз. Это и есть следствие включения или отключения этой опции. В w3me она управляется флажком в левом нижнем углу окна характеристик анимации (последовательности) "Не циклическая", т. е. не повторяющаяся, однократная. Используется обычно в атаках (Attack), анимациях смерти (Death), рождения/постройки (Birth), трансформации (Morph), разложения/вознесения (Decay, Decay Flesh, Decay Bone, Dissipate), различных Spell'ах и в прочих анимациях, которые требуют однократного действия.
  • Применить редкость (п. 5 на 2.1), если поставить здесь галочку, то анимация приобретает редкость, т. е. то, как часто она может быть проиграна. Используется она, как правило, в различных Stand'ах (кроме простого (первого), т. е. Stand 2 и далее), атаках (аналогично Stand'ам, нумерация со 2-ой) и прочих анимациях, имеющих разные вариации. В среднем для редкости используются значения от 2 до 5. В w3me этот параметр обозначен как "Частота".
  • Указать скорость (п. 6 на 2.1)
  • Интервал кадров (п. 7 на 2.1) определяет длину анимации, т. е. кол-во кадров входящих в неё, и её положение на линейке кадров. Определяется начальным и конечным кадрами.
  • Кнопка Создать (п. 8 на 2.1) отвечает за создание локальных анимаций.
  • Кнопка Глобальная(п. 9 на 2.1) создаёт глобальную анимацию. В случае с глобальной анимацией единственной её характеристикой является конечный кадр, начальным определяется нулевой, так как важна только длина, положение глобальной анимации на линейке кадров роли не играет, ведь "глобалки" проигрываются постоянно. Также для глобальных отсутствуют все остальные характеристики локальных анимаций.
  • Кнопка Удалить (п. 10 на 2.1) удаляет любую костную анимацию.
Важно: удаление данной кнопкой лишь "косметическое", т. е. ключевые кадры остаются на своих местах, а удаляется лишь метка анимации.
Теперь рассмотрим линейку кадров:
  • Непосредственно линейка (п. 11 а 2.1), на ней отображаются КК в виде синих полосочек. Она меняет свою кадровую длину в зависимости от выбранной анимации, т. е. если выбрана анимация с интервалом кадров от 1000 до 4000, то самым левым кадром на линейке будет 1000-ный, а самым правым 4000-ный. Между ними находятся 9 условных промежуточных делений, разбивающих анимацию на 10 равных частей. По линейке кадров можно перемещаться мышкой и с помощью поля ввода кадров (п. 13 на 2.1).
  • Кнопка "Проиграть анимацию" (п. 12 на 2.1), как вы уже догадались по её иконке, проигрывает/останавливает проигрывание анимации.
    И вот тут нас встречает первый баг: если во время проигрывания анимации перейти в Редактор вершин (F1) или нажать кнопку "Открыть", то кнопка проигрывания анимации перестаёт работать, изменяя иконку на квадрат, при этом не важно, открыли ли вы другую модель, или нажали "Отмена".
    Баг исправляется перезапуском Mdlvis.
  • Поле ввода кадров (п. 13 на 2.1) служит также для перемещения по линейке кадров, только здесь можно с клавиатуры ввести номер кадра, или использовать маленькие кнопки "вверх-вниз" (подразумевается следующий-предыдущий кадр) справа от поля ввода.
  • МКИ (п. 14 на 2.1) – межкадровый интервал, эта функция определяет скорость проигрывания анимации. Если поставить галочку в это поле можно редактировать эту скорость в неких пунктах. 16 – реальная скорость, т. е. та, при которой анимация проигрывается с той же скоростью, что и без галочки на МКИ. Аналога этой функции в w3me нет.

2.1


Если вы помните, в этой статье описывается работа с двумя программами: Mdlvis и War3 Model Editor. Что ж, теперь разберём те же характеристики, но на примере второй программы.
Чтобы работать с характеристиками анимаций, в w3me существует два "менеджера": Менеджер последовательностей (п. 1 на 2.2), отвечающий за характеристики локальных анимаций, и Менеджер глобальных последовательностей (п. 2 на 2.2), отвечающий, соответственно, за характеристики глобальных анимаций. То есть, в отличие от Mdlvis’а, здесь работа с локальными и глобальными анимациями разделена.

2.2

Перейдём в Менеджер последовательностей. Здесь мы видим список имеющихся анимаций. Редактировать их характеристики можно, кликнув по имени нужной анимации два раза левой кнопкой мыши или кликнув один раз правой кнопкой и выбрав пункт "Редактировать".
Теперь вы увидите средних размеров окно, имеющее в себе ряд характеристик.
  • Название анимации (п. 1 на 2.3).
  • Интервал (п. 3 на 2.3) – аналог Интервала кадров Mdlvis’а.
  • Частота (п. 4 на 2.3) – аналог Редкости.
  • Скорость движения (п. 5 на 2.3)
  • Флажок (галочка) Не циклическая (п. 7 на 2.3) – аналог Однократности.
  • Пункты 2 (Минимальная и Максимальная границы) и 6 (Радиус границ) трогать не нужно, они определяют пространственные границы модели. Устанавливаются при расчете границ, пункт меню:
Редактировать\Рассчитать границы
Для того, чтобы работать с характеристиками глобальных анимаций, перейдём в Менеджер глобальных последовательностей.

2.3

В War3 Model Editor’е, в отличие от Mdlvis’а, названия глобальных анимаций генерируются случайным образом при каждом запуске, но при этом в названии всегда есть префикс "GlobalSequence" (п. 8 на 2.3).
Характеристика у "глобалок" только одна – Длительность (п. 9 на 2.3).
Просмотр анимаций в w3me происходит через Контроллер анимации:
Окна\Контроллер анимации
У такого контролера есть как ряд достоинств, так и ряд недостатков.
Поговорим о достоинствах, во-первых, этот контроллер позволяет проигрывать анимации в 3-х разных режимах: Default Loop (Стандартный повтор), Always Loop (Постоянный повтор) и Never Loop (Без повтора).
Стандартный повтор основывается на Однократности/Цикличности анимации, принцип действия остальных понятен из названия.
Недостатки же состоят в том, что никак нельзя регулировать скорость анимации (в Mdlvis’е для этого есть МКИ), и остановить аниму тоже не выйдет. Хотя я-таки нашёл хитрый способ: если нажать во время проигрывания анимации клавишу Alt, то произойдёт переход в главное меню, и проигрывание анимации остановится, правда покрутить модель вы не сможете: в таком режиме активны только клавиши стрелок, Enter и Esc. Ну и еще один недостаток в отсутствии линейки кадров и невозможности по ней перемещаться.

На этом часть ознакомления с интерфейсом работы с анимациями мы закончим и перейдём к созданию нашей первой "анимки" в Mdlvis’е.
Откроем нашу модель и перейдём в Редактор анимаций (F3).
Первой анимаций у нас будет традиционно Stand. Нажмите на кнопку Создать и переименуйте вашу анимацию. Теперь уберём все лишние галочки, так как для анимации Stand нам не понадобится ни однократность, ни редкость, ни скорость движения. Установим интервал кадров.
Важно: никогда не используйте нулевой кадр в костных анимациях! В этом кадре формируется скелет, и если делать анимацию с него, могут возникнуть серьёзные проблемы в Редакторе скелета, например, двоякость кости: выделяете её в одном месте, а она оказывается в совершенно ином. Однако глобальные анимации являются исключением.
Я взял интервал с 1000 по 4000 кадр.
Важно: 1 секунда = 1000 кадров.
Теперь перейдём на вкладку Движение. На экране снова отобразятся кости и прочие объекты, при этом внизу осталась линейка кадров, и изменились инструменты редактирования. Осталось только выделение, перемещение, вращение и масштабирование. Именно с помощью них мы и будем анимировать нашу модель.
Перейдём в начальный кадр и начнём устанавливать положение всех костей модели. Вот, что получилось на этом этапе у меня:

2.4

Первым делом при создании новой анимации следует установить начальный и конечный (если вы уже определились, что в нём будет) КК.
Используем команду "Копировать кадр" (Кадры\Копировать кадр (C)), перейдём в 4000-ный кадр (у вас, скорее всего, свой конечный) и вставим кадр (Кадры\Вставить (Ctrl+V)).
Совет: вы также можете копировать целые интервалы кадров...
» ...следующим образом
  1. Выберите анимацию, из который вы будете копировать необходимый вам интервал.
  2. Перейдите на вкладку "Движение".
  3. Зажав Shfit, выберите мышью нужный интервал на линейке кадров.
  4. Кликните правой кнопкой мыши прямо по нему и из контекстного меню выберите пункт "Копировать" (Ctrl+C).
  5. Перейдите на вкладку "Анимки", выберите ту анимацию, в которую вы хотите вставить выбранный ранее интервал кадров и затем снова перейдите на вкладку "Движение".
  6. Выберите кадр, который будет своеобразной точкой отсчета для вставляемого промежутка кадров.
  7. Нажмите правой кнопкой мыши по линейке кадров и выберите пункт "Вставить" (Ctrl+V).
Пользуясь выделением интервалов, вы можете выполнять и другие операции, например, удаление КК.
Очень сильно помогает во время анимирования возможность отображать КК только одного контроллера выделенной кости. Управлять этим можно с помощью галочки "Высветить КК" (2.5), но поставить эту галочку вы сможете только тогда, когда будет выделена нужная кость и активен один из «инструментов» (точнее – контроллеров: Перемещение, Вращение, Масштабирование), а также кость должна иметь как минимум 1 ключевой кадр, связанный с использованием соответствующего инструмента (контроллера). Иногда нужно выделить инструмент еще раз, чтобы галочка отобразилась.

2.5

Следите за начальным и конечным КК у всех костей, которые вы вводите в анимацию! Когда они задействуются в первый раз, велика вероятность, что якобы установившейся (т. е. выделившийся синим) начальный или конечный кадр какой-нибудь кости, после перехода в другой и произведения действия над костью, оказывается "пустышкой" и его нужно создавать снова.
Итак, закончив с начальным и конечным кадрами, перейдём в середину линейки кадров (у меня это кадр 2500) и изменим положение костей на нечто, соответствующее глубокому вдоху (хотя может и выдоху, как пожелаете).
Совет: вводите в анимацию как можно больше костей – это сделает анимацию более реалистичной и жизненной, но будьте внимательны: следите за ключевыми кадрами этих костей. Порой мелкое движение в середине анимации, когда кость получает контроллер впервые, остаётся незамеченным в начальном и/или конечном кадре, в связи с чем, нужного движения не происходит.
Важно: не следует вращать кость в одном КК более чем на 90 градусов! Иначе вращение будет рассчитываться неверно, и вместо вращения в одну сторону, ваша кость может начать крутиться в другую.
Вот такое положение костей получил я:

2.6

Теперь просмотрите анимацию. Багов скорее всего не будет, но даже если вы сделали всё правильно, могут быть резкие сдвиги костей сразу после (и/или до) определенных КК. Можно попытаться удалить ключевой кадр и создать/скопировать заново, либо произвести эту операцию со следующим за ним, но часто это не помогает, тогда достаточно скопировать КК, возле которого образовался сдвиг, в кадр, в котором этот сдвиг происходит.
Теперь проверим анимацию в w3me. Тут-то и вскрываются большинство багов. Так уж сложилось, что Mdlvis отображает далеко не все возможные баги, и w3me здесь как настоящий "спаситель", хотя и он, бывает, оказывается неправ.
  • Итак, просмотрев анимацию, вы можете заметить мгновенные переходы из одного КК в другой (как правило, начальный или конечный), в подавляющем большинстве случаев это происходит из-за отсутствия начального или конечного кадра (если это именно так, то в Mdlvis’е этих багов вы не увидите). Запомните "сбоящую" кость и еще раз внимательно проверьте её КК со стоящей галочкой "Высветить КК". Если одного из них не оказалось, просто скопируйте другой, то же самое можно делать если нет обоих, так как копирование неключевого (не подсвеченного синим) кадра не возбраняется.
  • Еще один распространенный баг часто проявляется после использования инструмента Перемещение - кость на короткий период сдвигается с места и возвращается обратно в области одного из КК (в Mdlvis’е этого бага быть не должно!). Иногда этот баг проявляется только при постоянном повторе. А происходит он из-за того, что по вине Mdlvis’а кадры перепутываются местами, это можно заметить и исправить только в w3me, для этого найдите сдвигающуюся кость, в Редакторе узлов кликните на кость ПКМ и выберите пункт Редактировать узел. В появившемся окне нажмите на кнопку "Перенос" и просмотрите кадры. Скорее всего, вы увидите похожую ситуацию:

2.7

Один из кадров (у меня это кадр 1000) почему-то оказался после другого (у меня 2500), хотя второй должен явно следовать после первого. Это и есть причина бага. Просто поставьте кадры на свои места:
1000: { 1.59721, 4.17233e-007, 0.277752 }
2500: { 2.39021, 4.91738e-007, -1.68143 }
4000: { 1.59721, 4.17233e-007, 0.277752 }
5000: { 1.59721, 4.17233e-007, 0.277752 }
5750: { 1.59721, 4.17233e-007, 0.277752 }
10000: { 1.59721, 4.17233e-007, 0.277752 }
10999: { 1.59721, 4.17233e-007, 0.277752 }
11000: { 1.59721, 4.17233e-007, 0.277752 } 
И нажмите ОК.
Внимание: при использовании War3 Model Editor 1.05 в окне редактирования узла никогда не нажимайте кнопку Поворот! Все значения будут сброшены, даже если вы нажмёте Отмена. Хотя с вращением багов почти не бывает, за исключением использования сплайновой интерполяции контроллера, но и они случаются; для работы с ними используйте w3me 1.07 по той же схеме, что и с перемещением. В этой версии баг со сбросом значений вращения отсутствует. Подробнее про этот баг.
Теперь сдвиг должен исчезнуть. Если нет, то либо этот баг присутствует в движении другой кости, либо ошибка заключается в другом (см. ситуации выше).
Если подобные баги не исправляются никаким образом (а такое бывает), проверьте модель в World Editor'е или непосредственно в игре – возможно, багов не будет, т. е. причиной его является несовершенность w3me, всё-таки он не WarCraft III.
Что ж, теперь создание вашей первой анимации можно считать законченным, поздравляю!

На этапе создания анимации Stand мы фактически использовали "технику уточнения", только в очень лёгком примере. Ведь мы сначала установили начальный и конечный кадр, а потом перешли в середину между ними и изменили положение костей, а я к тому же потом переходил в 1/4 и 3/4 линейки кадров, чтобы уточнять положение костей плаща. Это довольно распространённая техника, заключающаяся в уточнении положения костей, между определёнными КК, для более точных и верных движений, она также описывается в статье, автором которой является KO3bMA, вместе с описанием распространённых багов и способов их решения.
Но часто эта техника не подходит, если необходимо описать динамичную анимацию, которая придумывается "в движении", т.е. когда довольно сложно представить позицию костей в ключевых кадрах, или, к примеру, конечный кадр не совпадает с начальным (Death), и проще создавать кадр за кадром, чем уточнять их позиции (но помните о комбинировании техник, т.е. после создания КК таким образом, можно уточнять кадры между ними). Такую технику можно назвать "поступательной".
Эти две техники являются основополагающими, и, в принципе, только они и используются «в массах».

Воспользуемся "поступательной" техникой и создадим еще одну анимацию, Stand 2.
Здесь движения техножреца будут сложнее, чем в предыдущей анимации, они будут включать в себя поворот туловища вправо почти на 80 градусов с отставкой правой ноги и поднятием правой руки (без учёта мелких движений), секунду осмотра и возвращением в исходное положение.
Я рассчитал примерную длительность анимации для моей модели - 5 секунд, и задал интервал кадров от 5000 до 10000.
Сразу скажу, что приблизительные расчеты времени могут оказаться не совсем точными, и не стоит пытаться растянуть движения на всю длину линейки кадров, я, например, во время создания этой анимации не раз просчитывался со временем и двигал уже созданные кадры. В итоге получилось, что я просчитался с временем анимации на 2 секунды.
Создаём КК.

2.8 | 2.9


Наверняка многим не понравится неестественная резкость движений, получающаяся возле КК, если там требуется плавность, можно попытаться её исправить, увеличивая число уточняющих КК, но можно пойти другим путём – изменить Тип контроллера, или, иначе говоря, Интерполяцию (Тип Интерполяции).

Просмотров: 4 455

Hares #1 - 6 лет назад 0
А почему при повороте 4 аргумента? 3 последних я понял: поворот по 3 координатам, но 1 - ?
WebSter #2 - 6 лет назад 0
нее, там все гораздно сложнее, это гиперкомплексные числа, в общем, вот
Бродяга #3 - 5 лет назад 0
Не понимаю. Делаю простенькую анимацию stand, располагаю кости, как надо: вращаю, а чтобы была видимость дыхания, я кости сдвигаю чуть вниз, но при проигрывании все, что должно сдвигаться вниз, не двигается и во всех кадрах положение ног, и все, что я сдвигал становятся в одно пложение и двигается только часть того, что я вращал. Объясни, пожалуйста, как не ошибаться в этом случае.
WebSter #4 - 5 лет назад 2
Бродяга, судя по твоему описанию, ошибка заключается в том, что перед тем как сдвинуть кости вниз, ты не позаботился о создании начального и конечного КК, поэтому положение после сдвига Mdlvis понял как первое и, соответственно, никак не анимировал перемещение.
Чтобы не совершать таких ошибок, достаточно при введении новой кости в анимацию (если раньше она нигде не была задействована) прямо руками вписать сюда(в любое поле) очень маленькое число, например, 0,00001 – оно гарантированно будет зачтено mdlvis'ом как КК, а перемещение при этом практически нулевое.
Это сообщение удалено