Туториал для новичков по Unreal Engine. Часть 6: Анимация

Сегодня редко можно встретить игру без анимации, потому что она является важным аспектом передачи движения. Без анимации будет казаться, что персонаж не бежит, а скользит. И так, сегодня у нас анимация Unreal Engine.

Автор оригинала: Tommy Tran

К счастью, Unreal позволяет быстро и удобно анимировать персонажей!

В этой части туториала вы научитесь следующему:

  • Импортировать меш со скелетом
  • Импортировать анимации
  • Создавать Animation Blueprint для переходов между разными анимациями
  • Выполнять плавные переходы анимаций

Учтите, что в этой части мы будем использовать Blueprints. Если вам нужно освежить свои знания, то прочитайте статью проBlueprints.

Примечание:этот пост является одной из восьми частей туториала, посвящённого Unreal Engine:

Приступаем к работе

Скачайтезаготовку проектаи распакуйте её. В корневом каталоге есть папкаAnimation Assets. В этой папке находятся персонаж и анимации, которые мы будем импортировать.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Откройте проект, перейдя в папку проекта и запустивSkywardMuffin.uproject.

Примечание:если откроется окно, сообщающее, что проект создан в более ранней версии Unreal editor, то всё в порядке (движок часто обновляется). Можно или выбрать опцию создания копии, или опцию преобразования самого проекта.

Нажмите наPlay, чтобы запустить игру. Цель игры заключается в том, чтобы коснуться как можно большего числа облаков, не упав. Чтобы прыгнуть на первое облако, нажмителевую клавишу мыши.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

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

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Этот маффин имеетскелет, который позволяет нам анимировать его.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Что такое скелет(анимация Unreal Engine) ?

В 3D-редакторах скелетом называется множество взаимосвязанных точек, называемыхшарнирами. На рисунке ниже каждая сфера является шарниром.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Примечание:в Unreal используются взаимозаменяемые терминыjointиbone.

Управляя этими шарнирами, можно создавать различные позы персонажа.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

При переходе из одной позы в другую создаётсяанимация.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Если создать ещё больше поз между предыдущими, можно получить что-то вроде такого:

Туториал для новичков по Unreal Engine. Часть 6: Анимация

В Unreal любой меш со скелетом называетсяSkeletal Mesh. Давайте начнём с импорта Skeletal Mesh для маффина.

Импорт Skeletal Mesh (анимация Unreal Engine)

Перейдите в Content Browser и зайдите вCharacters\Muffin. Нажмите наImportи перейдите вSkywardMuffinStarter\Animation Assets. ВыберитеSK_Muffin.fbxи нажмитеOpen.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

В окне импорта перейдите в разделMeshи снимите флажок с опцииCreate Physics Asset. Physics Asset помогает создать эффект рэгдолла. В этом туториале мы не будем его использовать, поэтому он нам не понадобится.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

В проекте уже содержится материал и текстура маффина, поэтому импортировать их не нужно.Снимите флажкис опцийImport MaterialsиImport Textures.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Все остальные настройки оставьте по умолчанию и намжите наImport. При этом создадутся следующие ассеты:

  • SK_Muffin:ассет Skeletal Mesh. Это просто меш со ссылкой на ассет Skeleton.
  • SK_Muffin_Skeleton:ассет Skeleton. Он содержит список шарниров и другую информацию, например, об их иерархии.
Туториал для новичков по Unreal Engine. Часть 6: Анимация

Импортировав маффин, мы готовы использовать его.

Использование Skeletal Mesh (анимация Unreal Engine)

Прежде чем использовать новый Skeletal Mesh, нужно дать ему материал, чтобы он не был просто серым пятном.Дважды щёлкнитенаSK_Muffin, чтобы открыть его.

Перейдите в панель Asset Details и найдите разделMaterial Slots. Назначьте материалM_Muffinи закройтеSK_Muffin.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь давайте используемSK_Muffinв качестве персонажа игрока. Вернитесь в Content Browser идважды щёлкнитенаBP_Muffin, чтобы открыть его.

Перейдите к панели Components и выберите компонентMesh (Inherited). Переключитесь на панель Details и найдите разделMesh. Для свойстваSkeletal Meshвыберите значениеSK_Muffin.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Нажмите наCompileи вернитесь в основной редактор. Нажмите наPlay, и вы сможете управлять в игре маффином!

Туториал для новичков по Unreal Engine. Часть 6: Анимация

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

Импорт анимаций

Перейдите в Content Browser и нажмите наImport. Перейдите вSkywardMuffinStarter\Animation Assets. Выберите следующие файлы:

  • SK_Muffin_Death.fbx
  • SK_Muffin_Fall.fbx
  • SK_Muffin_Idle.fbx
  • SK_Muffin_Jump.fbx
  • SK_Muffin_Walk.fbx

Выбрав их, нажмите наOpen.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

В окне импорта перейдите в разделMeshиснимите флажокс опцииImport Mesh. Благодаря этому Skeletal Mesh не будет импортирован снова.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь проверьте, что свойствоSkeletonимеет значениеSK_Muffin_Skeleton. Это определяет скелет, который будет использоваться в анимации.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Затем нажмите наImport All. Так вы импортируете все анимации с только что указанными настройками.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь, когда у нас есть все анимации, нам нужен способ их воспроизведения. Можно воспользоваться для этогоAnimation Blueprint.

Создание Animation Blueprint (анимация Unreal Engine)

Animation Blueprint похож на обычный Blueprint. Однако в нём также есть граф, предназначенный только для задач анимации.

Чтобы создать его, перейдите в Content Browser и нажмите на кнопкуAdd New. ВыберитеAnimation\Animation Blueprint.

Во всплывающем окне найдите свойствоTarget Skeletonи выберитеSK_Muffin_Skeleton. Затем нажмите на кнопкуOKдля создания Animation Blueprint.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Переименуйте ассет вABP_Muffin. После этогодважды щёлкнитена нём, чтобы открыть его в Animation Blueprint editor.

Animation Blueprint Editor

The Animation Blueprint editor похож на Blueprint editor, но в нём есть четыре дополнительных панели:

  1. Anim Graph:это специальный граф для анимаций. Здесь воспроизводятся все анимации.
  2. Preview Scene Settings:эта панель позволяет настраивать сцену предварительного просмотра во Viewport
  3. Anim Preview Editor:создаваемые переменные также будут отображаться здесь. Используйте эту панель для предварительного просмотра того, как влияют ваши переменные на конечную анимацию.
  4. Asset Browser:эта панель содержит список анимаций, которые может использовать текущий скелет.

Для задания ситуаций, в которых должна воспроизводиться каждая анимация, можно использовать конечный автомат (State Machine).

Что такое конечный автомат?

Конечный автомат — это наборсостоянийиправил. В нашем туториале можно считать состояние анимацией.

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

Ниже представлен простой пример конечного автомата. В нём показаны состояния прыжка и правила перехода в каждое состояние.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Состояния могут иметь и двустороннюю взаимосвязь. В представленном ниже примере состояния Jump и Fall могут переходить друг в друга.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Без этой двусторонней связи персонаж не смог бы выполнять двойной прыжок, потому что он мог бы переходить в состояние Jump только из состояния Idle.

Ну, довольно о конечных автоматах, давайте уже займёмся их созданием.

Создание конечного автомата

Перейдите в Anim Graph инажмите правой клавишей мышина пустой области. В меню выберитеAdd New State Machine.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Это добавит в граф нод State Machine. Переименуйте State Machine вLocomotion. Затем соедините конечный автоматLocomotionс нодомFinal Animation Pose.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь конечный автоматLocomotionбудет определять конечную анимацию маффина.

Дважды щёлкнитена конечном автоматеLocomotion, чтобы открыть его. Внутри вы увидите нодEntry.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Соединённое с этим нодом состояние является состояниемпо умолчанию. В нашем туториале состоянием по умолчанию будет анимация ожидания. Создайте это состояние,нажав правой клавишей мышина пустой области графа. В меню выберитеAdd Stateи переименуйте его вIdle.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь нужно соединить нодEntryс состояниемIdle.ПеретащитеконтактEntryксеройобласти состоянияIdle. Отпустителевую клавишу мыши, чтобы соединить их.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

При создании состояния через контекстное меню с ним не будет связана никакая анимация. Давайте это исправим.

Привязывание анимации к состоянию

Дважды щёлкнитена состоянииIdle, чтобы открыть его.

Чтобы привязать анимацию, перейдите в Asset Browser иперетащитеанимациюSK_Muffin_Idle. Отпустителевую клавишу мышина пустой области графа, чтобы добавить её.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Затем присоедините нодPlay SK_Muffin_Idleк нодуFinal Animation Pose.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Для использования Animation Blueprint нам нужно обновитьBP_Muffin.

Использование Animation Blueprint

Нажмите наCompileи переключитесь наBP_Muffin.

Перейдите в панель Components и выберите компонентMesh (Inherited). Перейдите в панель и найдите разделAnimation.

Выберите дляAnimation ModeзначениеUse Animation Blueprint. ДляAnim Classвыберите значениеABP_Muffin.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь Skeletal Mesh в качестве своего Animation Blueprint будет использоватьABP_Muffin.

Нажмите наCompileи закройтеBP_Muffin. Перейдите в основной редактор и нажмите наPlay, чтобы проверить Animation Blueprint. ПосколькуIdleявляется состоянием по умолчанию, маффин сразу же использует анимацию ожидания.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

В следующем разделе мы создадим состояния для прыжков и падения.

Создание состояний прыжка и падения

Вернитесь кABP_Muffinи переключитесь к графу конечного автоматаLocomotion. Это можно сделать, нажав на словоLocomotion, расположенное в верхней части графа.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Вместо создания состояния и привязки к нему анимации можно создать состояние с уже привязанной анимацией. Давайте сделаем так для состояния прыжка.

Перейдите в Asset Browser иперетащитеанимациюSK_Muffin_Jump. Отпустителевую клавишу мышина пустой области графа. Это создаст состояние с уже привязанной к нему анимацией.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Переименуйте состояние вJump.

Повторите процесс с анимациейSK_Muffin_Fallи переименуйте состояние вFall.

Теперь у нас есть три состояния:Idle,JumpиFall.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

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

Создайте следующие переходы:

  • ИзIdleвJump
  • ИзJumpвFall
  • ИзFallвJump
  • ИзFallвIdle
Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь, когда у нас есть переходы, нужно задать условия, при которых они происходят. Это можно сделать с помощью правил переходов (Transition Rules).

Transition Rules

Этот значок обозначает правило перехода (Transition Rule):

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Каждое правило перехода содержит нодResultс единственным булевым входом.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Если этот вход равенtrue, то происходит переход.

Далее нужно создать переменные, сообщающие нам, прыгает или падает игрок. Мы применим эти переменные в правилах переходов.

Определяем, прыгает персонаж или падает

Создайте двебулевыпеременные с названиямиIsJumpingиIsFalling.

Во-первых, мы зададим значениеIsJumping. Переключитесь на Event Graph и найдите нодEvent Blueprint Update Animation. Этот нод работает подобно нодуEvent Tick.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Чтобы проверить, прыгает ли персонаж, создадим следующую схему:


Так мы проверим, больше ли нуляскоростьперсонажа пооси Z. Если это так, то персонаж прыгает, аIsJumpingдолжна принимать значениеtrue.

Примечание:приведите её к классу, который будет использовать Animation Blueprint. Это очень важно для того, чтобы можно было предварительно просматривать переменные с помощью Anim Preview Editor.

Чтобы проверить, падает ли персонаж, нам достаточно выполнить противоположную проверку. Добавьте выделенные ноды:

ТеперьIsFallingбудет равнаtrue, когдаскорость по Zперсонажа меньше нуля.

Настало время использовать эти переменные для задания правил переходов.

Определение правил переходов

Во-первых, нам нужно задать правило переходаIdle to Jump. Переключитесь обратно к конечному автоматуLocomotion.Дважды щёлкнитена правиле переходаIdle to Jump, чтобы открыть его.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Создайте нодIsJumpingи соедините его с нодомResult.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь состояниеIdleможет переходить в состояниеJump, когдаIsJumpingравноtrue.

Повторите процесс для правил переходовJump to FallиFall to Jump. Используйте следующие переменные:

  • Из Jump в Fall:IsFalling
  • Из Fall в Jump:IsJumping
Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь состоянияJumpиFallмогут переходить друг в друга.

Осталось назначить ещё одно правило перехода. Откройте правило переходаFall to Idle.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Для перехода в состояниеIdleигрок не должен прыгать или падать. Чтобы выполнить эту проверку, можно использовать нодNOR. Этот нод возвращаетtrueтолько когда оба входа имеют значенияfalse.

Создайте нодNORи соедините с ним нодIsJumpingиIsFalling. После этого соедините нодNORс нодомResult.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь состояниеFallможет переходить в состояниеIdle, когдаIsJumpingиIsFallingравныfalse.

Нажмите наCompileи вернитесь в основной редактор. Нажмите наPlayдля проверки переходов.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Примечание:также вы можете проверить переходы, изменяя переменные в Anim Preview Editor.

Пока маффин при движении по земле только скользит, потому что мы ещё не применили анимацию ходьбы!

Вместо создания нового состояния для ходьбы можно смешать его с анимацией ожидания с помощьюBlend Space.

Что такое Blend Space?

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

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Blend Space также помогают упростить конечные автоматы. Вот как будет выглядеть конечный автоматLocomotion, если не использовать для ходьбы Blend Space:

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Благодаря Blend Space достаточно просто заменить анимацию ожидания.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь, когда вы познакомились с магией Blend Space, настало время создать его.

Создание Blend Space

Перейдите в Content Browser и нажмите наAdd New. ВыберитеAnimation\Blend Space 1D.

Примечание:разница междуBlend SpaceиBlend Space 1Dзаключается в том, что у первого естьдвавхода. Последнее имеет толькоодинвход.

Во всплывающем окне выберитеSK_Muffin_Skeleton.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Переименуйте ассет вBS_IdleWalkидважды щёлкнитена нём, чтобы открыть его в Animation editor.

Когда откроется Blend Space, вы увидите панель в нижней части экрана. Это Blend Space editor, в котором мы будем добавлять анимации.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Давайте добавим анимации в Blend Space.

Добавление анимаций в Blend Space

Во-первых, нужно изменить имя значеняи оси (входа). Перейдите в панель Asset Details и найдите разделAxis Settings. Измените свойствоHorizontal Axis\NameнаSpeed.

Теперь мы добавим анимации. Перейдите в Asset Browser иперетащитеанимациюSK_Muffin_Idle. Переместите еёвлевона сетке Blend Space, чтобы она привязалась к значению0.0. Отпустителевую клавишу мыши, чтобы добавить анимацию.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Примечание:для отображения названий анимаций нажмите на значокметкивверхнем левомуглу сетки Blend Space.

После этого добавьте анимациюSK_Muffin_Walkв значение100.0.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь Blend Space будет смешивать анимации ожидания и ходьбы в зависимости от входного значения. Если входное значение равно0, то будет воспроизводиться только анимация ожидания. Если входное значение равно100, то будет воспроизводиться только анимация ходьбы. Все промежуточные значения будут смешиваться.

Примечание:эти значения выбраны произвольно. Например, можно изменить максимальное значение, сделав его равным 500. В этом случае анимация ходьбы будет воспроизводиться только при более высоких скоростях.

Можно изменять значения разделаAxis Settingsв панели Asset Details.

Настало время использовать Blend Space.

Применяем Blend Space

ЗакройтеBS_IdleWalkи откройтеABP_Muffin. Переключитесь на конечный автоматLocomotionи откройте состояниеIdle.

Во-первых, удалите нодPlay SK_Muffin_Idle.

Затем добавьте Blend SpaceBS_IdleWalkс помощью перетаскивания. Соедините нодBS_IdleWalkс нодомFinal Animation Pose.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

ТеперьBS_IdleWalkбудет воспроизводиться автоматически, потому что является состоянием по умолчанию. Однако оно будет отображать только анимацию ожидания. Так происходит потому, что входSpeedостаётся равным0.

Чтобы исправить это, нужно передать ему скорость игрока.

Получение скорости игрока

Создайте новую переменную типаfloatс именемSpeed. Затем переключитесь на Event Graph.

Добавьте новый контакт к нодуSequence, а затем добавьте к нему выделенные ноды:


Эта схема будет постоянно приравнивать переменнуюSpeedк значению скорости игрока.

Переключитесь обратно к графу состоянияIdle. Соедините переменнуюSpeedсо входомSpeedнодаBS_IdleWalk.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь сможетBS_IdleWalkвыполнять смешивание между анимациями ожидания и ходьбы.

Нажмите наCompileи вернитесь в основной редактор. Нажмите наPlay, чтобы протестировать Blend Space.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Есть ещё одна анимация, которую нам нужно использовать: анимация смерти.

Использование анимации смерти

В этой игре можно умереть только в состоянииIdle(на земле). Однако давайте представим, что игрок может умереть в любом состоянии. Первой мыслью будет создать состояниеDeathи соединить с ним все состояния. Так можно сделать, но это быстро приведёт к запутанному графу.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Решением может стать использование нодаBlend Poses by bool. Этот нод может переключаться между двумя анимациями в зависимости от значения входного булева значения.

Прежде чем создать этот нод, нам нужна переменная, содержащая статус смерти игрока.

Проверяем, умер ли игрок

Вернитесь назад кABP_Muffinи создайте переменную типаbooleanпод названиемIsDead. Затем переключитесь на Event Graph.

Добавьте новый контакт к нодуSequence, а затем добавьте к нему выделенные ноды:


Так мы зададим переменнуюIsDead, зависящую от состояния смерти игрока.

Затем мы воспользуемся нодомBlend Poses by bool.

Использование нода Blend Poses by Bool

Переключитесь на Anim Graph и добавьте анимациюSK_Muffin_Death. Выбрав её, перейдите в панель Details иснимите флажоксо свойстваLoop Animation.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Благодаря этому анимация смерти будет проигрываться только один раз.

Затем создайте нодBlend Poses by bool.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Выберите нодBlend Poses by boolи перейдите в панель Details. В разделеOptionпоставьте флажокна свойствеReset Child on Activation.

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Поскольку анимация смерти проигрывается всего один раз, эта опция гарантирует, что анимация сбрасывается перед воспроизведением.

Наконец, добавьте переменнуюIsDeadи соедините всё следующим образом:

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Теперь если переменнаяIsDeadбудет равнаtrue, то начнёт воспроизводиться анимация смерти. ЕслиIsDeadравноfalse, то будет воспроизводиться текущая анимация конечного автоматаLocomotion.

Нажмите наCompileи закройтеABP_Muffin. Нажмите наPlayи протестируйте новую анимацию смерти!

Туториал для новичков по Unreal Engine. Часть 6: Анимация

Куда двигаться дальше?

Скачать готовый проект можноздесь.

Теперь игра выглядит гораздо более качественной, не так ли? На основе уже полученных знаний можно сделать многое, но это ещё не конец! Изучите страницуSkeletal Mesh Animation Systemдокументации Unreal Engine. Здесь можно узнать о других типах анимационных ассетов и о способах их использования.

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

Автор перевода PatientZero

Поделится

Добавить комментарий

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять