本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式。教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏《玩转UE4/UE5动画系统》。教程中使用的资源及工程将以开源项目的形式更新到GitHub:玩转UE4上。


工程文件: 玩转UE4(GitHub)

文章目录

  • 1. 状态机概要
  • 2. 地面站立动作状态机分解
    • 2.1 Linked Anim Layer:(N) Cycle Blending
      • 2.1.1 (N) Directional States:六方向状态机
        • 状态逻辑
        • 过渡规则
    • 2.2 (N) Locomotion Cycles:站立动作循环状态机
    • 2.3 (N) Locomotion Detail:细节状态机
    • 2.4 (N) Locomotion States:地面站立动作状态机
      • 2.4.1 Stop States:脚掌锁定状态机
  • 3. 小结

1. 状态机概要

在《[玩转UE4/UE5动画系统>应用篇>架构设计] 之 ALS V4的Overlay框架详解》一文中,老王介绍了ALS V4的Overlay框架,该框架由BasePoses、OverlayLayer以及BaseLayer三个核心动画层动画层(Animation Layer)实现。其中BasePoses提供了用于叠加(Additive)的“被减姿势”;OverlayLayer层是要叠加的动画;BaseLayer层负责走跑跳蹲等基础动画。本文主要介绍地面站立动作状态机部分(下图左侧蓝色区域)

篇幅的原因,本文仅着重介绍状态机的构成,状态控制参数的计算将另文介绍。

下图为BaseLayer中状态机关系图,其中箭头表示包含关系。

2. 地面站立动作状态机分解

2.1 Linked Anim Layer:(N) Cycle Blending

Linked Anim Layer的作用是可以复用一部分状态机逻辑并可以优化状态机的结构提高可读性,(N) Cycle Blending使用Linked Anim Layer的意义主要在后者。(N) Cycle Blending有7个输入端,分别是6个方向(F、B、LF、LB、RF、RB)的动作和1个冲刺动作(Sprint),其中前向输入动作和冲刺动作通过步态标志Gait混合并缓存成(N)F Movement姿势,其它5个方向的输入分别直接缓存成对应方向Movement姿势。

以后要介绍的地面蹲伏动作状态机(CLF) Cycle Blending的Cycle Blending动画层和本文中地面站立动作非常相似,只不过没有了冲刺输入,6个方向直接缓存成对应方向Movement姿势。


(N) Cycle Blending的逻辑并不复杂,它最核心逻辑部分实际是**(N) Directional States:六方向状态机**,前面缓存的6个方向的Movement姿势将在六方向状态机使用。

2.1.1 (N) Directional States:六方向状态机

(N) Directional States是(N) Cycle Blending的核心,也是整个地面站立动作状态机的逻辑核心。它的作用就是负责角色地面各个方向之间切换时的“无缝过渡”。

状态逻辑

在解释(N) Directional States之前,我们先来看一下参与状态机的动画资源(以走步动画为例),重点关注角色的面朝向:

正前方迈步以及正后方退步的面朝向都是面向正前方的

而右(左)前方迈步时面朝向为左(右)前方
右(左)前方迈步时面朝向为右(左)前方
也就是说6个方向移动时,面朝向共有3种情况:左前/正前/右前,我们暂且分别称左前和正前以及
正前和右前为“相邻面朝向”。

(N) Directional States中的每个状态其实就是将对应方向的相邻面朝向动作通过速度参数混合以获取上体相对平稳的运动状态。

过渡规则

(N) Directional States中状态间的切换过渡规则共有3类,当A→B间有多个过渡规则时,它们之间是“或”的关系。

  • 基于方向标志的过渡:(几乎)每两个状态之间有一个基于方向标志过渡,这些过渡规则都使用了过渡规则共享(Transition Rule Sharing),详见《[玩转UE4/UE5动画系统>基础篇] 之 过渡规则共享(Transition Rule Sharing)-提升效率的小技巧》。

它们的逻辑也比较简单,其形式诸如:

  • 基于曲线值的过渡: LF⇆LB以及RF⇆RB之间都有基于曲线值的过渡,它们也使用了过渡规则共享,其形式诸如(下图示例为RB状态过渡至RF状态的规则):

  • 动画曲线Feet_Crossing:标记着双脚交叉的部分。
  • 动画曲线HipOrientation_Bias:标记髋部朝向的偏移,数值在-1至1区间,如下图所示:

这个过渡规则可解释为:当双脚无交叉且HipOrientation_Bias大于0.5时,由RB状态过渡至RF状态。

  • 基于曲线和状态权重的过渡: LF⇆LB以及RF⇆RB之间都有基于曲线和状态权重的过渡(两个白色非共享过渡),其形式诸如(下图示例为RB状态过渡至RF状态的规则):

在(N) Directional States中LB和RB都是相对临时的过渡状态,所以当它们的权重为1时也会进入到对应的LF或RF状态。

2.2 (N) Locomotion Cycles:站立动作循环状态机


为(N) Cycle Blending提供6个输入动作,其中6个方向输入端(F、B、LF、LB、RF、RB),分别是对应方向由静止到移动(走步/奔跑)的混合空间(BlendSpace),它们的作用就是分别为各种移动状态提供更细致平稳的过渡。

Sprinting Cycles部分就是基于角色前方向的相对加速度(Relative Acceleration Amount)混合出适当的冲刺姿势,作为(N) Cycle Blending的Sprint端输入。

2.3 (N) Locomotion Detail:细节状态机

故名思意,它的作用是(为 (N) Locomotion Cycles)增加细节,(N) Locomotion Detail的每个状态都包含有(N) Locomotion Cycles。甚至在(N) Running状态和(N) Walking状态中更是原封不动地使用了(N) Locomotion Cycles。

老王给这种动画状态机设计模式命名为洋葱模式(Onion Pattern)(另文详述)。

(N) Locomotion Detail并没有改变或扩展 (N) Locomotion Cycles的逻辑,只是丰富细节,比如:

在(N) Walk->Run状态添加了叠加动画以增添加速度感


(N) Locomotion Details的逻辑比较简单,本文就不做赘述了,大家也可以在使用过程中相对自由地在(N) Locomotion Details中发挥创造力。

2.4 (N) Locomotion States:地面站立动作状态机

(N) Locomotion States的作用就是添加了一些非移动状态及细节:

在ALS V4中有一个Should Move Check 方法,它决定角色是否为移动状态。


(N) Locomotion States


(N) Moving状态直接包含了 (N) Locomotion Detail

(N) Rotate Left 90和(N) Rotate Right 90分别是站立时的左右转向动画


(N) Not Moving做了一些曲线调节


(N) Stop中包含了Stop States状态机。

2.4.1 Stop States:脚掌锁定状态机

Stop States中的4个State(Lock Left Foot、Lock Right Foot、Plant Left Foot、Plant Right Foot)中都包含了(N) Locomotion States,它们的作用就是通过Feet_Position动画曲线控制Foot Lock,关于ALS V4中Foot Lock的实现,详见老王的另一篇博文《[玩转UE4/UE5动画系统>应用篇>功能模块] 之 Foot Lock系统(ALS V4实现方案详解)》

3. 小结

ALS V4地面站立动作状态机暂时介绍到此,未来的文章中还会介绍状态机的其它部分,敬请期待。

[玩转UE4/UE5动画系统>应用篇>功能模块] 之 ALS V4地面站立动作状态机详解相关推荐

  1. [玩转UE4/UE5动画系统>应用篇>功能模块] 之 ALS V4 主状态机详解

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的 ...

  2. [玩转UE4/UE5动画系统>Control Rig篇] 之 Control Rig + Fullbody IK版的足部IK实现(附项目代码)

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的资 ...

  3. [玩转UE4/UE5动画系统>应用篇>功能模块] 之 Foot IK系统(ALS V4实现方案详解)

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式. 教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>. 教程中使 ...

  4. [玩转UE4/UE5动画系统>应用篇>功能模块] 之 布娃娃系统(ALS V4实现方案详解)

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式. 教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>. 教程中使 ...

  5. [玩转UE4/UE5动画系统>Control Rig篇] 之 使用Control Rig实现目标偏移(Aim Offset)(附项目代码)

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的资 ...

  6. 短信平台系统搭建 后台功能管理 web源码架构 多线路由通道详解介绍

    一:短信通道路由模块 系统根据需要开发了专业版本的功能,主要特色功能是: 1:通道路由模块 2:客户模板审核和管理模块 3:客户账号审核和管理模块 4:客户签名审核和管理哦快 二:后台账号管理 1:权 ...

  7. Windows系统下nodejs、npm、express的下载和安装教程详解

    这篇文章主要介绍了Windows系统下nodejs.npm.express的下载和安装教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 1. node.js下载 首先进入http://nod ...

  8. erp系统有哪些功能模块?

    erp系统(又称:企业资源规划系统)是一套集成的业务应用程序,它可帮助企业有效管理财务.销售和运营等业务.在实际使用erp的过程中,我们可以分解为3个核心领域: 1.财务方面:erp系统包含会计功能, ...

  9. 网络考试系统主要由哪些功能模块组成

    使用网络考试系统,可以实现考试的信息化管理,企业.学校.机构,也可以通过局域网或公网进行考试,方便考试管理,而部署在公网更适合考生分布广.不易集中的远程培训考试. 网络考试系统主要由哪些功能模块组成? ...

最新文章

  1. ROM、PROM、EPROM、EEPROM、RAM、SRAM、DRAM的区别
  2. 网络营销专员浅析如何以低成本高获取实现网络营销?
  3. python入门教程非常详细-Python该怎么入门?Python入门教程(非常详细)
  4. C++基础汇总(一)
  5. 如何画功能稳定,美观的PCB?
  6. ITK:使用二项式内核模糊图像
  7. start 与 run 区别
  8. vba数组下标越界_VBA编程知识点(7)——数组基本知识
  9. 【theano-windows】学习笔记七——logistic回归
  10. 机器学习算法实践:决策树 (Decision Tree)(转载)
  11. flutter 判断是不是调试模式_当永恒的软键盘问题遇到Flutter
  12. logback的日志文件中出现大量的ESC符号
  13. matlab阿卡曼公式,阿克曼函数--一个计算方法
  14. 微信头像跨域问题解决
  15. std::forward理解
  16. .NET Data Provider
  17. 现代化物流对应术语解释
  18. 机房布线系统施工要点解析
  19. 海外服务器延迟,国内用户访问海外服务器延迟高,线路不稳定怎么办
  20. Face ID与传统的人脸识别到底有什区别?

热门文章

  1. css 剪辑图片_css实现图片剪裁
  2. 基于JAVA的校园论坛系统设计与实现
  3. Tslint检查下代码JavaScript(angular)规范
  4. java判断工作日_java 查询指定月份的工作日(不包括法定节假日)
  5. 音视频播放器开发——实现变速播放
  6. 字节跳动前端实习一面
  7. itext合成pdf报异常 PDF header signature not found
  8. 最好用的鼠标手势软件:MacStroke for Mac
  9. 嵌入式之Linux的LCD背光调节及驱动的工作原理
  10. php 面向对象知识体系