Смешивание Геймплея и Анимации Секвенсора в Unreal Engine 4

0
11
Смешивание Геймплея и Анимации Секвенсора ue4

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

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

Установка Sequencer

На этом этапе мы устанавливаем наш Level Sequence и добавляем игрового персонажа и анимацию, с которыми мы хотим смешаться.

Для данного практического руководства мы используем Blueprint Third Person Template с пакетом Animation Starter Pack, который можно приобрести бесплатно в Epic Marketplace.Смешивание Геймплея и Анимации Секвенсора ue4

 

  1. Внутри вашего проекта удалите ThirdPersonCharacter с уровня и добавьте Ue4ASP_Character, установив параметр Auto Possess Player на Player 0.1 Смешивание Геймплея и Анимации Секвенсора ue4При желании вы можете отключить отображение компонента капсулы, выбрав компонент капсулы и опцию Hidden in Game. Смешивание Геймплея и Анимации ue4
  2. На главной панели инструментов нажмите кнопку Cinematics, затем выберите Add Level Sequence и сохраните ее под любым именем.Add Level Sequence ue4
  3. В своем Level Sequence добавьте Ue4ASP_Character и дорожку анимации Animation Track со значением Death_3, назначенным в качестве анимации.3 Смешивание Геймплея и Анимации Секвенсора ue4
  4. Кликните правой кнопкой мышки анимацию в окне ключевого кадра, а затем в свойствах измените When Finished на Keep State.свойство Keep State ue4Это позволит нам сохранить состояние анимации после завершения  Level Sequence. Также обратите внимание на свойство Slot Name, выделенное ниже.свойство Slot Name ue4Когда Animation Blueprint контролирует Skeletal Mesh, Sequencer воспроизводит анимацию в слотах этого Blueprint и управляется через свойство Slot Name. Animation Blueprint может затем смешиваться между Анимацией слота и любой анимацией, управляемой игровой логикой, в которой может оказаться ваш персонаж.

В следующем шаге мы настроим наш Animation Blueprint и Character Blueprint, чтобы мы могли смешивать анимацию геймплея с анимацией смерти, которую мы создали на этом этапе.

Настройка Анимации и Character Blueprint

На этом этапе мы настроим наш Animation Blueprint так, чтобы мы могли принять нашу позу игрового процесса и смешаться с анимацией слота, определенной нашим Level Sequence.

  1. В контент браузере найдите и откройте UE4ASP_HeroTPP_AnimBlueprint, затем дважды кликните по AnimGraph в окне My Blueprint.4 Смешивание Геймплея и Анимации Секвенсора ue4
  2. В AnimGraph от существующего статичного автомата Locomotion создайте New Save Cached Pose (новую сохраненную кэшированную позу) и назовите ее lococache.New Save Cached Pose ue4
  3. Используйте lococache дважды и подключите один из них к пину A узла Blend, который подает Final Animation Pose.Final Animation Pose ue4
  4. Отключите другой lococache, используйте узел Slot и подключите его к пину B, который относится к Blend, затем кликните правой кнопкой мышки по Alpha и Promote to Variable, затем вызовите его Blend Interp.Blend Interp ue4
  5. В контент браузере откройте Blueprint Ue4ASP_Character и замените раздел Crouching приведенным ниже графиком.раздел Crouching ue4

Выше мы заменяем узел InputAction Crouch на событие клавиатуры C и узел Flip Flop для переключения наших состояний приседания.

Данный Blueprint был изначально создан для другого проекта, который включал привязку ввода для crouch, которого нет в нашем шаблонном проекте. Заменив InputAction Crouch стандартным событием клавиатуры C, мы удалим предупреждающие сообщения Blueprint, а также позволим нам нажимать клавишу C, чтобы переключаться между состояниями crouching и non-crouching.

6. Создайте новую переменную Float с именем DefaultSlotInterp и установите Instance Editable и Expose to Cinematics в True.Expose to Cinematics ue4

Мы будем использовать эту переменную внутри Sequencer для смешивания и передачи значения в переменную Animation Blueprint Blend Interp, которая обрабатывает фактическое смешивание.

7. Создайте новую функцию с именем SetDefaultSlotInterp и добавьте вход с именем Interp типа Float на панели Details.функция SetDefaultSlotInterp ue4

Создав функцию с именем Set (Property Value Name), мы создали функцию Proxy, которая будет вызываться Sequencer при каждом изменении значения соответствующего свойства. Эта функция вызывается только при изменении значения правильности и является более эффективной, чем использование Event Tick или Custom Event и Timeline, чтобы отразить изменения в значении свойства DefaultSlotInterp.

8. Из окна Components перетащите в Mesh и используйте Get Anim Instance и Cast to UE4ASP_HeroTPP_AnimBlueprint.Get Anim Instance ue4

9. Из As UE4ASP Hero TPP Anim Blueprint используйте Set Blend Interp и проход в значении Interp в Blend Interp.Set Blend Interp ue4

Всякий раз, когда наше значение DefaultSlotInterp изменяется с помощью Sequencer, вызывается прокси-функция SetDefaultSlotInterp, а значение с плавающей точкой передается значению Blend Interp в Animation Blueprint, которое влияет на смешивание наших поз.

На следующем шаге мы добавим свойство Default Slot Interp к нашей последовательности уровней, чтобы мы могли управлять Blend Interp в нашем анимационном проекте. Мы также добавим Trigger Box к уровню, чтобы мы могли активировать нашу последовательность уровней и воспроизводить ее, когда игрок входит в уровень Trigger Box.

Применение Кинематографических Переменных

Здесь мы добавляем переменную с плавающей точкой Default Slot Interp, которая передает interp в наш Animation Blueprint, определяя, когда мы смешиваем из игровой позы с нашей анимацией Slot. Мы также добавляем Trigger Box к уровню, который мы будем использовать в следующем шаге, чтобы позволить игроку запускать воспроизведение нашего Level Sequence.

  1. В нашем Level Sequence для Ue4ASP_Character нажмите кнопку Track и назначьте новое свойство Default Slot Interp.свойство Default Slot Interp ue4
  2. Прокрутите временную шкалу вперед до кадра 25 (или любого другого кадра) и добавьте ключ для Default Slot Interp со значением 1.0.Default Slot Interp ue4
  3. На панели Modes в главном редакторе уровней перетащите поле Triggerbox на уровень, измените размер и поместите его в нужное место.Triggerbox ue4При желании вы можете установить для Actor Hidden In Game значение false, если хотите видеть громкость триггера во время воспроизведения.

На следующем и последнем этапе этого руководства мы настроим Level Blueprint для воспроизведения нашего Level Sequence при вводе вольюма триггерного блока.

Запуск Воспроизведения Sequence и Смешивание

На последнем шаге, прежде чем мы сможем протестировать наши настройки, мы используем Level Blueprint, чтобы активировать наш Level Sequence, когда игрок входит в Trigger Box. Когда запускается наш Sequence, свойство DefaultSlotInterp, доступное для кинематографии, изменяется, что запускает процесс обновления наших значений interp. Это говорит нашему Animation Blueprint о необходимости начать смешивание анимации геймплея с анимацией Slot.

  1. Выбрав Triggerbox, на главной панели инструментов нажмите кнопку Blueprints, а затем Open Level Blueprint.Open Level Blueprint Details UE4
  2. Кликните правой кнопкой мышки по графику, затем в разделе Collision для триггер бокса выберите Add On Actor Begin Overlap.Add On Actor Begin Overlap ue4
  3. Вернитесь в область просмотра уровня и выберите свой Level Sequence, затем правым кликом по Level Blueprint добавьте ссылку на свой Level Sequence.18 Смешивание Геймплея и Анимации Секвенсора ue4
  4. Отключите свой Level Sequence, используйте Get Sequence Player, затем отключите его, используйте узел Play и подключитесь, как показано.Get Sequence Player ue4
  5. Нажмите кнопки Compile и Save, а затем нажмите на Play, чтобы включить редактор.

Конечный результат

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

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

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