稍微讲一讲虚幻4混合动画

[复制链接]
查看6507 | 回复19 | 2017-1-5 21:35:41 | 显示全部楼层 |阅读模式
本帖最后由 天才小熊猫 于 2017-1-6 00:25 编辑

转自博客,原地址:https://syxblog.com/2017/01/1101.html
视频里的控制器论坛搜索,我前几天发过。
另外没有工程,因为动画包是买的。


今天本猫来讲讲虚幻4中的混合动画实现的2种方法。首先在开始之前我想要感谢2个人,一个是叫兽、一位就是RYZE,同样是虚幻圈子里的,大家群里一搜就能搜到,感谢耐心的疏导让我灵光焕发,顿时醒悟。
好了开始了。在虚幻4中,混合动画有一个1D和一个不是1D的,我们先来说说1D,1D是最简单的,他只有一个轴向,要么是X要么就是Y,我们虚幻4自带模板,第三人称等就有用到1D混合动画,那1D混合动画是什么意思呢我们来看看。

首先直接拿官方的来讲,左边红色的2个点,最下面的是闲置状态动画,也就是idle,最上面的,是跑步动画,很明显这是一个从闲置慢慢过渡到跑步的动画,在左边,我们可以看到标注为Speed的名称,分别是从最下面的0到最上面的600。那么这个就是说人物初始状态是0,然后一直前进速度最大为600,这个最大速度就是我们CharacterBP里面CharacterMovement组件里面max walk speed,我们在实际开发游戏中把最大的速度改为自己的就好了。
1D混合动画的界面就是这个样子,如果你想做一个从闲置到走路或者再到跑步的状态,可以使用1D混合动画。当我们做完后,可以吧鼠标放在左边的那一竖条,上下移动就可以看到状态,细心地开发者会发现再最下方移动到最上方的时候,Speed其实是一个浮点数再不断增加,最大为600。
其实这在我们开发游戏中相当于当你按下W后,他的最大速度就为600,那如果想要一开始不是直接跑而是慢慢的跑,可以新建一个浮点变量不断递增嘛,最大为600停止。
那我们要怎么使用上图的1D混合动画,我们来看动画树。

我们在状态里面是可以看到,新的节点添加了一个混合动画,它的是由Speed的变量控制,Speed就是我们在Play后角色的速度值,这点如果有摇杆的同学可以看下,摇杆控制移动的时候,你前向的速度是不断增加的,这个值决定我们的Speed的值,而Speed又会影响1D混合动画里,什么样的速度是播放什么样的动画。
1D比较好理解,今天主要说的其实是混合动画,就是有蜂窝状的那种,比如下面这种样子。

下面的我们发现发不只是有一个轴,还有一个Y轴向,而且四面八方都可以来放置所需要的融合动画。
这里我们提出两种方法,一种是取值于直接从控制器传出的数值,比如摇杆或者wasd,他们总会传出一个值,而根据我们input设置的正负值,其只会有1、0、-1三种情况,分别对应X或者Y坐标轴的上中下或者左中右。这种情况,我们实际上就将我们自己的动画,按照我们想要的摇杆控制方式拜访这些节点就可以。

根据左边的图,我们右边无论是摇杆还是wasd,均是,前后左右,左斜上方,右斜上方,左斜下方,右斜下方,那么我们看到这个蜂窝状的里面和外面分别有一圈,内圈则可以使用走路,外圈可以使用跑步,比如左斜上方第一个圈是代表的动画是:左斜上方行走,那么第二个圈则代表:左斜上方小跑。
这个还是很好理解,就是根据右边的控制方向,左边来决定使用什么样的动画。
那有些人就说了为什么我运行后看不到走路,那是因为你按下W或者w+a(左斜上方运动),键盘的值只有1或者-1,而我们的运行速度是一个浮点数,我们不像摇杆那种,可以慢慢往上推或者往斜上方推,能看到数值在慢慢增加,自然就能看到一个从走路到小跑的过度动画了。那如果没有摇杆的或者做的不是移动平台游戏的,如果想要按下W后,慢慢的加速到跑,还是之前的方法,递增Speed变量给CharacterMovement。
那我们再来看下上面蜂窝图的完整版。

我们可以看到左边的Y轴向是从-1到顶部的1。X轴是从左边的-1到右边的1。这个代表wasd的处于不同值得时候所呈现的状态。我们来看Input。

清晰明了的就可以看到向前的W和S分别是1和-1,那么对应上面中间就应该是闲置状态,因为你此时角色并没有按下按键处罚他,蜂窝的上面肯定对应的是W,也就是前进,那么其他几个按键是一样的道理。
这种根据Input里设置的值来决定混合动画中的处于什么样的播放动画是比较好理解的一种。
但是本猫最近自己做的小项目中,这种是不适合的,因为他固定了前进的方向,也就是说他始终是以角色向前的样子去匹配动画。就是这样。
当我把鼠标放到如图指示的地方我要预览当前状态,那么此时的操作如果是摇杆,肯定是右斜上方,如果是键盘,肯定是w+d(右斜上方),但是我们注意了,此时人物始终是朝向前面的,如果我现在人物持枪的动作变成右边,那么会发现他其实就变成了这样。

如果我还是保持移动是W,也就是正方向,视觉扭到右侧,会发现我们的人物的腿的动作,会变成向左走,因为对当前角色来讲,他并不是之前的XY。

因为我们刚才说过,他始终是针对角色朝向的,所以当人物扭到了右侧,他的XY就变成了这个样子。

那么此时人物应该往右侧移动,也就是我们按D或者摇杆推到右边,那么根据之前的蜂窝状,X轴向的右侧是播放角色向右移动的动作,并不是播放角色向前播放的动作,而此时的状态我们肯定是要播放角色向前,但是因为我们的坐标跟随人物朝向变了,他本来的前移动画,就变成了向右移动的动画,而向右移动的动画则是角色两只脚沿着X轴交叉运动,所以看起来人物就像得了小儿麻痹一样。我这里有一个视频,大家可以看20秒以后的样子就是我说的这种问题。

这种情况我们就要讲另一种操作方式,来避免这个问题,那刚才这个问题也不是没有办法去解决,有钱的可以买个IK插件,没钱的可以拆分混合动画来做。
好了我们接下来说第二种方法,第二种比较好理解,使用速度以及朝向来控制此时人物的状态分别给予不同的动画。
首先我们先来看一张图。

我们假设这个是速度与朝向,左边的是速度,右边的是角色朝向。速度我们默认情况下肯定是0,因为默认开始游戏你不可能原地跑步,原地走路或这其他奇葩动作,那么我们四周肯定任意一个方向就是速度了,速度不像刚才那个方法,刚才那个方法有-1,有负数是因为他是根据坐标轴的正负值来做判断,我们这里使用朝向来做判断。这里的300就是CharacterMovement里面自己设定的那个移动速度。上文有讲,这里我就不说了。
我们来看右边,右边角色朝向,我么的角色朝向,肯定会指向一个位置,比如说0或者其他的,我们方便理解,从正上方向开始讲,0代表我们正上方向,右侧一圈是正180,左侧倒着的一圈是-180,这就代表角色从正方向0向左或者向右旋转到180度。这样好理解。那么我们再来看使用方向和速度怎么来控制新的状态。首先还是来看看使用朝向和速度来控制的混合动画。

我们可以看到左侧的Speed是从0到270,就是速度从0位270,底部的横轴,中心肯定是0,也就是上上图里面看到的0,那么向左是-180,向右是正180,也是根据上上图中我们可以很清晰的来看到。
这个我们是怎么来看呢,首先中心底部的位置,是一个待机状态,顶部,就是我们的前进状态,这个我们不需要多说,那么我们来看图。

如果要实现角色向左向右移动,我们不能按照最开始的那个方法来做,来看这张图,当角色的朝向为-90或者90的时候,我们看到才是红色箭头的两侧,这个朝向才能播放我们的向左向右动画,首先我们可以根据混合动画界面的节点来看我们当前这个点的朝向和速度值。

我们可以看到这个点他的速度是270,他的朝向是-90,也就是左侧,那么这里我们应该放向左移动的动画,为什么刚才也说了,-90才是我们的左侧朝向。那么右边的同理。
接下来我们需要一个向后退的,在第一个方法中,向后退直接就在闲置的下方,但是这里我们闲置在下方0的位置,不可能放到下面,我们来想一下,还是看一下这张图。

当我们什么状态才会向后移动,也就是角色的朝向是位于-180或者180的时候,这个时候我们才执行后退的动作,那我们有个最笨的方法,一个一个找坐标,因为我们移动的时候,鼠标右侧的小面板是可以看到朝向和速度的值得变化,那我们最后找到了后退的值,也就是当为-180或者180的时候,播放后退动画。

右侧也是一样的。那么斜着的也是一样的,斜着我们来看这张图,比如左斜上方,就是-45°,那我们就继续找,最后找到是这里。

那左斜下方包括右边的我就不说了,都是一样的方法。

如果对上面还是不是很了解的话,可以看下上面这张图,,左边摇杆向左,右边向下,他们之间的夹角其实是90°,所以执行左走的动画。
那关于这里的动画蓝图是这样的。


基本上就讲完了,那我这里面这个混合动画是买的动画包做的,所以除了普通的前后左右动画,还包括有斜着的动画。版权原因我就不放出来了。写这个一来是做一下笔录,而来或许可以为一些初学者或这懵懵懂懂的人给一点灵感。
来看看最终效果。


个人博客 : ericsong.org
zhaishengfu | 2017-1-6 09:01:40 | 显示全部楼层
技术贴大赞
回复 支持 反对

使用道具 举报

lwlfyd | 2017-1-6 09:04:02 | 显示全部楼层
谢谢分享
回复

使用道具 举报

mbskyshuai | 2017-1-6 09:18:42 | 显示全部楼层
谢谢分享
回复

使用道具 举报

slixwe | 2017-1-6 09:39:29 | 显示全部楼层
感谢分享,讲解得很详细,很有帮助
回复 支持 反对

使用道具 举报

mxlhy | 2017-1-6 10:08:50 | 显示全部楼层
感谢分享,讲解得很详细,很有帮助
回复 支持 反对

使用道具 举报

MagicJ_23 | 2017-1-6 10:37:30 | 显示全部楼层
谢谢谢谢版主
回复 支持 反对

使用道具 举报

坐着的天神 | 2017-1-6 10:53:25 | 显示全部楼层
这个好,以前对这个马蜂窝一直很迷,看着都头疼
回复 支持 反对

使用道具 举报

chinabeater | 2017-1-6 11:19:31 | 显示全部楼层
不明觉厉,猫神越来越高端了,佩服佩服
回复 支持 反对

使用道具 举报

__________ | 2017-1-6 12:10:25 | 显示全部楼层
感谢分享技术帖
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则