Animation урок 1

Опубликовал Konradvall
26-09-2018, 21:39
604
0
Animation урок 1

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

Историческая справка



Анимацию как таковую, которую мы знаем сейчас, называют скелетной. Она используется повсеместно, не только в играх, но и в создании мультипликации, фильмов, графических редакторов, таких 3DS MAX и т.д. За внедрение скелетной анимации в повсеместное использование необходимо благодарить некоего Хидео Кадзиму, создателя такого богоподобного игрового сериала как Metall Gear Solid (MGS). Это не значит, что именно он изобрел данный метод - он первым применил его в игровой индустрии. Конечно на тот момент уже во всю использовался MoCap, но интеграция анимации в проект была совершенно другой, а ее реализация занимала очень много времени и сил по сравнению с сегодняшним положением. Сильно углубляться в историю я не буду, скажу только одно, если бы не скелетная анимация, процесс разработки был бы очень сложным...

Основы



Для создания анимаций в UE4 используются так называемые анимационные блупринты, они схожи с обычными, но имеют ряд существенных отличий. В частности я хочу обратить ваше внимание на редактор состояний - Blend Space, который не отделимо связан с самим блупринтом, где непосредственно и проходит настройка анимаций под определенные ситуации.
Для начала давайте добавим в наш проект несколько анимаций, которыми мы заменим стандартные анимации бега, а также добавим анимацию для состояния crouch. Импорт можно осуществить как прямым закидыванием в проект, переносом из другого проекта либо интеграцией из купленного пака в магазине Epic'ов. Я буду добавлять напрямую в папку проекта, сам проект при этом может быть закрыт и при его запуске вы получите уведомление о добавлении новых анимаций. В данном окне советую вам сразу выбрать скелета к которому будет относиться анимации и нажать на кнопку import (остальные настройки нас пока не интересуют, о них я буду рассказывать позднее).



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



Двойным щелчком вы можете раскрыть анимацию и посмотреть что из себя представляет редактор анимаций



тут как видно все разделено так же как и в обычном окне редактора, только названия другие (капитан очевидность). Здесь присутствуют как стандартные настройки анимации, так и возможность записывать свои. Настройка скелета, подгонка костей, создание сокетов, настройка аддитивных состояний, бла бла бла... Объем информации в отличии от обычных блупринтов тут выше и больше, поэтому воспринимать его необходимо постепенно, поэтому для начала посмотрите на трек проигрывания анимации, он находиться непосредственно под визуализационным окном. Здесь находится трек на который можно помещать ключи для обработки эвентов во время анимации, временная шкала для регулировки интервалов по кадрово. Пока это все что нужно знать. Мы в плотную займемся анимацией когда будем делать Horror Game в сеттинге FPS с использованием так называемого fool body mesh. Теперь откройте стандартный ThirdPerson_IdleRun_2D...



Вот его разберем подробнее. Во первых найдите настройки Axis settings и просмотрите их (так как это blend space 1D то и ось развертки здесь одна). Позиция имя отражает непосредственно название оси - назначаете сами. Минимальное и максимальное значение оси в нашем случае отображает скорость передвижения, от 0 до 600. Количество ребер решетки - под окном визуализации вы увидите решетку на которой выставляются ключи анимаций. У многих при работе с данной функцией - интерполяция анимации - вызывает диссонанс, но она не заменима при смешении состояний множества анимаций, очень полезная и в своем роде не заменимая вещь. Ниже вы увидите настройки аддитивных состояний, полезно при работе с fool body mesh. Далее настройки состояний смешивания анимации. Пока с этим закончим. Перейдите к решетки назначения ключей, у вас в проекте (а не скачали его перед чтением статьи) стоят значения по умолчанию, перейдите в настройки нашего персонажа и просмотрите какие переменные мы настраивали для разных состояний скорости, вот здесь их и нужно указывать изменяя параметры находящиеся в axis settings. Если кто не понял смотрим видео урок. Настройте данные параметры что бы они соответствовали вашему персонажу.
Далее обратите внимание на зеленый ромб в решетке, если вы его будете перемещать то наглядно увидите переход состояний анимации из одного в другое. Крайний правый нижний раздел перечисляет какие у вас есть анимации для данного скелета в настоящие время (именно для данного скелета с которым вы работаете! если при импорте вы не указали скелет, то анимации отображаться здесь не будут!).
Теперь я настрою данный blend space - заменив стандартные анимации своими, для этого найдите необходимую и перетащите ее на решетку.



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



Теперь можете побаловаться с настройкой времени интерполяции анимации, если у вас переход между состояниями слишком резкий или выглядит рвано, если все нормально двигаемся дальше. По тому же принципу создайте новый blend space 1D через контекстное меню в контент браузере и выберите подпункт Animation, для передачи состояний движения в присяди.



Теперь наконец то откроем наш ThirdPerson_AnimBP и приступим к его редактированию.



Как видим редактор практически не отличается от стандартного блупринта, поэтому расписывать его я не буду, а сразу рассмотрим стандартный код который присутствует в Event Graph. Как видно все просто, изначально мы проверяем наличие pawn на сцене для которого будут передаваться состояния анимации. Далее идет проверка, находиться ли наш персонаж в воздухе для передачи состояния прыжка, падения и приземления. И в заключении мы видим настройки вектора и скорости по направлению движения, что бы персонаж понимал с какой скоростью мы идем и куда, что бы менять состояния анимации.
Откройте Anim Graph и давайте рассмотрим что внутри него. Он представляет собой графический редактор взаимодействия состояний между собой. В первом же окне вы увидите State Machine - колапсовая нода в которой мы будем хранить ту или иную логику, она соединена с нодой скрипта получения финального состояния.



Давайте откроем наш State Machine и наглядно посмотрим что происходит внутри нее...



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



Как видно мы имеем переменную скорости, которая подключена к ранее измененному нами стандартному blend space, таким образом принимается параметр - чем выше скорость, тем быстрее идет персонаж, беря анимационные позы из ThirdPerson_IdleRun_2D. Довольно не сложно. Откройте по тому же принципу состояние для начала прыжка.



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



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



Получения эффекта падения и зацикливания для этого анимации достигается путем вычисления минимального временного интервала, после которого должна стартовать анимация, в нашем случае если это значение менее 0,1 секунды (здесь учет ведется именно в секундах, так как наша первая нода имеет заранее определенный класс Time remaining).
Далее все идет в том же русле и уже понятно для пользователя. Вообще при создании разных жанровых игр логика перехода из одних состояний в другие, пишутся по разному. К примеру вы можете сами определить разные blend space для таких состояний как idle-walk, idle-run, walk-run, walk-jump, run-jump и т.д., и уже их соединять в зависимости от ваших игровых задумок. Для создания в жанре TPS / FPS blend space 1D не подойдет так как он не учитывает параметров направления движения. Конечно их можно комбинировать, но будьте внимательны и дотошны, иначе вы просто потеряете время зря. В маркете есть проект который не мало стоит и юзает комбинированный подход к анимациям, но он реализован просто отвратительно...
Теперь давайте реализуем все таки состояния при котором персонаж будет красться...





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



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

Если вы хотите поддержать меня и мои начинания, то можете сделать это просто:
Яндекс. Деньги - 410014371649547;
QIWI - +79141970017;
WebMoney - R277462752505;



До встречи на страницах GFX-HUB.
Универсалов не бывает!
Какое направление вам ближе в разработке
Всего проголосовало: 18
 
Комментарии к новости
Добавить комментарий
Добавить свой комментарий:
Ваше Имя:
Ваш E-Mail:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Введите два слова, показанных на изображении: *
Архив
«    Июнь 2019    »
ПнВтСрЧтПтСбВс
 12
3456789
10111213141516
17181920212223
24252627282930
Июнь 2019 (1)
Февраль 2019 (9)
Январь 2019 (85)
Декабрь 2018 (109)
Ноябрь 2018 (13)
Октябрь 2018 (33)
Опрос
ТОП Комментарии
alex
alex пишет:
На здоровье)) А все-таки, какой антивирус? Проверить хочу.
Dina пишет:
Внесла в искл.. Спасибо НОД32
alex
alex пишет:
Какой антивирус? Добавьте сайт в исключения, там все ОК - Virustotal - gfx-hub.net
Dina пишет:
У меня антивирусник блокирует этот сайт, зеркал нет?