WarCraft 3: Редактор Анимаций

MdlVis Tutorial

ЧАСТЬ II. РЕДАКТОР АНИМАЦИЙ.

В версии 1.0 кроме редакторов текстуры и вершин появился еще один модуль - редактор анимаций. Он позволяет подправить движения (позы) модели. Рас-смотрим работу с редактором на примере модели HarpyWitch.mdl (war3.mpq/Creeps/HarpyWitch).
Итак, загрузим эту модель в MdlVis. Теперь вызовем редактор анимаций. Это можно сделать с помощью меню (Модули->Редактор анимаций) или нажатием кла-виши F3. Вернуться обратно к редактору вершин можно с помощью клавиши F1 или пункта меню Модули->Редактор вершин.
При переходе к редактору анимаций MdlVis принимает следующий вид:

Видно, что по-прежнему активна навигационная панель, которая позволяет вра-щать, сдвигать и масштабировать систему координат. Также доступны панель вы-бора объектов переключение режимов. Надеюсь, у вас все текстуры на месте? Биб-лиотека ijl15.dll тоже? Тогда переходим в режим <Общий вид> (клавиша F) - так удобнее смотреть анимацию.
Как обычно, справа находится панель инструментов. Сейчас она практически пус-та. На ней сверху расположен список анимаций (сейчас там горит <Вся линейка>), а снизу - кнопка <Редактировать>.
Кроме того, прямо под рабочей областью появляется новый объект - Панель кад-ров. На этой панели выведены все кадры анимаций. Сейчас там изображена вся анимационная линейка, от 0 до 15167 кадра.
Следует отметить, что в WarIII разметка не покадровая, а посекундная. И ко-гда в MdlVis визуализируется анимация, то каждая секунда делится на 1000 кад-ров.
Получается, что суммарно всех анимаций этой модели набирается на 15,1 сек. времени. Нажатие кнопки
позволяет начать проигрывание. Нажимаем кнопку, смотрим: Видно, что модель как-то странно дергается. Дело в том, что в модели все ее анимации записаны последовательно друг за другом. Но при этом они вовсе не обязаны плотно прилегать друг к другу - между анимациями вполне могут быть <дырки> - пустые кадры, заполненные неким мусором. Поэтому при переходе от одной анимации к другой модель резко дергается. Останавливаем проигрывание, нажав на
. Видно, что модель застыла в той позе, в какой ее застал ос-танов, а посреди анимационной шкалы появилась красная черта:

Эта черта обозначает текущую позицию. Она всегда присутствует на шкале (толь-ко вначале она находится на нулевом кадре, у левой границы шкалы и ее почти не видно). А номер текущего кадра обозначается в соответствующем окошке справа (<Кадр>). Если навести курсор мыши на красную черту, то он примет форму двуна-правленной стрелочки. Тогда, нажав левую клавишу мыши (и удерживая ее) можно перемещать этот ползунок по анимационной шкале. Установив его в нужную пози-цию, отпустите кнопку мыши: при этом номер кадра в окошке изменится, изменит-ся и поза фигуры (она будет соответствовать выбранному кадру). Установить теку-щий кадр можно и просто введя его номер в окне кадра (нажав после этого Enter).
Обратите также внимание на флажок <МКИ>, расположенный между шкалой и окошком кадра. Он позволяет применить межкадровый интервал. Установите этот флажок. При этом под ним появится окошко со значением:
Число в этом окошке определяет межкадровый интервал (т.е. то, сколько кадров пропускается при просмотре). Чем этот интервал больше, тем больше скорость вос-произведения (но меньше качество). Установка малых МКИ позволяет просматри-вать анимацию на малой скорости. Снимите флажок МКИ (окошко интервала при этом исчезнет) - и анимация вновь будет проигрываться с реальной скоростью.

КЛЮЧЕВЫЕ КАДРЫ

Вы уже, наверное, обратили внимание, что анимационная шкала исчеркана боль-шим количеством синий линий. Кое-где они расположены так часто, что сливаются в сплошные синие области. Эти метки - обозначения т.н. ключевых кадров. Чтобы понять, для чего они нужны, разберемся, как осуществляется анимация мо-дели в War'е. Дело в том, что хранить каждый кадр (из нескольких тысяч) очень на-кладно. Поэтому реально в модели хранится всего несколько десятков (иногда со-тен) кадров, в которых задаются позы модели. Каждый такой кадр пронумерован. При этом все промежуточные кадры не хранятся, а вычисляются как нечто среднее между двумя ближайшими ключевыми (так, чтобы осуществлялся плавный переход модели из одной позы в другую). Это позволяет сильно экономить на размере моде-ли, хотя вычисление промежуточных кадров весьма трудоемко и требует значи-тельных вычислительных затрат. Кроме того, это же упрощает и редактирование модели: не нужно исправлять модель в каждом кадре, достаточно подправить всего несколько ключевых кадров.
Итак, все позиции всех ключевых кадров обозначены на шкале синими отметками. Кроме того, когда ползунок попадает точно на ключевой кадр (и этот кадр делается текущим), его номер в поле кадра подсвечивается синим цветом.
Ввиду большой важности ключевых кадров в MdlVis введен простой способ пере-хода к ним. Если кликнуть левой кнопкой мыши левее или правее красного ползунка, то он сдвинется в указанную сторону до ближайшего ключевого кадра. Обязательно поупражняйтесь в навигации по шкале и научитесь отыскивать ключевые кадры.
Далее для экономии места словосочетание <Ключевой кадр> я буду сокра-щать как КК.

АНИМАЦИИ.

Как вы понимаете, работать сразу со всей анимационной линейкой очень неудоб-но: ключевые кадры расположены слишком близко, сливаясь воедино. Поэтому го-раздо удобнее работать с отдельными анимациями (тут, кстати, меньше риск, что вы <залезете> в соседнюю анимацию, которую совсем не хотели править. Да и по-пробуй еще найди кадры нужной анимации на шкале). Расположенный на панели
инструментов список позволяет выбрать текущую анимацию для редактирования. В нем перечислены все анимации данной модели (у разной модели их набор различен). Кроме того, пункт <Вся линейка> позволяет вновь вернуться ко всей (полной) анимационной шкале. Вы, конечно, уже видели подобный список - в окне WarIIIViewer. Выберите какую-нибудь анимацию, например, Stand-1. При этом поза модели изменится(она будет соответствовать первому кадру указанной анимации), на шкале кадров появится разметка уже не всей анимационной линейки, а лишь ее части, соответствующей данной анимации; а панель инструментов заполнится:
[Image=7]

Прежде всего, обратите внимание, что ключевые кадры теперь расположены редко (просто масштаб увеличился), так что их вполне можно свободно выбирать. Разуме-ется, выбранную анимацию можно проигрывать и выбирать кадр для просмотра. Но это все ерунда - просматривать анимации удобнее в Просмотрщике. А нам важно узнать, как эти анимации редактируются.

СКЕЛЕТ МОДЕЛИ

Предположим, что нам нужно изменить анимацию Walk - 1 (полет гарпии). Преж-де всего, выберем эту анимацию. Затем перейдем в контурный режим (отключим общий вид) и нажмем на кнопку <редактировать> панели инструментов. Кроме то-го, для наглядности установим галочку <Показ поверхностей>. При этом модель примет следующий вид:

Видно, что панель инструментов значительно изменилась (настроилась под редак-тирование позы), а сама модель покрылась зелеными квадратиками. В таком виде визуализируется скелет модели.
War использует т.н. скелетную анимацию. Суть ее заключается в том, что по-сле создания формы модели создается еще и каркас - набор невидимых в игре точек. Эти точки тесно связаны друг с другом. После чего отдельные вершины при-крепляются к этим костям так, чтобы любые изменения кости передавались при-крепленным вершинам. Это, как мы скоро увидим, значительно упрощает анимиро-вание. Например, все вершины крыла прикреплены к одной кости, так что если нам потребуется поднять крыло, достаточно сдвинуть одну точку каркаса, а не каждую из вершин.
Итак, что MdlVis позволяет делать с точками каркаса? Прежде всего, выделять их. Кликните мышью на одной из этих точек - например, той, что находится возле ко-лена. При этом точка станет выделенной - окрасится в оранжевый цвет. Кроме того, через нее будут проведены относительные координатные оси. В этой версии MdlVis они пока не используются.
При этом на панели инструментов в поле <Объект скелета> появится имя выбранной точки (так мы узнаем, что только что выбрали точку с именем bone_leg2_r), а чуть ниже указан тип объекта. Существует два типа объектов каркаса: кости и помощники. В MdlVis между ними нет никакой разницы (хотя в War'е обработка помощников идет быстрее, чем костей). Поэтому в дальнейшем все объекты скелета я буду называть костя-ми.
<Кроме того, иногда в модели бывают глобальные объекты, редактировать которые MdlVis пока не умеет. Эти объекты отвечают за глобальную анимацию, которая накладывается на все остальные: мерцание ауры героев, развевающийся плащ, флаг и др.>
Все кости связаны в единый скелет (каркас) модели. Вы, наверное, уже обратили внимание, что при выделении кости еще одна кость подсвечивается черным цветом, и еще несколько - желтым:

Черным цветом подсвечивается родительская для выделенной кость. Именно к ней прикреплена выделенная кость, и при изменении родителя это изменение пе-редается дочерним костям. У любой кости может быть только один родитель (а мо-жет и не быть родителя), но сколько угодно дочерних костей.
Кстати, попробуйте выделить родительскую (черную) кость. Прежде всего, вы уви-дите, что выделение с текущей кости снялось: в MdlVis только одна кость может быть выделена. А текущая кость перекрасилась в желтый цвет, т.к. для данной она дочерняя. Кроме того, те кости, которые уже были желтыми, ими и остаются. Тут действует следующее правило:
Дочерняя кость моей дочерней кости - тоже моя дочерняя кость=).
Зато теперь как родительская отмечена уже другая кость. Выделим теперь ее: дочерних костей станет еще больше. В большинстве случаев, двигаясь от родителя к родителю, можно найти такую кость, по отношению к которой все (или почти все) другие кости - дочерние. (В модели гарпии это сделать нелегко, т.к. несколько кос-тей имеют одинаковые координаты):
Это - т.н. корневая кость (прослеживается аналогия с каталогами файлов). Обычно в ее имени присутствует слово "Root".
Кстати, при попытке выделить кость можно часто столкнуться с ситуацией, когда две (или более) кости полностью накладываются друг на друга. Тогда для их выбора можно воспользоваться списком на панели инструментов. Если выбрать какую-либо кость из этого списка, то она сразу станет выделенной. Просмотрите этот список. Вы можете увидеть, что разработчики моделей обычно дают костям осмысленные имена. Например, если в имени кости присутствует строка "arm", то эта кость как-то связана с рукой модели (в случае гарпии - с крылом). Суффиксы "_r" и "_l" будут указывать на левое и правое крылья соответственно.
К сожалению, в моделях TFT моделисты Blizzard отступили от этой традиции, да-вая костям на редкость бессмысленные имена (а то и просто номера). Это, конечно, немного усложнит нам жизнь.

ПРИКРЕПЛЕННЫЕ ВЕРШИНЫ

Как уже говорилось, к костям крепятся вершины. Причем одна и та же вершина может быть прикреплена сразу к нескольким костям. Тогда все они влияют на ее движение. Однако не может быть так, чтобы вершина вообще не была ни к чему прикреплена. На нее должна влиять хотя бы одна кость.
Вы, наверное, уже обратили внимание, что при выделении кости часть вершин ок-рашивается в серый цвет. Это - те вершины, на которые влияет выделенная кость - прямо либо через дочерние кости. Также вы можете обратить внимание, что кости обычно расположены рядом с теми вершинами, на которые они влияют. Например, если кость находится рядом с коленом, она влияет на него и всю половину ноги. Ес-ли возле ступни - значит, скорее всего она влияет на ее вершины. Кроме того, часть вершин поверхности м.б. выделена красным цветом - это тоже связанные вершины, только на них влияет непосредственно выделенная кость, без участия по-томков. И принадлежат эти вершины текущей поверхности.
Чтобы узнать, какие именно кости влияют на данную вершину (и сколько их), вершину необходимо сначала выделить. Для этого нужно включить инструмент вы-деления вершин:
. Он доступен, когда выделена хотя бы одна кость. После этого можно выделять вершины (это вы, я думаю, уже умеете - в редакторе анимаций вершины выделяются точно так же, как и в остальных модулях MdlVis без всяких ограничений). Кости в этом режиме выделять нельзя: чтобы вновь пе-рейти к работе с костями, нужно включить инструмент
.
Итак, выделите какую-нибудь вершину. При этом на панели инструментов появит-ся полоса прокрутки. Прокрутив ее, можно в самом низу увидеть список костей:
Причем если выделено несколько вершин, то в этот список попадет любая кость, которая непосредственно (без помощи потомков) влияет хотя бы на одну из выделенных вершин.
Когда нужные вершины выделены, их можно присоединить к кости. Зачем? Дело в том, что это сильно меняет анимацию.
Сейчас мы попробуем сделать так, чтобы гарпия трясла лапами во время полета (анимация Walk - 1).
Итак, надеюсь, вы выбрали анимацию Walk-1? (Если нет, то кликните по кнопке <список анимаций> и выберите нужную).
Теперь выбирайте кость mane4 (проще всего это сделать с помощью списка костей - там их имена отсортированы по алфавиту). Эта кость управляет движением: Че-го? Хвоста? Оперения спины? Или это у гарпии шлейф волос такой? Вообще-то слово <mane> переводится как <грива>, но какая грива может быть у гарпии? В об-щем, когда выделите нужную кость, посмотрите, на что она влияет:
я бы сказал, что это все-таки хвост (он находится между крыльев на спине, и очень длинный). Если вы просматривали анимацию Walk-1, то знаете, что в процессе по-лета этот хвост сильно дергается (вверх/вниз) на протяжении всей анимации. Итак, если мы присоединим лапы к кости хвоста, то их вершины начнут повторять все его движения (с небольшими вариациями, т.к. на них еще и свои собственные кости влиять будут). Значит, жмем кнопку
, и выделяем вершины обеих лап:
Теперь нужно присоединить их к кости. Это осуществляется с помощью инстру-мента
. Нажатие на эту кнопку присоединяет выделенные вершины к выделенной кости. Нажимаем эту кнопку: И видим странную картину:
Ступни отделились от лап. Чтобы исправить это дело, нужно присоединить к кости хвоста не только вершины ступней, но и некоторые вершины лап.
Переключаем поверхность (лапы находятся на поверхности 2) и выделяем вершины оснований лап:
Вновь нажимаем кнопку
, и целостность лап восстанавливается. Теперь, если просмотреть анимации, видно, что гарпия как-то нелепо дергает лапами в такт движениям хвоста. Это смотрится довольно глупо. Причем эти движения появляются не только в анимации Walk-1, но и вообще на всех ани-мациях!
Вывод: с присоединением костей нужно работать очень осторожно: измене-ния распространяются на ВСЕ КК и ВСЕ анимации модели.
Разумеется, вершины можно и отсоединять от кости. Для этого вершины, подле-жащие отсоединению, нужно выделить, после чего нажать кнопку
. Отсоединить можно только те вершины, на которые влияет несколько костей. Если на вершину влияет только одна кость, то вначале нужно присоединить ее к другой кости, а уж затем отсоединять от данной.
ИНСТРУМЕНТЫ РАБОТ

Просмотров: 19 187

FlameSword #1 - 7 лет назад 0
хорошая статья. Мне нужно сделать анимацию вращения у модели... в статье об этом ничего нет... и статей по анимациям в mdlVis тоже больше нет. Мб, добавите инф-ю в статью?
Zanpakto #2 - 6 лет назад 0
Незнаю, но на новых версиях mdlvis'а это работает через несколько неудачных попыток. (Задаешь несколько ключевых кадров, а модель стоит столбом, если создаёшь новую анимацию, хотя разница при создании ключ-кадров была).
Reach #3 - 5 лет назад 0
Видно, что панель инструментов значительно изменилась (настроилась под редак-тирование позы), а сама модель покрылась зелеными квадратиками. В таком виде...
Master113 #4 - 3 года назад 0
Пробовал делать, ерунда получается.