avatar

Ycyofmine’s Blog

云鸮雨霁

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于
首页 LyraStarterGame 03.人物移动和转身动画解析
文章

LyraStarterGame 03.人物移动和转身动画解析

发表于 2024/12/04
作者 Ycyofmine
4 分钟阅读

距离匹配和步幅适配

  1. 距离匹配(Distance Matching)

    调整动画的播放速率,例如开始、停止和着陆动画等运动动画资产。

  2. 步幅适配(Stride Warping)

    用于动态调整角色的步幅长度,这适用于不调整播放速率的情况,例如角色进入慢跑(Jog)状态时。

结合这两种方法之后,你可以动态地选择侧重于其中一种方法。在开始状态期间,我们首先使用距离匹配(Distance Matching)来保留姿势,然后在接近慢跑(Jog)状态时使用步幅适配(Stride Warping)来混合。

挖个坑,实现的详细解析。

TurnInPlace

TurnInPlace #1

/Game/Characters/Heroes/Mannequin/Animations/ABP_Mannequin_Base.ABP_Mannequin_Base/AnimGraph

当Pawn的所有者旋转时,网格组件会随之旋转,这会导致角色的脚部滑动。

在这里,我们通过抵消角色的旋转来保持脚部位置不动。

TurnInPlace #2

/Game/Characters/Heroes/Mannequin/Animations/ABP_Mannequin_Base.ABP_Mannequin_Base/UpdateRootYawOffset

此函数处理根据Pawn所有者当前状态来更新偏航偏移量。

TurnInPlace #3

/Game/Characters/Heroes/Mannequin/Animations/ABP_Mannequin_Base.ABP_Mannequin_Base/SetRootYawOffset

我们会限制偏移量,因为当偏移量过大时,角色需要转动得太远,导致脊柱扭曲得过度。虽然转身动画通常能跟上偏移量,但如果用户旋转相机过快,这会导致脚部滑动。

如果需要,可以将这个限制替换为使用能达到180度的瞄准动画,或者更积极地触发转身动画。

TurnInPlace #4

/Game/Characters/Heroes/Mannequin/Animations/ABP_Mannequin_Base.ABP_Mannequin_Base/SetRootYawOffset

我们希望通过瞄准动作来抵消偏航偏移量,以保持武器的瞄准方向与相机对齐。

TurnInPlace #5

/Game/Characters/Heroes/Mannequin/Animations/ABP_Mannequin_Base.ABP_Mannequin_Base/ProcessTurnYawCurve

当偏航偏移量变得过大时,我们触发转身动画来将角色旋转回来。例如,如果相机旋转了90度到右侧,它将面向角色的右肩。如果我们播放一个旋转角色90度到左侧的动画,角色将重新面朝相机。

我们使用“TurnYawAnimModifier”动画修饰符在每个转身动画中生成必要的曲线。

有关触发转身动画的示例,请参见 ABP_ItemAnimLayersBase。

TurnInPlace #6 (also see AnimBP_Mannequin_Base)

当偏航(yaw)偏移量变得足够大时,我们触发一个“TurnInPlace”动画来减少偏移量。

“TurnInPlace”动画通常会以一些平稳的动作结束,表示旋转完成。在这个过程中,我们会进入“TurnInPlaceRecovery”状态。如果偏移量再次变大,系统会从该状态切换回“TurnInPlaceRotation”状态。

通过这种方式,如果Pawn的所有者持续旋转,我们可以继续播放“TurnInPlace”动画的旋转部分,而无需等待平稳动作结束。

总结

大致思路就是在Idle和Stop状态下每帧都计算 RootYawOffset ,用于抵消下半身的旋转,防止产生滑步旋转,通过独立的下半身转身动画来完成转身。

如果旋转角度超过一个小阈值状态机就转到 TurnInPlaceRotation ,此时上半身旋转下半身不旋转,在 TurnInPlaceRecovery 状态进行下半身旋转,但是如果旋转角度过大,在 TurnInPlaceRotation 就会让下半身进行旋转,实现在 ABP_Mannequin_Base/ProcessTurnYawCurve 。

UE5 白话Lyra动画系统

http://supervj.top/2023/11/14/Lyra_%E5%8A%A8%E7%94%BB/

Unreal Engine 5 - Exploring Lyra - Part 3 (Animation)

UE
UE
本文由作者按照 CC BY 4.0 进行授权
分享

最近更新

  • ROS2中并发连接蓝牙手柄排错过程
  • 自行编译ros2-humble-plotjuggler
  • Ubuntu 22.04上蓝牙无法打开——(MT7922网卡为例)
  • Isaac sim遥操作控制
  • RPC:原理、组成与局限性
外部链接
  • codetime
  •  此博客的 Github 仓库

文章内容

相关文章

2024/12/05

LyraStarterGame 04.AI

在这之前,请先阅读行为树快速入门 行为树节点参考 黑板 在 行为树(Behavior Tree)中,Blackboard 是一个全局的数据存储区域,用于存放和共享 AI 的状态信息、变量以及条件。这些信息可以在树中的任何节点(包括选择器、序列、装饰器等)之间进行访问和更新。 复合节点 选择器 按从左到右的顺序执行其子节点。当其中一个子节点执行成功时,选择器节点将...

2024/12/03

LyraStarterGame 02.动画系统逻辑

Anim System 以下内容是来自 Lyra 本身的注释,我对其翻译了一下。 AnimBP 讲解 #1(也参见 ABP_ItemAnimLayersBase) /Game/Characters/Heroes/Mannequin/Animations/ABP_Mannequin_Base.ABP_Mannequin_Base/EventGraph 这个 AnimBP 在其 Event G...

2024/11/27

蓝图入门

默认读者有编程基础 蓝图类型 蓝图宏库和蓝图类 蓝图类就好比编程语言中的class,主要用于创建具有状态和行为的对象。 蓝图宏库更像是独立的函数集合,用于实现通用的逻辑或工具方法,不需要实例化,通常提供功能性操作。 ue术语 组件层级关系 Actor → Pawn → Player → Controller 创建蓝图 选择一种父类进行创建 ...

操作系统-第四章作业

C++八股随记

© 2025 Ycyofmine. 保留部分权利。

本站采用 Jekyll 主题 Chirpy

热门标签

games104 UE c++ robot OS 装机 计网 essay

发现新版本的内容。