ue5 lyra的角色动画系统 持续更新中。。。。

框架两方面

1、先说动画蓝图

基础角色用了A动画蓝图( ABP_Mannequin_Base),A继承了一个接口AI,

在A中写了整个的动画逻辑比如locomotion,上半身特定动画融合,挨枪子的动画融合,全身动画融合等

在这些逻辑中该用到AI中的layer都用了layer,只不过这些layer有的是空的,逻辑都在B动画蓝图中。

动画蓝图B(和A没有继承关系,但是必须继承接口AI)

这个方法去调用,相当于用B中的layer覆盖了A中的layer的逻辑,相当于具体的逻辑实现都在B中实现。

 2、再说模型层面

基础角色用了一个没有mesh只有骨架的 mesh,

所有的角色动画都是基于A骨架做的,

然后我们看到的角色模型B(红色的 蓝色的或者matahuman 或者自己的mesh)是通过actor  attach方法挂到空mesh上的

这样做的目的是维护一套以A骨架为中心的动画资源和动画逻辑。

如果要更换不同的角色模型,要么copy 要么retarget,不用为每个角色模型制作一套动画序列和写动画逻辑

当然弊端是有的,如果不同的骨架,骨架偏差比较大, retarget后动画会有偏差,所以虚幻做的retarget大面上看上去是美好的,如果要抠细节,会有很多的不足。

 ------------------------------------------------------------------------------------------------------------------

lyra用到的关键节点和新技术 收集汇总

 

------------------------------------------------------------------------------------------------------------------

运动细节

3a大作的角色动作和简单的状态机动作区别就是,在各种微小缝隙处,处理了很多细节

lyra 增加了两大(暂时发现)细节,使操作角色,看起来和用起来很舒服的感觉

细节1:原地转身

就是在idle状态下,操作鼠标,让角色原地转身,看看上下半身是否分开行动,这个时候看,上半身要跟随鼠标转动,下半身要拟人行为,滞后倒腿旋转,并且不能滑步。

国内挫的大部分游戏直接不管这些,整个人僵硬的跟着鼠标原地旋转

lyra中角色中用到了这个

 这个代表胶囊体跟随鼠标转动,这就倒逼着lyra要让下半身每帧向相反的方向旋转,这样才能保持下半身相对地面保持不动,由于下半身不动了,所以上半身必须得跟随鼠标,这样上下半身旋转值是个相反的关系。

 

 从下图看得出来两者是相反关系

 

 

 逻辑是:每一帧都计算出和上一帧得旋转值YawDeltaSinceLastUpdate,然后RootYawOffset都会减去这个值得到当前正确的旋转角度。

当RootYawOffset角度达到了50度的时候,下半身就需要追上上半身了,旋转到和上半身一样了

 这个时候RootYawOffset可能受到两方面的改变,1、是鼠标对它的改变,2、下半身跟随对它的改变。

 

 

 在这里处理曲线和RootYawOffset的关系

 这个倒腾腿的动画 其实并没有rootmotion,就是说 root并没有旋转,只是在原地一个腿部的动作,但是这个动作的每一帧对应的旋转角度是写在remaining turn yaw的curve中,于是在逻辑处理中 时刻提取这个curve的值然后和RootYawOffset做对应的逻辑处理。

把值从动作中提取,写在curve中,在虚幻官方的例子中挺常见的一种做法,比如凌风女神中也把旋转角度写在曲线中。后续的开发中可以继承这种思想。

细节2  急刹车 急停

现实中人左右跑或者前后跑都是有惯性的,从向左跑快速的切换到向右跑,中间会有一个左跑减速到0再向右加速跑的过程。

lyra的急刹车就是处理这个细节。

 从图上可以看到在start和cycle状态均能进入到pivot状态,进入条件是:

 进入pivot

 

猜你喜欢

转载自blog.csdn.net/opk8848/article/details/127108187
今日推荐