UE4 Advance Locomotion V4 学习

2024-03-10 03:48
文章标签 学习 ue4 v4 advance locomotion

本文主要是介绍UE4 Advance Locomotion V4 学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是个人学习ALS过程中的一点笔记,不对的地方谢谢指出~

开始看
在跑步动画中进行脚落地,摄像机摇动,和左右脚区分,这个weight——gait曲线用于区分动画,使用见下面
针对小跑和快跑,使用当前的相对加速正前方分量x值【0-1】来进行混合
制动时的最大减速度
UnrotateVector将世界坐标系变成局部坐标系,再来一次 RotateVector 将 会把局部坐标系变成世界坐标系。
UnRotateVector作用是让Vector A绕着原点逆时针旋转 B。
RotateVector作用是让Vector A绕着原点顺时针旋转 B。 【AdvancedLocomotionSystemV】使用 UnrotateVector 和 UnrotateVector 增加向量值的原因_Tanzq的博客-CSDN博客
得到基于当前角色旋转值的相对加速度【所以后面要UnRotateVector,因为是当前旋转的相对值】,并将其归一化到-1到1,以表示最大制动减速度和最大加速度
前进和后退,跑步和走路的所有混合动画,LR指定左右,F前进,B后退,指定Stride步幅和walkrun 走路跑步混合值,standing play Rate立姿状态下动画速度。这里为各个姿势都设立了同步组。
https://docs.unrealengine.com/4.27/zh-CN/AnimatingObjects/SkeletalMeshAnimation/SyncGroups/
计算WalkRunBlend,简单的0和1判断
计算步幅大小
计算步幅混合。该值在混合空间中用于缩放步幅(脚移动的距离),以便角色可以以不同的移动速度行走或跑步。它还允许行走或跑步步态动画独立混合,同时仍将动画速度与移动速度相匹配,防止角色需要播放半行走+半跑步混合。曲线用于将步幅量映射到速度以实现最大控制。
strideBlendNWalk和strideBlendNRun是两个曲线
walk run,依据速度进行两个曲线的插值
这里使用get anim curve clamped自定义的宏,获取weight_gait曲线值, walk是1,run是2, sprint是3,这里加上了-1的偏移,所以walk用上面n walk 的曲线,run和sprint用run的曲线
后续通过下蹲的动画中CLF曲线去混合跑步走路/下蹲状态的步幅,下蹲状态下步幅为walk的大小
计算立姿状态下动画速率,通过将角色的速度除以每个步态的动画速度来计算播放速率。lerpd alpha由存在于每个anim中的“weight_gait”动画曲线确定,因此播放速率始终与当前混合动画同步。该值还除以步幅和mesh scale,使得随着步幅或比例变小,播放速率增加。
这里speed都是提前定义好的,walk speed为150,run speed为350,animated sprint speed为600,由于sprint的weight值是3,所以偏移为-2
通过将角色的速度除以动画速度来计算蹲起播放速率。该值需要与站立播放速率分开,以改善运动中从蹲下到站立的混合效果。
整体逻辑和计算立姿状态差不多,crouch speed为150
回到
混合计算所有移动动画的循环,先将各个姿势保存起来以便重用。针对前进动画先判断是普通forward还是冲刺,然后判断是否应用附加着陆动画中的mask_sprint曲线,不用mask可能会着陆时压迫膝盖导致ik问题,看下来是着陆时先播放普通forward动画,再过渡到现在的动画
接着计算方向
该状态机基于运动方向和“HipOrientation\u Bias”曲线将方向循环混合在一起,以便在切换方向或更改hip旋转时实现更好的混合。
定义了一个方向枚举-前后左右,和六个移动方向,左前、前、右前、左后、后、右后
这里动画中使用了 过渡规则共享(transition rule sharing) 以提高效率, 即将一个过度规则设置(提升)为可共享的,那么当遇到了相同的过度规则,我们只需要设置为这个过渡规则的引用就可以了,同时更改其中一个引用规则,其它使用该共享规则的地方也会同步更新了。每种规则是一种颜色的箭头。详见大神: [玩转UE4/UE5动画系统>基础篇] 之 过渡规则共享(Transition Rule Sharing)-提升效率的小技巧_开发游戏的老王-CSDN博客
还使用了过渡渐入渐出共享,使用的changedirection blend profile中将下肢的权重设为2,比上肢优先级更高
这里黄色dir==right,绿色为dir == forward, 红色为dir = backward, 紫色为dir == left,同一大方向的左右转换还是比较简单的。同一侧方向的前后也通过forward和backward进行切换,而同一竖直方向上,左右无法直接切换,左前无法直接切换到右前,有中间一个过渡,而左前可以将方向标记为右直接切换到右后,改变竖直方向和水平方向。
↑粉色 条件只在前进和后退的左右状态下使用,这里用到了曲线Feet_Crossing,该曲线标识角色两腿是否交叉,==0为不交叉的状态,hiporientation_bias为臀部朝向曲线,小于-0.5朝左,大于0.5朝右,所以这里会同时根据dir值或者 脚步交叉+臀部方向去判断前后,同理 靛蓝色节点也是如此,在左侧动画下,双脚未交叉,臀向右,为后退,臀向左,为前进,在右侧动画下,双腿未交叉,臀向左为后退,臀向右为前进。这里白色的条件为非共享规则:双腿非交叉,臀部曲线绝对值在0.5内,当前动画混合权重为1,测了下不知道怎么触发这个规则。
进入具体的动画节点,MoveF为例:
这里使用了自定义结构体velocity blend 【F,B,L,R】四个方向的分量,去混合各个方向的动画,然后为Yaw Offset曲线设置当前角色的Yaw值,这个yaw值根据角色当前速度方向与控制方向的差值,在曲线中拿到。
这里的yaw值用于附加计算角色旋转插值速度【Update Grouded Rotation】,Smooth Character Rotation 用于平滑的旋转角色,Target Interp Speed是当前旋转到当前目标旋转的插值速度,Actor Interp Speed是当前角色旋转到目标旋转值的插值速度。这个Yaw Offset用于控制角色实现更真实自然的转动
这个velocity blend是这样计算的,取方向的单位向量【unrotate取当前旋转值的相对值】,将x方向映射到f和b分量上,将y方向映射到l和r分量上,通过这个变量计算去使用multiblend节点进行混合以实现比混合空间更好的方向混合效果。
 
这个函数则是去计算上文中提交的movement dir和yaw值。设置yaw offset。这些值会影响动画图形中的“YawOffset”曲线,并用于偏移角色旋转以实现更自然的移动。曲线允许对每个移动方向的偏移行为进行精细控制。
这里前进后退方向和左右方向的yaw 曲线值不尽相同,左为fb,右为lr。通过计算控制器与角色的yaw差值,在曲线中选择对应yawoffet值去设置曲线值。
接着计算movement dir,该值表示角色在“Cirection / Aiming”旋转模式期间相对于摄影机移动的方向,并在循环混合动画层中用于混合到适当的方向状态。
这里aiming rotation其实就是get control rotation值,和计算yaw值部分相同,计算角色自身yaw和控制器yaw差值,算出角色运动方

这篇关于UE4 Advance Locomotion V4 学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/792933

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件