Варкрафт 3 как изменить анимацию
Так уж мы устроены: мы реагируем на изменения, а не на статичную информацию (чтобы было понятнее, вспомним популярную поговорку про рака: поставьте рака в холодную воду, а потом нагрейте ее до кипения — он закипит, не реагируя). Бросьте в горячую воду, и вы будете покрыты кипятком.). Если изменения происходят быстро, мы просто не понимаем, что происходит, если долго, мы будем раздражены.
Дизайнеры игрового мира, интерфейса прекрасно это понимают, поэтому все, что происходит в мире, интерфейсе не мгновенно. Произносятся заклинания с различными эффектами, интерфейс прыгает и подмигивает нам, и все проходит гладко, чтобы мы могли четко определить изменения. Переход элемента управления GUI из состояния в состояние сам по себе называется — с анимацией (можно привлечь внимание звуком, поэтому анимация не нужна).
Теперь пришло время понять, как это сделать за нас. Конечно, при такой огромной базе настроек и параметров в интерфейсе не обойтись без базовых классов для работы с анимацией.
#WarCraft 3 and #WE — Эффект на модели во время анимации (система частиц)
Механизм анимации в World of Warcraft
Механизм обработки анимаций выглядит примерно так
- Каждый регион может создать один или несколько группы преобразований(AnimationGroup) с помощью метода CreateAnimationGroup
- Каждая группа преобразований является контейнером для одного и более конкретные преобразования(Анимация).
- Если порядок Специфические преобразования существует, группы преобразований независимый.
Процесс анимации и основные этапы преобразования показаны ниже:
- Шаг обработки
- Отложенный шаг перед обработкой.
- Отложенный шаг после обработки.
- Различные обработчики трансформации (Анимация)
Шкала от 1 до 9 — в секундах (например).
3 красные линии:
- Стартовая позиция группы обработки.
- Текущая позиция группы преобразований.
- Конечная позиция обработки группы трансформации.
Каждый из элементов этой схемы имеет рычаги управления, которые будут описаны ниже.
Описание обработчиков анимации
AnimationGroup
- Воспроизвести () — Начать обработку специфические преобразования в группе
- Pause () — Приостановить обработку
- Стоп () — Остановить обработку
- Завершить () — Окончание обработки
- IsPaused () — Показывает состояние приостановленной обработки
- IsDone () — Указывает, завершена ли обработка
- IsPlaying () — Показывает статус обработки
- IsPendingFinish () — Статус ожидания окончания обработки.
- GetProgress () — Получить прогресс обработки (диапазон от 0 на 1)
Урок по редактору Warcraft 3 Frozen Throne New [9xd] Анимация
Направление обработки: «ВПЕРЕД», «НЕТ»
«REPEAT» — при достижении конца обработки текущее время сбрасывается и обработка продолжается с начала
Направление обработки: «ВПЕРЕД», «НЕТ», «ВПЕРЕД»
«BOUNCE» — При достижении конца обработки, направление обработки изменяется.
направление обработки: «ВПЕРЕД», «НЕТ», «НАЗАД», «НЕТ»
- HasScript ( handler ) — Существует ли обработчик события handler.
- GetScript ( handler ) — получить обработчик события.
- SetScript ( handler ) — Установка обработчика события handler.
- HookScript () — Вызов обработчика перегрузки для обработчика события.
- OnFinished ( self,requested ) — Вызывается в конце обработки анимации. Истина, если при вызове метода происходит окончание групповой обработки Завершить ()
- OnLoad ( self ) — Вызывается после создания группы
- OnLoop ( self,loopState ) — Вызывается при изменении направления обработки. loopState — новое направление обработки (смотреть GetLoopState ())
- OnPause ( self ) — Вызывается после паузы в обработке ( Пауза ())
- OnPlay ( self ) — Вызывается перед началом обработки ( Воспроизвести ())
- OnStop ( self,requested ) — Вызывается после остановки обработки. requested — Истина, если остановка вызвана вызовом функции Остановить ())
- OnUpdate ( self, elapsed ) — вызывается каждый раз, когда система рисует экран. elapsed — количество секунд с момента предыдущего вызова OnUpdate.
- CreateAnimation («animationType», [«name»[, «inheritsFrom»]]) — Создание и возвращение Анимации (конкретного обработчика) в качестве дочернего элемента этой группы.
- GetAnimations () — Возвращает список дочерних обработчиков.
- GetMaxOrder () — возвращает максимальный порядковый номер дочерних обработчиков.( Animation:GetOrder ())
Анимация
методов управления обработкой:
- Play () — Запуск анимации
- Приостановить () — Приостановить анимацию
- Остановить () — Остановить анимацию
- IsDone () — Проверка окончания анимации
- IsPlaying () — Проверка текущей обработки
- IsPaused () — Проверка анимации паузы
- IsStoped () — Проверка окончания анимации
- IsDelaying () — Проверяет время простоя анимации
- GetElapsed () — Возврат времени обработки в секундах
- GetProgress () — Получить прогресс обработки (диапазон от 0 На 1), без диапазонов простоя.
- GetProgressWithDelay () — Получить прогресс обработки (диапазон от 0 на 1), с диапазонами простоя
- GetSmoothProgress () — Получить прогресс обработки сглаживания (диапазон от 0 на 1)
- SetOrder ( order ) — порядок воспроизведения текущей анимации. Диапазон от 0 до 100. Чем меньше порядок, тем раньше будет воспроизведена текущая анимация. Анимации с одинаковым порядком будут выполняться одновременно.
- GetOrder () — Получить текущий порядок анимации.
- SetSmoothing ( smoothType ) — Установка эффекта сглаживания. smoothType — может быть:
«IN» — Плавное начало анимации и ускорение изменений к концу. | «OUT» — Быстрое начало анимации и плавное завершение. | «IN_OUT» — плавное начало анимации, ускорение к середине, плавное окончание. | «NONE» — Постоянная скорость смены анимации. |
![]() |
![]() |
![]() |
![]() |
Обработка сообщения:
- HasScript ( handler ) — есть ли обработчик события handler.
- GetScript ( handler ) — Получить обработчик события обработчика.
- SetScript ( handler ) — Установить обработчик события обработчика.
- HookScript ( handler ) — Вызов обработчика перегрузки для события обработчика.
Обработчик может быть:
OnFinished ( self,requested ) — Вызывается в конце обработки анимации. requested — True, если конец групповой обработки вызывается вызовом метода Завершить ()
OnLoad ( self ) — Вызывается после создания группы
OnPause ( self ) — Вызывается после паузы в обработке (вызов метода Приостановить ())
OnPlay ( self ) — Вызывается перед началом обработки (вызов триггера Воспроизвести ())
OnStop ( self,requested ) — Вызывается после остановки обработки. requested — True, если остановка была вызвана вызовом метода Остановить ())
OnUpdate ( self, elapsed ) — вызывается каждый раз, когда система перерисовывает экран. elapsed — количество секунд с момента предыдущего вызова OnUpdate.
Выше приведены общие свойства всех подтипов Animation. Всего существует 5 подтипов, которые, в зависимости от типа, расширяют свои свойства:
- Rotation — анимация поворота региона.
SetDegrees ( degrees ) — Установить степень поворота на период обработки.
GetDegrees () — Получить градус поворота.
SetRadians ( radians ) — Задать степень поворота в радианах.
GetRadians () — Получить степень поворота в радианах.
SetOrigin («point», xOffset, yOffset ) — Устанавливает точку, относительно которой будет выполнен поворот.
точка, xOffset, yOffset = GetOrigin () — Получить точку поворота.
Источник: www.сайты.google.com
Раздел «Анимация
Эта статья предназначена для людей, которые уже имеют базовые навыки работы с триггерами!
Сегодня мы будем работать над разделом «Анимации» в триггерах.
Нам нужен русификатор триггеров
1.Откройте редактор триггеров
И сразу же удалите стандартные триггеры категории.
2.Создать собственную категорию
3.Создайте свой триггер.
Посмотрите на раздел анимации и увидите, что первая функция здесь: «Воспроизвести анимацию отряда».
Но на самом деле это просто кривой перевод.
Эта функция воспроизводит анимацию одного юнита, а не отряда.
Итак, мы выбрали эту функцию и видим, что в окне функции появилось следующее сообщение: Play animation unit stand.
Помните, что слова, выделенные красным цветом, являются обязательными, а синим — опциональными.
Щелкните на юните и выберите любой юнит на PI (панель инструментов) и поместите его на карту.
Теперь нажмите на него и снова появится блок выбора. Нажимаем ok и смотрим на второе слово.
Открылось окно, в котором мы можем изменить название анимации.
Анимацию можно посмотреть, кликнув на воина в самом редакторе местности.Щелкните там на блоке, и теперь слева мы видим анимации и их названия.Выбранный?
Если да, то продолжаем, теперь запоминаем название анимации, открываем свернутый редактор триггеров и пишем в строке анимации нужное нам значение.
Теперь в событиях выберите : Инициализировать карту».
В условиях — ничего
И в действиях перед нашей анимацией создаем функцию: «wait 2 sec.»
Теперь в редакторе местности установим начальную позицию красного игрока рядом с нашим юнитом и кликнем для проверки.
Работает?
Далее.
4. Воспроизвести анимацию стойки юнита
Ну здесь я думаю все понятно есть описание.
5.Анимация юнита стоять в очереди
Здесь я сам не понимаю, что это такое, перевод может быть неправильным, поэтому не могу сказать точно.
6. Сброс анимации.
Есть анимации, которые не могут повторяться вечно с помощью одной функции .
Например, мы задали лучнице анимацию атаки, и когда она сделала анимацию, она застыла на последнем кадре этой анимации, и не двигается.Это некрасиво, поэтому используйте анимацию Reset, чтобы вернуть блок в нормальное положение.
7. Удалить, Включить анимацию отряда.
Используйте это для включения или выключения анимации
Например, мы убрали анимацию атаки юнита, и теперь он не будет использовать эту анимацию при атаке. С помощью функции add верните анимацию, которую вы удалили ранее..
8. Отключение изменения частей лица
На самом деле, это нужно для того, чтобы включить изменения во фронт (опять кривой перевод)
На «Unit» поставьте, кто должен поворачивать туловище или голову, а на «faces unit» на кого поворачивать голову, туловище.
9. Сбросить вращение туловища
Отключает функцию 8.
10. Измените размер отряда
Увеличьте размер юнита, внутри написано more.
11. Изменить раскраску поверх отряда
Здесь вы можете разобраться самостоятельно.
12. Скорость анимации отряда
Вы можете изменить скорость анимации.Пример используется в кампании roc human, когда вы убили некроманта Кел-Тузеда.
13. Измените скорость вращения
Думаю, здесь все понятно.
14. Скорость движения блока
Изменяет скорость передвижения юнита.
Не смотрите на описание в функциях.(неправильно)
15.Изменить высоту полета
Здесь все понятно.
16. Изменить угол окна свойств
Я думаю, что это изменяет угол единицы.
17. Воспроизвести анимацию уничтожения.
На самом деле она позволяет воспроизводить анимацию разрушаемых объектов.
18. В очереди анимации разрушения
Не знаю точно, что это такое.
19. Изменение скорости анимации уничтожения
Изменяет скорость воспроизведения анимации разрушаемых объектов.
20. Воспроизвести анимацию не персонажей в радиусе.
Вы можете выбрать тип декораций (не юнитов!), которое будет воспроизводить одну указанную вами анимацию.
21. Воспроизвести анимацию не персонажа в регионе.
Почти то же самое, что и функция 20, только в области.
Источник: wc3-maps.ru
ЧАСТЬ II. РЕДАКТОР АНИМАЦИИ.
В версии 1.0 в дополнение к редакторам текстур и вершин есть еще один модуль — редактор анимации. Это позволяет корректировать движения (позы) модели. Рассмотрим работу с редактором на примере HarpyWitch.mdl (war3).mpq/Creeps/HarpyWitch).
Итак, давайте загрузим эту модель в MdlVis. Теперь вызовем редактор анимации. Это можно сделать через меню (Modules->Animation Editor) или нажав F3. Вы можете вернуться обратно в редактор вершин, нажав F1 или используя пункт меню Modules->Vertex Editor.
При переключении на редактор анимации MdlVis принимает следующий вид:
Вы можете видеть, что панель навигации все еще активна, что позволяет вращать, смещать и масштабировать систему координат. Также доступна панель выбора объектов, переключение режимов. Надеюсь, у вас есть все текстуры на месте? Библиотека ijll15.dll тоже? Затем переключимся в режим (клавиша F) — так будет удобнее смотреть анимацию.
Как обычно, справа находится панель инструментов. Теперь он почти пуст. В верхней части находится список анимаций (в настоящее время они подсвечиваются), а в нижней — кнопка .
Кроме того, прямо под рабочей областью появляется новый объект — Панель кадров. На этой панели будут отображены все кадры анимации. Теперь отображается вся линия анимации, от 0 до 15167 кадров.
Обратите внимание, что в WarIII разметка ведется не по кадрам, а по секундам. И к — когда анимация рендерится в MdlVis, каждая секунда делится на 1000 кадров.
Оказалось, что суммарно все анимации этой модели занимают 15.1 сек. время. Нажатие на кнопку
позволяет вам начать играть. Нажмите на кнопку и посмотрите: Вы видите, что модель как-то странно дергается. Дело в том, что в модели все ее анимации записаны последовательно друг за другом. Но они не обязательно подходят друг другу — между анимациями вполне могут быть <дырки>- пустые кадры, заполненные каким-либо мусором. Поэтому при переходе от одной анимации к другой модель резко дергается. Остановите воспроизведение, нажав на кнопку
. Видно, что модель застыла в той позе, в которой ее поймал os-tanov, а в середине шкалы анимации появилась красная линия:
Эта линия указывает на текущее положение. Она всегда присутствует на шкале (только в начале она находится на нулевом кадре, у левой границы шкалы и ее почти не видно). Номер текущего блока указывается в соответствующем поле справа (). Если навести курсор мыши на красную линию, она примет форму двойной стрелки вправо.
Затем, нажав левую кнопку мыши (и удерживая ее), можно передвинуть этот ползунок по шкале анимации. Установите его в нужное положение, отпустите кнопку мыши: номер кадра в окошке изменится, измените позу фигуры (она будет соответствовать выбранному кадру). Вы также можете установить текущий блок, набрав его номер в окне блока (затем нажав Enter).
Также обратите внимание на флажок между шкалой и рамкой кадров. Это позволяет применить межкадровый интервал. Установите этот блок. Под ними появляется окошко со значением:
Число в этом поле определяет интервал между кадрами (t.е. сколько кадров пропускается при воспроизведении). Чем больше этот интервал, тем быстрее анимация (но тем ниже качество). Установка небольшого MCI позволяет просматривать анимацию на низкой скорости. Снимите флажок ICI (поле интервала исчезнет), и анимация снова будет воспроизводиться с реальной скоростью.
КЛЮЧЕВЫЕ КАДРЫ
Вы, наверное, заметили, что шкала анимации очерчена множеством синих линий. В некоторых местах они расположены так часто, что сливаются в сплошную синюю область. Эти метки являются метками t.н. keyframes. Чтобы понять, для чего они нужны, давайте разберемся, как выполняется анимация в War. Дело в том, что хранить каждый кадр (из нескольких тысяч) слишком накладно.
Таким образом, в реальности в модели всего несколько десятков (иногда сотен) кадров, в которых задаются позы модели. Каждый такой кадр пронумерован. При этом все промежуточные кадры не сохраняются, а вычисляются как нечто среднее между двумя ближайшими ключевыми кадрами (чтобы обеспечить плавный переход модели из одной позы в другую). Это позволяет значительно сэкономить на размере модели, хотя расчет промежуточных кадров очень трудоемок и требует значительных вычислительных затрат. Кроме того, это упрощает редактирование модели: вам не нужно исправлять модель в каждом кадре, достаточно подправить несколько ключевых кадров.
Итак, все позиции всех ключевых кадров отмечены на шкале синими метками. Кроме того, когда ползунок попадает точно на ключевой кадр (и этот кадр становится текущим), его номер в поле кадра подсвечивается синим цветом.
Из-за большой важности ключевых кадров, MdlVis вводит простой способ перехода к ним. Если вы нажмете левую кнопку мыши Слева или справа красный ползунок, то он будет двигаться в указанном направлении до ближайшего ключевого кадра. Обязательно потренируйтесь ориентироваться в шкале и научитесь находить ключевые кадры.
Далее, для экономии места я буду сокращать словосочетание как CC.
АНИМАЦИЯ.
Как вы понимаете, работать сразу со всей линейкой анимации очень неудобно: ключевые кадры находятся слишком близко друг к другу, сливаясь в один. Поэтому гораздо удобнее работать с отдельными анимациями (здесь, кстати, меньше риска, что вы <залезете>в соседней анимации, которую совсем не хотелось редактировать. Да, и все же попробуйте найти нужную анимацию в масштабе). Расположена на панели
список инструментов позволяет выбрать текущую анимацию для редактирования. Здесь перечислены все анимации данной модели (у разных моделей разный их набор). Кроме того, п <Вся линейка>позволяет снова вернуться ко всей (полной) шкале анимации. Вы, конечно, уже видели подобный список — в окне WarIIIViewer. Выберите анимацию, например, Стойка-1. При этом изменится поза модели (она будет соответствовать первому кадру указанной анимации), на шкале кадров появится разметка не всей линии анимации, а только ее части, соответствующей данной анимации; а панель инструментов заполнится:
Прежде всего, обратите внимание, что ключевые кадры теперь разнесены (только что увеличили масштаб), поэтому их можно свободно выбирать. Конечно, вы можете воспроизвести выбранную анимацию и выбрать кадр для просмотра. Но это все ерунда — удобнее просматривать анимацию во Вьювере. И нам нужно знать, как редактируются эти анимации.
СКЕЛЕТ МОДЕЛИ
Допустим, нам нужно изменить анимацию Walk — 1 (полет гарпии). Давайте выберем эту анимацию. Затем перейдите в режим контура (выключите общий вид) и нажмите на <редактировать>панель инструментов. Также, для наглядности, установим флажок . В результате модель будет выглядеть следующим образом:
Вы можете видеть, что панель инструментов значительно изменилась (приспособлена для редактирования позы), а сама модель покрыта зелеными квадратами. Вот как это рендерится скелет модели.
В War используется t.н. анимация скелета. Суть ее в том, что после создания формы модели создается еще и форма рамка — Набор точек, невидимых в игре. Эти точки тесно связаны друг с другом. После этого к этим костям прикрепляются отдельные вершины, чтобы любые изменения в кости передавались прикрепленным вершинам.
Это, как мы вскоре увидим, значительно упрощает анимацию. Например, все вершины крыла прикреплены к одной кости, поэтому если нам нужно поднять крыло, нам нужно переместить только одну точку каркаса, а не каждую из вершин.
Итак, что MdlVis позволяет делать с точками проволочного каркаса? Прежде всего, выделите их. Щелкните на одной из этих точек, например, на той, которая находится рядом с коленом. Точка станет выделенной — она будет окрашена в оранжевый цвет. Кроме того, через него будет проходить относительные оси координат.
Они пока не используются в этой версии MdlVis.
В данном случае — на панели инструментов в окне <Объект скелета>появится имя выбранной точки (так мы узнаем, что только что выбрали точку с именем bone_leg2_r), а чуть ниже — имя точки с именем bone_leg2_r тип объекта. Существует два типа объектов кадра: кубики и вспомогательные элементы. В MdlVis разницы между ними нет (хотя в War обработка помощника быстрее, чем кубика). Поэтому в будущем я буду называть все скелетные объекты костями.
Все кости связаны в единый скелет (каркас) модели. Вы, наверное, уже заметили, что при выделении кости еще одна кость выделяется черным цветом, а еще несколько — желтым:
Подсвечивается черным цветом родитель для выделенной кости. Именно к ней привязывается выбранная кость, и когда изменяется родительская, это изменение передается дочерним костям. Каждая кость может иметь только одного родителя (или вообще не иметь родителя), но любое количество дочерних костей.
Кстати, попробуйте выделить родительскую (черную) кость. Прежде всего, вы увидите, что подсветка текущей кости была удалена: в MdlVis может быть выделена только одна кость. И текущая кость перекрашивается в желтый цвет, t.к. для этого случая это ребенок. Более того, кости, которые уже были желтыми, остаются таковыми. Здесь действует следующее правило:
Дочерняя кость моей дочерней кости также является моей дочерней костью=).
Но теперь в качестве родителя уже отмечена другая кость. Давайте выделим ее сейчас: есть еще больше дочерних костей. В большинстве случаев, двигаясь от родителя к родителю, мы можем найти кость, по отношению к которой все (или почти все) другие кости являются дочерними. (Это нелегко сделать в модели гарпии, т.к. несколько костей имеют одинаковые координаты):
Это т.н. корень Кость (можно увидеть аналогию с каталогами файлов). Обычно в ее названии есть слово «Корень».
Кстати, при попытке выделить кость, вы часто можете столкнуться с ситуацией, когда две (или более) кости полностью перекрываются. Вы можете использовать список на панели инструментов, чтобы выбрать их. Если вы выберете любую кость из этого списка, она сразу же станет выделенной. Взгляните на этот список. Вы можете видеть, что моделисты обычно дают костям осмысленные имена.
Например, если в названии кости есть строка «arm», то эта кость имеет отношение к руке модели (в случае гарпии — к крылу). Суффиксы «_r» и «_l» будут обозначать левое и правое крылья, соответственно.
К сожалению, в TFT моделях моделисты Blizzard отошли от этой традиции, дав костям удивительно бессмысленные имена (или даже просто номера). Это, конечно, несколько усложняет нашу жизнь.
ПРИКРЕПЛЕННЫЕ ВЕРШИНЫ
Как уже было сказано, к костям прикреплены вершины. К этой же вершине можно прикрепить несколько кости. Тогда все они влияют на ее движение. Невозможно, чтобы вершина не была ни к чему привязана. На нее должна влиять хотя бы одна кость.
Вы, наверное, заметили, что при выделении кости некоторые вершины становятся серыми. Это те вершины, на которые влияют выбранные кости, либо напрямую, либо через дочерние кости. Вы также можете заметить, что кубики обычно расположены рядом с вершинами, на которые они влияют. Например, если кость находится рядом с коленом, то она влияет на него и на всю половину ноги.
Если рядом с ногой, то, скорее всего, это затрагивает ее вершины. Кроме того, некоторые вершины поверхности m.б. красным цветом выделены соединенные вершины, Только выделенная кость воздействует непосредственно на них, без участия потомков. И эти вершины принадлежат текущей поверхности.
Чтобы узнать, какие кости влияют на данную вершину (и сколько их), вершина должна быть выделена. Чтобы сделать это, необходимо включить инструмент выделения вершин:
. Доступно, если выделена хотя бы одна кость. После этого можно выделить вершины (думаю, вы уже знаете, как это сделать — в редакторе анимации вершины выделяются так же, как и в других модулях MdlVis, без каких-либо ограничений). В этом режиме нельзя выбирать кости: нужно включить инструмент, прежде чем снова переходить к костям
.
Итак, выберите какую-либо вершину. В этом случае на панели инструментов появляется полоса прокрутки. Прокручивая его, вы можете увидеть список костей в самом низу:
А если выбрано несколько вершин, то любая выбранная кость будет добавлена в этот список непосредственно (без помощи потомков) влияет на хотя бы одна из выделенных вершин.
Когда нужные вам вершины выбраны, вы можете добавить их к кости. Почему? Дело в том, что это сильно меняет анимацию.
Теперь попробуем заставить гарпию трясти лапами во время полета (анимация Walk — 1).
Итак, я надеюсь, что вы выбрали анимацию Walk-1? (Если нет, нажмите на кнопку и выберите нужную).
Теперь выберите кость mane4 (проще всего это сделать с помощью списка костей — их имена отсортированы по алфавиту). Эта кость управляет движением: че-го? Хвосты? Обратное оперение? Или это шлейф волос гарпии, как здесь?
На самом деле это слово переводится как , но какая грива может быть у гарпии? Выбрав кость, вы можете увидеть, на что она влияет:
Я бы сказал, что это все еще хвост (он находится между крыльями на спине и очень длинный). Если вы смотрели анимацию Walk-1, то знаете, что в процессе полета этот хвост сильно дергается (вверх/вниз) на протяжении всей анимации. Итак, если мы прикрепим лапы к хвостовой кости, то их верхушки начнут повторять все его движения (с небольшими вариациями, т.к. На них также будут влиять их собственные кубики). Итак, нажимаем кнопку
Источник: xgm.гуру