如果一名优秀的程序员用好的文采写文章,那么他太卷了。但是我是名程序员不优秀也没有好的文采。
UE蓝图基础学的差不多了,在学进阶,其实基础学地稀里糊涂的,在进阶阶段再仔细研究。研究到UE的高级系统,其实高级运动系统已经迭代到第四代了(ALS V4)
前言
ALSV4是啥?
高级运动系统(Advanced Locomotion System,简称ALS )是一个先进的双足运动和分层系统,专注于高质量的人物动画与响应运动。现在它的第4代,ALSV4,在虚幻商城中已经免费
强大的数据驱动的AnimBP,具有智能的运动混合方法,以及强大的分层系统,可轻松添加游戏状态和变化,无需大量额外动画。其他功能包括冲刺冲动、附加学习、土地预测、原地转弯/旋转、脚部IK等。
虽然ALS4已经免费了,但这套系统对一半的人研究起来还是有些吃力的。当然目前有很多大佬对其研究的文章,虽然自己的研究比不上那些大佬,也希望次篇文章能帮助一些人。
此次这篇文章不是重点研究第四代运动系统,而是围绕状态机以项目的方式展现状态机的知识点。
推荐几篇前辈的对动画系统研究的文章:
知乎@DarkFlameMaster:
①骨骼动画 高级运动系统 走跑混合初步
②骨骼动画 高级运动系统 八向移动
③骨骼动画 高级运动系统 原地旋转
④骨骼动画 高级运动系统 (ALSV4)
B站 @五谷延年:
动画技术 深入浅出 高级运动系统
知乎: @郭袁
一、是什么状态机?
动画状态机是可以让动画从一个过渡到另一个的过程,它大大简化了动画的设计流程。可以实现很多的基础动作,例如:跑,跳,上天,游泳等一系列动作。
传统动画动态机方案:
传统动画状态机方案就是包括移动,技能,攀爬,表现等所有状态都是通过状态机去实现,该种方式在前期当然灵活易用,方便组装各种模块, 但是一旦到达中后期,动画数量达到几万个的量级,那么动画状态机的模块和层级深度可能达到几十层,在该种情况下,每添加一个动画状态成本就非常高,错综复杂的状态很容易导致出错,而且动画状态机的特性是将所有的动画全部加载到内存,动辄几百兆内存一般游戏也吃不消。
当动画资源很多的时候状态机有很大的局限性,采用状态机加动画序列帧的方式来搭建动画系统可以节省开发的很大部分的成本。
骨骼动画 详细文章推荐
二、状态机建立
1.获得必要的变量
得到是否在空中变量,是否在加速的变量。
2.状态机里的动画逻辑
Ⅰ.新建第一个状态机,承载最基本的行走逻辑
Ⅱ.创建第二个状态机,被第一个状态机包含,再添加原地转到逻辑。
Ⅲ.计算原地旋转速率值,控制器旋转越快那么原地转动的动画就播放的越快,速率值是控制器上一帧的Yaw值与当前帧控制器的Yaw值的插值。
Ⅳ.创建第三个状态机,其Idle状态承载第一个状态机的动画逻辑(包含第二状态机).
其中“Land状态”中有个落地additive动画,先前自己对additive动画一知半解,后来bing查了一下(国内很少人研究这个或者说国人研究过没有发布到中国的平台网站)
那additive动画到底是什么呢? |
自己在bing找的两篇文章:
Ⅴ.计算斜角值(Lean),当速度达到一定速度时,转弯直观上会有倾斜效果,也可以用高中知识离心力来理解。对Lean的计算有很多种算法,对于不同状态的动画效果选择不同算法,我将展示我对Lean的计算。
即Actor旋转体当前帧Yaw值与上一帧的Yawn的差值
推荐另一位知乎博主一篇文章他有另一种对Lean的算法: Locomotion 人物转弯倾斜(Lean)
ps:自己对Lean值研究不是很深。
Ⅵ.双脚IK。IK( Inverse Kinematics),即反向动力学。在这不过多解释,下面两幅图将让你简单了解IK。
下面自己手写思路图
算出(用检测开始的位置检测-地面与双脚碰撞的位置)的值,获取长度-胶囊体半高长度=Ik双脚偏移量
三、小Demo成果展示
总结
现在ALS已经迭代到第四代了,对于高级动画系统需要学习的知识有很多,很多大作3A很注意动画系统的开发但到第四代的3A有但不是很多,内容有IK、八向动画、技能逻辑动画等等或者复杂点的Paragon里面提到的技术,如Distance Match,Speed Warping,Orientation Warping等,再或者自定义Node节点,ControlRig,还有很多要学习的东西。这正是印证那句话“活到老,学到老”。
此次的内容太水了,可能刚自己进阶研究的比较基础的,如果此篇文章对您有些帮助,点个赞支持下,以后会再深入研究,下一篇将深入学习研究IK。