使用UE4动画蒙太奇实现分层动画

10 篇文章 18 订阅

目标

在之前的博客《学习UE4官方第三人称模板中的内容》中,角色已经可以移动和跳跃了。这一篇将会在之前的基础上,增加一个“拳击”动作,而且想要在移动与跳跃的同时做“拳击”动作,即“分层动画”。学习过程中我参考了《使用分层动画 | Unreal Engine Documentation》

首先,想讨论两个话题:

谈动画混合

动画序列由动画师产出。然而在实际运行中,角色需要做的动作并非和动画序列中一模一样,而是基于一些动画序列的“混合”。这里的“混合”包含两种意思:

  1. 基于一个权重值,来平滑过渡多个动画。例如通过“移动速度”来混合“步行”和“跑步”。UE4中用BlendSpace来解决。
  2. 让某一个骨骼层级播放一个动画,而其他的播放另一个动画,这正是这一篇的目标。

谈蒙太奇

“蒙太奇”其实是个很抽象的概念,似乎并没有明确的定义,不过共识可能是:“它是关于镜头和组合的艺术”。
而在UE4中,动画蒙太奇是一个资源。在我看来它算是对原始动画序列的一层“抽象封装”。它似乎和多个功能有关,“分层动画”只是其中一个。在这一篇博客中将只关注“分层动画”方面的内容。

0. 准备资源

我下载了这个资源包想获得其中的动作(先放到另一个工程中):
在这里插入图片描述
选择了其中一个打拳的动画,名为19_Frank_Punch_Right_Straight_Inplace
在这里插入图片描述
导出fbx,然后导入我的工程:
在这里插入图片描述

1. 创建动画蒙太奇

右键拳击的动画,创建动画蒙太奇
在这里插入图片描述
资源名为19_Frank_Punch_Right_Straight_Inplace_Montage
在这里插入图片描述
打开动画插槽管理器
在这里插入图片描述
添加一个新插槽命名为UpperBody
在这里插入图片描述
蒙太奇组设置为UpperBody
在这里插入图片描述

2. 编辑角色蓝图

角色蓝图中,需要获得用户的输入,这样之后的动画蓝图便可以获取这一信息来决定是否要做出拳击的动作。
不过,首先先增加用户输入映射:
在这里插入图片描述
增加一个叫punch_key_down的bool变量。
在这里插入图片描述
这个值由Punch输入来决定:
在这里插入图片描述

3. 编辑动画蓝图的AnimGraph

AnimGraph中想要实现的逻辑是只让上半身播放UpperBody插槽的动画。
为此,先找到上半身对应的关节,名字是spine_01
在这里插入图片描述
AnimGraph的连接情况:
在这里插入图片描述
需要注意的是:

  • MyStateMachine需要使用两次,但是其输入只能连接一处,因此需要先做一个它的缓存,使用这个缓存两次
  • 插槽选择UpperBody
  • 混合节点中需要制定基于的骨骼是spine_01

4. 编辑动画蓝图的事件图表

节点连接情况如下:
在这里插入图片描述
需要注意的就是:

  • punch_key_down是我自定义的MyCharacter中的变量,因此获得的Pawn变量需要转换为这个类型。
  • 剩下的逻辑就是判断这个蒙太奇是否在播放,如果不在播放的话就播放他。

5. 效果

在这里插入图片描述

  • 11
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值