XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Желтая пресса: обучающие статьи
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Результаты опроса: Продолжать ли мне работу над статьей?
Да, она должна быть дописана до конца. 84 96.55%
Нет, и этого хватит. 3 3.45%
Голосовавшие: 87. Вы еще не голосовали в этом опросе

 
WebSter
Товарищ Mechanicus
offline
Опыт: 86,111
Активность:
Анимация от А до Я (временно)
Довольно давно я взялся за эту статью, еще в начале 2010 г. Потом долгое время пытался заставить себя её доделать, но в какой-то момент я так устал от анимированмя, что уже и видеть её не хотел)
Сейчас же, когда она снова попалась мне на глаза я решил, что нужно её опубликовать, ибо не гоже пропадать такой работе, но вот допишу ли я её до конца – не знаю... Именно поэтому я добавил в тему опрос, надеюсm на ваш выбор. В первом случае я буду работать над ней дальше до полного завершения (что наверняка будет очень трудно), во втором - остановлюсь на имеющемся.
Тема здесь временно, т. к. раздел "Жёлтая пресса" закрыт.
Итак, поехали...

Введение

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

Подготовка к работе

В этой статье я буду говорить об анимации и её аспектах, и для этого нам понадобятся только две программы:

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

Предполагается, что читатель уже имеет базовые навыки работы с Mdlvis и War3 Model Editor. Если вы их не имеете, то советую прочитать соответствующие статьи на сайте.
В определённых заголовках вы можете увидеть цифры в скобках:
» Например

Практика (01-14)

Они обозначают номера копий-моделей в папке «Tech-priest» из архива с примерами, приложенного к статье. Нумерация идёт в формате «v1-##», где «##» - является номером в диапазоне чисел, указанных в скобках.

Этап I: оснастка скелета

Теория

Первое, с чего начинается каждая анимированная модель - это скелет. Здесь могут оказаться полезны хоть какие-нибудь познания в анатомии, например, чтобы определить, где должна находиться кость, отвечающая за движения нижней челюсти.
Скелет может состоять из множества костей, но для основных анимаций гуманоида в WarCraft III понадобится как минимум 16. На изображении 1.1 эти кости показаны синими, красными и жёлтыми кружками. Красное - правое, синие - левое, жёлтым обозначен осевой скелет. Как правило, между названиями левых и правых костей отличие лишь в префиксе буквы "L" или "R", или слова "Right" или "Left". Серые объекты - дополнительные кости, используемые в частных случаях и хелперы (помощники).
Примечание: Helper (помощник) - это кость, к которой не присоединены вершины.
Линиями показаны зависимости костей, для ног они расположены в порядке от пальцев стопы (Bone_Toes) до кости, отвечающей за бедро (Bone_LegUp); для рук в порядке от хелпера Weapon до плечевого пояса (Bone_ArmUp). Родительские кости ног крепятся к тазу (Bone_Pelvis), а кости плечей и кость головы (Bone_Head) к груди (Bone_Chest). Эти осевые кости никак друг от друга не зависят, но как правило крепятся к хелперу Root (Bone_Root), который используется для передвижения всей модели, например, при прыжке, или вращения, как при перевороте. За оружие обычно отвечает кость Bone_Weapon, но могут встречаться и другие названия (например, в модели лесного тролля за топоры отвечают кости Axe1 и Axe2).
Вообще, никто не ограничивает вас в названии ваших костей, но правильные названия помогают в понимании и облегчают процесс анимирования модели.
Важно: располагать кости следует так, чтобы они попадали в место сгиба, при повороте той части тела, за которую отвечают, именно поэтому, например, Bone_Head должна находиться около середины или ближе к основанию шеи.

1.1 (вид спереди)

На картинке 1.2 вы можете видеть положение основных костей во время одной из анимаций.

1.2.

Что касается скелета портрета, то тут основополагающими костями будут Bone_Chest, Bone_Head и кости отвечающие за нижнюю челюсть и мышцы верхней (т. к. сама кость верхней челюсти неподвижна). Но для правдоподобности движений и выражения эмоций следует использовать ряд других костей. Например, отвечающих за брови, щёки, веки, уголи рта, и т. д.
Изображение 1.3 показывает правильное расположение костей портрета моего орка-снайпера, обратите внимание на положение кости, отвечающей за нижнюю челюсть.

1.3

Что касается оснастки скелета для животных, предметов и прочего, то тут всё аналогично, нужно лишь чётко себе представлять, что к чему должно крепиться и как должно двигаться.
Вот пример скелета (62 кости) хищного растения:

1.4

Практика (01-14)

Итак, пришло время попрактиковаться. Я, для примера, вытащил модель техножреца (tech-priest) из «Warhammer 40.000 Dawn of War: Soulstorm» и буду сейчас делать скелет, а потом и анимации именно для него.
Примечание: есть определённые весьма сложные способы конвертации из Warhammer 40.000 с одной или несколькими анимациями, но я пока не углублялся в эти премудрости, да и это больше относится к конвертации, нежели к анимированию.
Совет: если во время каких-либо операций Mdlvis выдаёт ошибки типа «Access Violation», перезапустите программу. На всякий случай также можно предварительно пересохранить модель в другой файл.
Я уже импортировал в Mdlvis модель техножреца и назначил все необходимые текстуры и материалы:

1.5

Переходим в Редактор анимаций (F3) на вкладку Скелет. Скорее всего, в модели-болванке, на основе которой вы делали свою модель, уже есть одна или несколько костей, советую оставить только одну, если их несколько, и переименовать в Bone_Root.
Создать кость можно простой командой через главное меню:
Создать\Кость (Ctrl+B)
Обратите внимание, кость имеет название bone_new0, все последующие новые кости будут иметь такие же имена, за исключением номера, который будет последовательно увеличиваться. Новая кость также не имеет прикреплённых вершин, и поэтому пока является хелпером.

1.6

Пусть наша первая новая кость будет отвечать за голову персонажа.
Отключим видимость ненужных поверхностей и передвинем кость к середине шеи. Теперь нам надо выделить вершины, которыми будет управлять данная кость.
Иногда нахождение некоторых вершин требует изрядной сноровки, и приходиться использовать различные виды, «бегать глазами по рёбрам» от одной вершины до другой, а иногда даже выбирать вершины наугад, а затем исключать ненужные.
Выделив вершины, удостоверьтесь, что нужная кость тоже выделена, и нажмите кнопку Пересвязать вершины (п. 1 на 1.7), именно пересвязать, так как пока все кости были автоматически привязаны к исходной кости, в нашем случае это Bone_Root.
Заметьте, тип объекта изменился на кость , а количество связанных вершин теперь выражается натуральным числом, отличным от нуля (п. 2 на 1.7).
И немного об индикации вершин: чёрными становятся вершины, непосредственно привязанные к выделенной кости (а когда кость не выделена, её имя отображается в "Списке костей, влияющих на выбранные вершины" на правой панели Mdlvis), а серыми – вершины, зависимые от выбранной кости посредственно, т. е. через другие дочерние кости-посредники.

1.7

Примечание: если вершины оказываются бесхозными, т. е. не присоединены ни к одной кости, иногда Mdlvis автоматически создаёт кость bone_null и привязывает к этой кости бесхозные вершины.
Переименуем нашу кость в соответствующее ей название: Bone_Head.
Теперь создадим кость, отвечающую за торс. Согласитесь, немного неудобно постоянно после создания кости двигать её из нулевых координат, к счастью, есть возможность избавиться от этого неудобства. Для этого, мы сначала выделим нужные вершины, а потом уже создадим кость. Она появится в середине скопления точек, но может и отклониться в сторону области, где вершин ощутимо больше.
Создание кости после выделения вершин (п. 1) и место образования новой кости (п. 2):

1.8

Теперь пересвяжем выделенные вершины с костью, передвинем её в место сгиба (область пресса) и переименуем в Bone_Chest.
Примечание: названия Bone_Head и Bone_Chest очень важны, т. к. некоторые триггеры используют кости с таким названием.
Если бы мы сейчас перешли к анимированию, то обнаружили бы, что при перемещении/повороте/масштабировании кости отвечающей за торс, все вершины, зависящие от Bone_Head даже не шелохнутся, хотя должны, ведь анатомически голова присоединена к туловищу шеей и зависит от его перемещения.
Исправляется это созданием зависимости одной кости от другой. Для того, чтобы сделать кость Bone_Head зависимой от Bone_Chest, иначе говоря, сделать кость Bone_Head дочерней Bone_Chest, выделим Bone_Head и используем инструмент "Связывание объектов" (п. 1 на 1.9). Выберите кость, к которой вы прикрепляете будущую дочернюю кость (п. 2 на 1.9) и нажмите кнопку "Завершить связывание" (п. 3 на 1.9).
Теперь кость Bone_Head (дочерняя) привязана к Bone_Chest (родительская), т. е. будет в первую очередь повторять все движения родительской кости, например, при повороте туловища на 90 градусов, голова будет глобально повёрнута на столько же градусов, но относительно туловища своё положение не изменит.
Определить привязанность кости достаточно просто, жёлтыми кубами отображаются дочерние кости (п. 4 на 1.9), а чёрными – родительские (п. 5 на 1.9).

1.9

Теперь для вас не составит труда оснастить остальной скелет вашей модели, но помните несколько важных правил:
  1. Следите, чтобы одни и те же вершины не были одновременно присоединены к нескольким независимым друг от друга или не имеющим общего родителя костям. Иначе могут быть известные многим баги с растяжением и масштабированием при вращении ли перемещении.
  2. После создания кости в выделенных вершинах не обращайте внимание на красный куб в точке начала координат – он обманка, как бы признак того, что созданная кость была перемещена оттуда.
  3. При клонировании объекта (Создать\Клонировать объект (Ctrl+V)), клон создаётся в координатах идентичных координатам клонируемого объекта и выделяется автоматически.
И один совет: пока не создавайте точки крепления (аттачи), они могут мешать во время создания анимаций, а детальнее мы разберём их в конце статьи.
Также, вы можете проверять правильность прикрепления вершин и скелетных связей на тестовых (лучше однокадровых) анимациях, если вы уже знакомы с редакторами "Анимки" и "Движение" (1.10).

1.10

Ещё следует отметить такое свойство объектов, как "Синфазность". Поставив флажок с таким названием, вы делаете объект синфазным, т. е. постоянно повёрнутым "лицом" к игровой камере. Этим самым "лицом" определяется поверхность, обращённая в положительную сторону координат по оси X:
» Окно "Иерархия"
Я думаю, немного информации об этой опции не помешает.
По команде "Вид\Иерархия (H)" можно вызвать окно "Иерархия" (1.0.1).
В нём отображаются все кости и другие объекты скелета (п. 1 на 1.0.1). Чтобы видеть собственно их иерархию, нужно поставить галочку в соответствующем поле, после этого слева от иконок объектов появляются иконки папок (п. 2 на 1.0.1), открытая папка показывает родительскую кость с нижележащими дочерними, а закрытая, соответственно, кость без выпадающих дочерних (п. 3 на 1.0.1). Открывать/закрывать папки можно нажатием, как ни странно, кнопки "ОК" внизу окна или двойным кликом левой кнопкой мыши по объекту.

1.0.1

Судя по всему, окно "Иерархия" еще не доработано Алексеем, неудобно и мало чем полезно для редактирования скелета, так как единственное, что в нём можно сейчас сделать – это переименовать объект, и то при наборе текста горячие клавиши остаются активны, т. е. при написании, например, буквы "т" ввод текста прекратится, и на модели отобразятся нормали. Но это моё субъективное мнение.
Полнофункциональным аналогом такой иерархии является Редактор узлов в War3 Model Editor.
Вот, какой скелет получился у меня:

1.11

В нём 42 кости и 1 помощник.
Связи между костями можно просмотреть, используя команду:
Вид\Объекты\Скелет (1.12)

1.12

На этом оснастку скелета можно считать законченной.

Этап 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), как вы уже догадались по её иконке, проигрывает/останавливает проигрывание анимации.
    И вот тут нас встречает первый баг: если во время проигрывания анимации нажать кнопку "Открыть", то кнопка проигрывания анимации перестаёт работать, изменяя иконку на квадрат, при этом не важно, открыли ли вы другую модель, или нажали "Отмена".
    Баг исправляется перезапуском 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)).
Очень сильно помогает во время анимирования возможность отображать КК только одного контроллера выделенной кости. Управлять этим можно с помощью галочки "Высветить КК" (2.5), но поставить эту галочку вы сможете только тогда, когда будет выделена нужная кость и активен один из «инструментов» (точнее – контроллеров: Перемещение, Вращение, Масштабирование), а также кость должна иметь как минимум 2 ключевых кадра связанных с использованием соответствующего инструмента (контроллера).

2.5

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

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

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

Тип контроллера (Тип Интерполяции)

Контроллер анимации - набор КК, отвечающих за какое-то единственное
анимируемое свойство, например, вращение или видимость. Я уже говорил о нём, когда рассказывал про отображение КК определённых объектов.
Тип контроллера (интерполяция) определяет вычисление промежуточных значений между КК. Его можно менять. Для WarCraft III доступны 4 типа контроллеров:
  • Ступенчатый (None) - вычисление не производится, анимируемый параметр объекта не изменится, пока не встретится новый КК. Когда это произойдёт, он поменяется сразу, рывком - в то значение, которое записано в этом КК;
  • Линейный (Linear) - анимируемый параметр между кадрами меняется «линией», т. е. плавно, но без замедления около КК. Этот тип контроллера довольно распространённый, и устанавливается Mdlvis’ом по умолчанию (за исключением контроллера видимости – там Mdlvis устанавливает ступенчатый тип и оперирует только с ним).
  • Безье (Bezier) - изменение параметра описывается кривой Безье. Этот тип занимает в 1,5-3 раза больше места, чем линейный и почему-то никак не настраивается в Mdlvis’е. Зато «сглаживает» анимацию вблизи КК, делая движения более естественными и натурально выглядящими. Важно знать, что в игре Безье-вращение не работает (движения не происходят). Используется этот тип контроллера крайне редко – только в некоторых стандартных моделях WarCraft'а, скорее всего потому, что в «полевых условиях» настроить его довольно сложно, но только на первый взгляд.
  • Сплайновый (Hermite) - изменение параметра описывается сплайном Эрмита. Это самый сложный и интересный тип интерполяции, позволяющий создавать наиболее естественно выглядящие и качественные анимации, при должном умении, разумеется. Такая интерполяция весит еще больше Безье используется во многих стандартных моделях WarCraft III. Когда выбран этот тип контроллера, почти во всех КК отображается еще одна панель – «Параметры кривой», в которой можно настраивать свойства сплайна контроллера объекта в каждом КК. Однако, по неизвестным мне причинам, иногда Mdlvis отказывается отображать эту панель в некоторых кадрах. Скорее всего, это связано с недоработанностью сплайновой интерполяции для данной программы, как и писал сам Алексей.
Но тем не менее, работать с ней можно, и далее я расскажу – как.
В некоторых моделях довольно сложно наглядно проследить разницу типов контроллеров, и поэтому, я создал модель простых часов с маятником. Ведь именно на маятнике с минимумом сложностей можно увидеть действие каждой интерполяции.
Заранее замечу, что во вложениях в отдельном архиве (Interpolations.rar) есть 4 модели этих часов с суффиксами, соответствующими интерполяции, которую я использовал для движения маятника, а также модели BezierEllipseOrb.mdx и HermiteEllipseOrb.mdx, в которых показаны примеры Сплайнового и Безье- перемещения, их я буду использовать далее для углублённого изучения данных типов контроллера. Проверять их нужно в редакторе или игре! Так как Mdlvis не отображает некоторые баги, w3me может неверно работать со Сплайновой интерполяцией (в контроллере вращения) и только WarCraft покажет истинное положение дел, например то, что тип вращательного контроллера Безье не работает в игре (редакторе). Хотя, и в w3me и в Mdlvis интерполяция Безье отображается совершенно верно (если нет багов в КК, разумеется).
Я думаю, действия ступенчатого и линейного типов не нуждаются в больших подробностях, т. к. их просто нет, всё описано выше (багов, связанных именно с характерностью интерполяции, в них не наблюдалось), а вот о Безье и сплайновой интерполяциях мы поговорим подробнее.

Безье (Bezier)

Кривая Безье очень часто используется в компьютерной графике, распространяясь от векторных редакторов до создания сплайнов (как статических, так и для анимирования) в приложениях трёхмерного моделирования. И WarCraft III творение Пьера Безье не обошло стороной.
Столкнувшись с ним в Mdlvis'е не сразу и понимаешь, как оно действует на анимацию – никаких настроек не появляется, а анимация остаётся такой же, как с и линейной интерполяцией. Видимо, Алексей еще не успел внедрить в свою утилиту эти настройки, но я, углубившись в эту тему, нашёл способ настраивать этот тип контроллера вручную и с высокой точностью. Разговор пойдёт о контроллере перемещения, потому что, как я уже говорил, Безье-вращение в игре не работает.
Главная особенность Безье для анимации в WarCraft III - сглаживание углов на линии, по которой мы перемещаем объект, и «выпуклость», т. е. углы сглаживаются не вовнутрь, а наружу, меняя саму линию, а не только её участок рядом с углом
В w3me параметры Безье в каждом КК объекта описываются 3 значениями:
2200: { 0, -1.74099, 60.3338 } | Номер КК и положение объекта в пространстве ({ x, y, z })
  InTan: { 0, 29.741, 60.3338 } | Координаты вершины входящей направляющей ({ x, y, z })
  OutTan: { 0, -29.741, 60.3338 } | Координаты вершины выходящей направляющей ({ x, y, z })
Те, кто работал со сплайнами в 3DS Max, вполне могут провести параллель с кривыми Безье, которые широко используются в нём. Направляющие (2 и 3 на 2.0.1) – это те самые две жёлтые линии с зелёными вершинами на концах. Именно они определяют характер кривой, проводимой между входящей направляющей одной вершины и выходящей направляющей другой.
Рассмотрим их подробнее. Я в 3D Studio Max создал 2 сплайна – ромб, характеризующий движение объекта по своему периметру четырьмя различными КК при линейной интерполяции и тот же ромб, вершинам которого я поставил тип Bezier Corner (входящая и выходящая направляющие независимы друг от друга, как в WarCraft'е), и, настроив их, превратил его в овал. Заметьте, вершин так и осталось 4, т. е. и в игре, движение по периметру такого овала будет тоже характеризоваться четырьмя КК.
Пункт 1 на 2.0.1 – это наша верхняя вершина. При виде спереди справа от неё будет InTan (п. 3 на 2.0.1), т. е. входящая направляющая (не забывайте, что мы рассматриваем её для WarCraft'а, и такое название вовсе не гарантировано в других областях использования кривой Безье), а слева OutTan (п. 2 на 2.0.1) - выходящая направляющая. Двигаясь против часовой стрелки, мы придём во входящую направляющую следующей вершины, т. е. везде "In" стыкуется с "Out" (по часовой стрелке) или "Out" с "In" (против часовой стрелки).

2.0.1

Как же оно действует на анимацию? Очень просто. Представим этот сплайн в виде траектории движения, где вершины – контрольные кадры перемещения (благо в 3DS Max можно без проблем использовать сплайн как траекторию). И перейдём в "Graph Editors/Track view – Curve Editor…", там найдём те параметры, которые мы анимировали, и увидим кривые (у меня это кривые перемещения по оси X и по оси Z (для WarCraft'а роль оси X будет исполнять Y)).
Вот, что мы увидим с обычным ромбом (линейная интерполяция):

2.0.2

А вот, что с овалом, полученным из ромба благодаря Безье:

2.0.3

Разумеется, углубляться в подробности этих графиков я не буду – всё-таки не о них статья, но я думаю, разница очевидна. Безье позволяет создать из ромба овал, из пары ромбов – восьмёрку и т. д., благодаря такой интерполяции можно делать как жёсткие, так и мягкие движения, сложные траектории, и всё это, обходясь минимумом КК.
Хорошо, с определением типа контроллера мы разобрались, и теперь, думаю, гораздо проще понять его работу и настройки для WarCraft III.
Я не стал придумывать какую-то особую модель и просто взял одну их стандартных игровых сфер с небольшим «хвостом» из частиц, чтобы лучше прослеживать траекторию. Повторив тот самый ромб уже в Mdlvis'е, вот, что мы увидим с линейной интерполяцией (для наглядности я добавил координаты точек и саму траекторию движения на скриншот):

2.0.4

Мы сразу видим углы, причём довольно резко выглядящие при анимации. Увидеть это можно, установив типом контроллера линейный, в приложенной модели.
Теперь перейдём в Mdlvis, в Редактор анимаций на вкладку Движение, выберем кость, которую двигали и поставим тип контроллера перемещения – Безье. Пока никаких изменений заметно не будет (потому что направляющие имеют координаты, идентичные вершинам).
И вот сейчас мы подходим к самому важному и интересному.
Для настройки InTan и OutTan нам необходимо узнать координаты направляющих, и здесь, как ни странно, нам придёт на помощь Photoshop (или любой другой редактор, работающий с кривыми Безье, даже MS Word). Установив расположение анимируемой кости во всех КК, я прямо на скриншоте из Mdlvis'а провёл между ними линии, характеризующие траекторию движения (ромб), и, используя инструмент Перо(п. 1 на 2.0.5), провёл линию между двумя точками ромба (верхней и левой), таким образом создав ту самую кривую Безье, которая и должна получиться!
Примечание: в настройках инструмента Перонужно выбирать характер "Пути" (п. 2 на 2.0.5) и тип "Перо" (п. 3 на 2.0.5), а не "Простое перо".
Изменять направляющие можно инструментом Преобразование точки (п. 4 на 2.0.5), как вместе (при нажатии ЛКМ на вершине и движения в разные стороны, не снимая нажатия), так и по отдельности (выделив сами направляющие).
После того, как вы сделали нужную вам кривую, просто на глаз прикиньте координаты направляющих (их точек), у меня это были координаты по осям Y и Z. Если вы затрудняетесь это сделать, можно попробовать создать временные вершины на этих местах прямо в Mdlvis'е и посмотреть их координаты (2.0.6)

2.0.5 | 2.0.6

В принципе, похожие операции можно было произвести в 3DS Max'е, но для этого пришлось бы переносить изображение из окна Mdlvis'а в Макс, потом строить сплайн и пр. На мой взгляд, с Photoshop'ом всё можно сделать быстрее и удобнее.
Я получил координаты { 0, -29, 60 } для OutTan верхней вершины и { 0, -35, 28 } для InTan левой.
Итак, узнав координаты направляющих, нам нужно внести их значения в КК анимируемой кости. Для этого откроем w3me, перейдём в Редактор узлов, затем найдём нашу кость и кликнем ПКМ, выбрав из контекстного меню пункт Редактировать узел. Теперь нажмём кнопку Перенос. Далее ищем требуемые КК (т. к. кривая строится между двумя точками) и в строках с InTan одного кадра и OutTan другого вводим координаты, которые мы определили ранее. Смело жмём ОК и любуемся (если всё сделано правильно) на получившуюся дугу. Заметьте, именно ту дугу, которую мы строили в 3DS MAx’е и Photoshop’е.

2.0.7

Основываясь на полученных знаниях, я уверен, вы без труда определите координаты оставшихся вершин, а в случае с ромбом их легко просто «угадать».
Важно: значения начального и конечного КК должны точно совпадать! Не являются исключением и значения координат направляющих.
Установив все координаты направляющих для всех КК, можно увидеть окончательный результат – тот самый овал, который мы задумывали изначально.

2.0.8

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

Сплайновая (Hermite)

Такой тип контроллера строится на основе сплайна Эрмита, который я, к сожалению, пока, кроме WarCraft'а, нигде не встречал, и то, как у него рассчитывается кривая, как она зависит от направляющих, мне в большей степени непонятно. И узнать принцип его построения без редактора кривой Mdlvis’а мне выяснить, увы, не удалось, однако, как раз этот редактор кривой и спасает положение. Единственная его проблема – неотображаемость в некоторых кадрах (в 90% случаев в конечном, бывает и/или в начальном).
И еще один главный плюс этой интерполяции для WarCraft’а – это то, что она работает для контроллера вращения. Теперь разберём её основные свойства и пути настройки в Mdlvis’е.
Интерполяция сплайном Эрмита очень похожа Безье, но отличается менее выраженной выпуклостью, может быть даже сглаживанием углов, настройка в Mdlvis’е проходит в определённых границах, за них вы сможете выйти только вручную, с помощью w3me (1.07 для вращения), ну тут флаг вам в руки…
Итак, чтобы настроить кривую в области определённого КК определённой кости и контроллера вам необходимо: выбрать кость (п. 1 на 2.0.9), выбрать нужный КК (п. 2 на 2.0.9), затем выбрать нужный контроллер (п. 3 на 2.0.9) и определить его тип (п. 4 на 2.0.9), установив выбор на пункте Сплайновый. Теперь у вас должна отобразиться вкладка Параметры кривой.
» Если этого не случилось…
…вы сможете «заставить» её отображаться следующим способом:
  1. Определите КК, в котором не отображаются Параметры кривой.
  2. Создайте новую локальную анимацию, интервал кадров которой захватывает сбоящий КК (например, если в анимации Stand в кадре 1000 не отображается эта вкладка, создайте анимацию New с интервалом, к примеру, от 700 до 1010). Если после нажатия на кнопку «Создать» вылетела ошибка, просто нажмите ОК, и не обращайте внимания, но можете и перезапустить вис.
  3. В новой анимации в любом кадре, кроме сбоящего, например 805, произведите движение/вращение/масштабирование для соответствующего контроллера.
  4. Теперь перейдите на сбоящий кадр, и вуаля – теперь Параметры кривой отображаются!
  5. Измените их, как вам нужно.
  6. Затем измените интервал дополнительной анимации так, чтобы сбоящий кадр больше в неё не входил, а дополнительный остался (например, так: от 700 до 999¬).
  7. Удалите дополнительный кадр.
  8. Удалите дополнительную анимацию.
Интерфейс вкладки Параметры кривой (п. 5 на 2.0.9) состоит из четырёх частей: график кривой (п. 6 на 2.0.9) и три параметра, определяющие её вид - Натяжение (п. 7 на 2.0.9), Целостность (п. 8 на 2.0.9) и Наклон (п. 9 на 2.0.9).
  • График кривой представляет собой небольшой прямоугольник, в котором схематично представлен установленный сплайн. Он имеет вид выпуклости и условно разделён на две половины красной линией. Эту линию можно считать своеобразной интерпретацией ключевого кадра, для которого и устанавливается текущий сплайн. Левую часть можно считать в качестве OutTan (как показали тесты на модели с Безье при движении против часовой стрелки), а правую InTan.
  • Натяжение - один из параметров кривой, он действует как усилитель или, наоборот, снижает действие Целостности. Если же та равна нулю, то Натяжение определяет замедление вблизи КК, где -100 обозначает его отсутствие, а 100 - максимальный показатель (короткая резкая остановка в КК). Также при значении 100, все остальные параметры автоматически обнуляются. Они полностью зависят от натяжения.
  • Целостность - показатель очень похожий на "Bubble" или "Pinch", т. е. он определяет вогнутость или выпуклость обоих ветвей сплайна (на вершину не влияет). Усиливается отрицательными значениями Натяжения.
  • Наклон поворачивает ветви сплайна в одну или другую сторону, в зависимости от значения. Он как бы усиливает Целостность на одном участке и ослабляет на другом. Также усиливается отрицательными значениями Натяжения.

2.0.9

Экспериментальным путём я выяснил основные характеристики различных конфигураций Натяжения, Целостности и Наклона кривой. Я использовал только крайние и нулевые значения показателей.

Одиночные сочетания

  1. Натяжение - острее с предварительным замедлением (+100) или мягче с гладким проходом (-100).
  2. Целостность +100: небольшая выпуклость перед точкой (провал на точке); -100: аналог Линейной интерполяции.
  3. Наклон +100: мягкая выпуклость в сторону InTan.
  4. Наклон -100: мягкая выпуклость в сторону OutTan.

Сочетание Натяжение-Целостность

  1. Натяжение 100, целостность 100: обнуляется целостность >> п.1.
  2. Натяжение -100, целостность 100: резкий провал на точке => натяжение усиливает выпуклости по сторонам.
  3. Натяжение 100, целостность -100: обнуляется целостность >> п.1.
  4. Натяжение -100, целостность -100: длинные мягкие углубления по сторонам от точки с резким проходом (усиление целостности).
  5. Натяжение 0, целостность 0: гладкий проход без замедления.

Сочетание Натяжение-Наклон

  1. Натяжение 100, наклон 100: обнуляется наклон >> п.1.
  2. Натяжение 100, наклон -100: обнуляется наклон >> п.1.
  3. Натяжение -100, наклон 100: более крутая мягкая выпуклость в сторону InTan => усиление наклона.
  4. Натяжение -100, наклон -100: более крутая мягкая выпуклость в сторону OutTan => усиление наклона.

Сочетание Целостность-Наклон

  1. Целостность 100, наклон 100: выпуклость в сторону InTan с предварительным замедлением.
  2. Целостность 100, наклон -100: выпуклость в сторону OutTan с предварительным замедлением.
  3. Целостность -100, наклон 100: небольшое длинное углубление из OutTan, затем стандартный проход в InTan с предварительной резкой остановкой в точке и рывком.
  4. Целостность -100, наклон -100: небольшое длинное углубление в InTan, затем стандартный проход из OutTan с предварительной резкой остановкой в точке и рывком.

Сочетание Натяжение-Целостность-Наклон

  1. Натяжение 100, целостность 100 (-100), наклон 100 (-100): обнуляются целостность и наклон >> п.1.
  2. Натяжение -100, целостность -100, наклон -100: усиление п.17 в сторону InTan - очень резкий рывок после мягкой остановки в точке.
  3. Натяжение -100, целостность -100, наклон 100: усиление п.16 в сторону OutTan - очень резкий рывок перед мягкой остановкой в точке.
  4. Натяжение 0, целостность 0, наклон, 0: мягкое длинное замедление в точке.
В приложенной модели HermiteEllipseOrb.mdx вы можете увидеть и даже потренироваться с различными конфигурациями параметров сплайна для контроллера движения с уже знакомым нам овалом и сферой.
Но вернёмся к забытой нами модели маятниковых часов, ведь именно о них я говорил в начале раздела об интерполяции. На их примере вы сможем убедиться в работоспособности и качественности сплайнового типа для контроллера вращения.
Сделав анимацию маятника с помощью линейной интерполяции, я меняю её тип на сплайновый. И тут же встречаюсь с проблемами в начальном и конечном кадре, но в данном случае она исправима довольно простым путём. Так как в анимации происходит 3 движения маятника, одно из них приходится на центр анимации, и, настроив его (Натяжение: -100; Целостность: 0; Наклон: -50) я через w3me 1.07 копирую значения координат вращения, InTan и OutTan начальному и конечному кадру, при этом меняя их значения на противоположные, тем самым получая симметричную кривую, т. е. именно то, что мне и нужно (2.0.10).
Но вполне можно воспользоваться и тем методом, что я приводил выше.
0: { 0.130526, 0, 0, 0.991445 } | Копируем значения из кадра 500
  InTan: { 0.382683, 0, 0, 0.92388 } | и делаем значение X-координат
  OutTan: { 0.130526, 0, 0, 0.991445 } | противоположным.
500: { -0.130526, 0, 0, 0.991445 }
  InTan: { -0.382683, 0, 0, 0.92388 }
  OutTan: { -0.130526, 0, 0, 0.991445 }
1000: { 0.130526, 0, 0, 0.991445 } | Последний кадр должен быть равен начальному,
  InTan: { 0.382683, 0, 0, 0.92388 } | поэтому просто копируем его,
  OutTan: { 0.130526, 0, 0, 0.991445 } | изменив лишь номер КК (с 0 на 1000).

2.0.10

Теперь можно просмотреть анимацию сначала в w3me и Mdlvis’e, а затем в WarCraft 3 World Editor.
Но следует помнить, что со сплайновым типом контроллера тоже сопряжены баги, и часто исправить их бывает очень трудно.
  • Довольно распространённая ситуация, когда «на ровном месте», т. е. просто между двумя кадрами появляются странные движения, которых быть не должно. Иногда помогает пересоздание сбоящего кадра путём копирования другого и полностью вручную, иногда спасает ситуацию копирование КК и вставка на один кадр дальше, но бывает так, что и это не помогает.
    Частая ошибка в таких ситуациях: человек начинает добавлять один промежуточный кадр, потом еще один, потом еще, и в итоге вместо одного лишнего движения получаются десятки. Этого делать не надо, хотя в крайне редких случаях бывает, что и этот метод помогает.
    Одна из самых распространённых причин такого бага - сочетание сплайновой и линейной интерполяций. Они плохо уживаются вместе, и чтобы избежать подобных вещей необходимо дочерней (иногда и родительской тоже) кости также устанавливать сплайновый тип контроллера.
  • При копировании со сплайновой интерполяцией, после вставки сбиваются значения кривой, как для вставляемого, так и для соседних кадров. Аналогична ситуация с изменением значения контроллера (т. е. угла поворота, координат перемещения, процентов масштаба и т. д.).
  • Не стоит доверять w3me при использовании сплайнового контроллера вращения - часто он отображает баги, которых нет, или просто не совсем корректно воспроизводит эти движения.
Использование сплайновой интерполяции, аналогично другим, доступно почти для всех контроллеров, позволяя сделать любую анимацию плавной и живой.

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

Глобальные анимации

Теория

Читая раздел об интерполяции, вы наверняка заметили, что в использовавшейся модели часов в анимации Stand нет ни одного КК. Странно, не правда ли? К тому же присутствуют еще 3 анимации с длительностью в одну, десять и сто секунд, в которых показаны какие-то отдельные движения. Это и есть глобальные анимации.
В самом начале теоретической части я рассказывал о разнице между локальными и глобальными анимациями. Как вы помните, так называемые "глобалки" проигрываются постоянно и их никак нельзя выключить или остановить. Их может быть много и при должной компоновке можно получить нужный результат куда проще и менее затратно, чем с локальными.
Как, например, и сделано в часах. Чтобы стрелки двигались более менее реалистично, необходимо, чтобы часовая двигалась намного медленнее минутной. У меня - в 10 раз, а маятник вообще двигается всего одну секунду в то время, как часовая стрелка - сотню. Без глобалок пришлось бы устанавливать маятнику 200 КК, минутной стрелке как минимум 50. Настоящее мучение ради каких-то часов. А благодаря глобальным анимациям всё можно сделать с минимумом проблем. Один такт для маятника, один оборот для минутной стрелки и один - для часовой. После этого, всё скомпонуется в Stand'е любой длины и будет двигаться постоянно, независимо от остальных аним.
Но стоит помнить о некоторых особенностях глобальных анимаций:
  • Если вы задействуете кость в глобалке, то больше ни в каких анимациях использовать её напрямую не сможете.
  • Следите за тем, чтобы начальный и конечный кадры локальных анимаций не совпадали с КК глобальных – это чревато багами.
  • Используйте глобальные анимации разумно, так как выключить их вы никак не сможете. Их можно лишь скрыть, сделав поверхность, которая связано с костью, участвующей в глобальной анимации, невидимой.

Практика

Мой техножрец тоже не обойдётся без глобальных анимаций. У него будет постоянно вращаться бур на механической руке, а в Death, этот бур будет скрыт и заменён на неанимированный.
Здесь статья прерывается
Буду рад выслушать конструктированную критику и просто ваши отзывы, ну и относительно опроса тоже)
Прикрепленные файлы
Тип файла: rar A-a-Animations.rar (2.04 Мбайт, 80 просмотров )
Тип файла: rar Interpolations.rar (19.0 Кбайт, 59 просмотров )

Отредактировано WebSter, 24.01.2011 в 16:05.
Старый 24.01.2011, 16:06
ScorpioT1000
Работаем
offline
Опыт: отключен
Это всё неудобно в висе и вар3ме
Старый 24.01.2011, 16:22
reALien

offline
Опыт: 29,211
Активность:
Молодец, до этой статьи я применял эрмиты и безье только в анимах партиклов и материалов, теперь буду знать, как иначе ^^
Познавательно)
reALien добавил:
WebSter:
Довольно распространённая ситуация, когда «на ровном месте», т. е. просто между двумя кадрами появляются странные движения, которых быть не должно.
Это, кстати, бывает и с линейными тоже
Старый 24.01.2011, 16:49
WebSter
Товарищ Mechanicus
offline
Опыт: 86,111
Активность:
ScorpioT1000, ну а что ж поделать, это ведь не макс
reALien, спс)
Это, кстати, бывает и с линейными тоже
ну у них всё-таки иной характер: их можно исправить добавлением новых кадров, а в сплайнах этим только усугубишь ситуацию.
Старый 24.01.2011, 18:32
Сказочник

offline
Опыт: 39,429
Активность:
Черт, как говорится, "многобукаф"... На прочтение этого может уйти час, а то и больше...

Добавлено:
Не, ну это я преувеличил...

Отредактировано Сказочник, 24.01.2011 в 18:46.
Старый 24.01.2011, 18:38
WebSter
Товарищ Mechanicus
offline
Опыт: 86,111
Активность:
Сказочник, за 5 минут всё это не объяснишь =)
Старый 24.01.2011, 18:48
XOR

offline
Опыт: 38,284
Активность:
не пробовал еще делать, но уже видно крутода. Куда еще больше?=0 Вбазу)
Старый 24.01.2011, 18:48
lKS
Grunge face
offline
Опыт: 10,442
Активность:
WebSter, статья очень хорошая пусть и мудреная. Я даже для себя кое-что открыл...
Старый 24.01.2011, 18:53
Сказочник

offline
Опыт: 39,429
Активность:
Цитата:
Кнопка "Проиграть анимацию" (п. 12 на 2.1), как вы уже догадались по её иконке, проигрывает/останавливает проигрывание анимации.
И вот тут нас встречает первый баг:

Дополню: для того чтобы открыть модель mdlvis выходит из редактора анимаций в редактор вершин - именно тогда происходит баг, а не при открывании.
Старый 24.01.2011, 18:53
WebSter
Товарищ Mechanicus
offline
Опыт: 86,111
Активность:
Сказочник, хорошо, учту. Просто сейчас редактировать не удастся, так как ограничение 50000 символов не даёт отредактировать пост... а Зибада говорил, что если в двух постах будет в сумме больше 50к символов, то они не объединятся =О
X, спс, но, как видишь, большинство хочет больше)) хотя там в принципе где-то 20-30% осталось... да проблема даже не в том, чтобы дописать, а в том, чтобы довести до ума юнит-пример, мне ж его нужно полностью заанимировать, а то непрезентабельно)
lKS, спасибо)
Старый 24.01.2011, 19:08
Сказочник

offline
Опыт: 39,429
Активность:
Вот блин, половина статьи - про типы интерполяции... Можно их и в отдельную статью...
Старый 24.01.2011, 19:08
WebSter
Товарищ Mechanicus
offline
Опыт: 86,111
Активность:
Мм... ну вообще я подразумевал это как подстатью. Да и целью я ставил именно "всё и сразу" ) впрочем, подумаю
Старый 24.01.2011, 19:21
reALien

offline
Опыт: 29,211
Активность:
Сделай статью в несколько глав, как у Шурика.
И с линейными далеко не всегда помогает вставка кадров, иногда по неизвестным причинам на определенном отрезке линейки идут паразитные движения костей и исправляется это только созданием анимации в другом промежутке.
Мне это запороло одну модель, когда я еще учился и не понимал в чем дело :'(
Старый 24.01.2011, 19:49
WebSter
Товарищ Mechanicus
offline
Опыт: 86,111
Активность:
reALien, очень возможно, что проблема была в перепутывании кадров (см. скрин 2.7), но если нет, то я такого не встречал уже точно
WebSter добавил:
reALien:
Сделай статью в несколько глав, как у Шурика.
ну там как раз подстатьи
Старый 24.01.2011, 20:18
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
статься хорошая, но напоминает "Как сделать сферу в mdlvis"
ну ты понел
Старый 24.01.2011, 21:38
reALien

offline
Опыт: 29,211
Активность:
WebSter:
МКИ(п. 14 на 2.1) - некая аббревиатура
Межкадровый интервал - аббревиатура вполне определенная)
Старый 25.01.2011, 01:16
Red XIII

offline
Опыт: 3,935
Активность:
Лично я учился анимации на основе анимации близзовских моделей - сперва смотришь, как у них, учишься делать так же, затем уже можешь делать новые анимации сам.
И никакие статьи я не читал. Сперва создавал неанимированные декорации, затем анимированные (вроде домов, которые при смерти сквозь землю проваливаются и пропадают), потом использовал в качестве базы здания и юниты обычные изменяя немного анимки, а в конце - уже сам делала их.
Старый 25.01.2011, 10:10
WebSter
Товарищ Mechanicus
offline
Опыт: 86,111
Активность:
Master_chan, не-а, не понел =\ намекаешь, что она ненужная?
reALien, вот и отлично, теперь будем знать =)
Red_XIII, все так учились, это ж вроде первая статья на эту тему
Старый 25.01.2011, 14:32
PUVer
За GW!
offline
Опыт: 130,808
Активность:
Просто клад для начинающего моделлера, всё не осилил, но обязательно прочту))
Старый 25.01.2011, 15:21
WebSter
Товарищ Mechanicus
offline
Опыт: 86,111
Активность:
PUVer, спасибо, удачи в освоении)
Старый 25.01.2011, 16:17

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:43.