Featured image of post 动画蓝图 AnimGraph 核心逻辑(虚幻引擎)

动画蓝图 AnimGraph 核心逻辑(虚幻引擎)

Core logic of Animation Blueprint AnimGraph: cached base pose, head aim offset and enum-driven pose blending in UE5.

动画蓝图 AnimGraph 核心逻辑(虚幻引擎)

整体逻辑

动画图分为两条分支,通过枚举混合节点输出最终姿势:

  1. 上方分支:基础全身动画(待机/走路/跑步),对应普通移动状态
  2. 下方分支:基础动画 + 头部瞄准偏移,对应瞄准状态
  3. 混合节点:根据 E_PlayerState 枚举值,在两种姿势间平滑切换
  4. 输出节点:将最终姿势输出,驱动角色显示

动画蓝图 AnimGraph 节点链路图

逐节点拆解

1. 基础姿势缓存与复用(性能优化)

  • Basic 状态机:存放最基础的 Locomotion 动画(待机、走、跑、跳等),输出完整基础全身姿势
  • 使用缓存姿势"Basic":缓存状态机输出,供多处复用
    • 上方分支直接读取原版基础姿势
    • 下方分支读取后做头部修改
    • 好处:状态机只计算一次,避免重复运算,是 UE 动画蓝图的标准性能优化手段

2. 下方分支:头部瞄准偏移链路

在不改变全身基础动画的前提下,单独让头部骨骼跟随瞄准点移动,实现"看向目标"的效果。

流程

1
基础姿势 → 本地到组件空间 → Transform Bone(修改 Head 骨骼)→ 组件空间到本地
步骤 说明
本地到组件空间 骨骼动画默认是本地空间(相对父骨骼),要单独修改某根骨骼必须转到组件空间(相对于整个骨骼组件),否则修改会被父骨骼旋转带偏
Transform Bone 核心修改节点,针对 Head 骨骼:Alpha=1.0 完全应用偏移,Translation 连接 Aim Socket Location 驱动头部位移
组件空间到本地 修改完后转回本地空间,才能与其他姿势混合及输出

3. 混合姿势(按枚举 Blend Poses by Enum)

根据 E_PlayerState 枚举值切换不同动画姿势:

引脚/参数 作用
默认姿势 原版基础全身动画,对应普通移动、未瞄准状态
AIM 姿势 修改过头部的瞄准姿势,对应开镜/瞄准状态
默认混合时间 0.2 切回普通状态时 0.2 秒平滑过渡
AIM 混合时间 0.1 切入瞄准状态时 0.1 秒快速过渡,手感更跟手
Active Enum Value 接入 E_PlayerState 枚举变量,由角色蓝图控制

扩展性强:后续加换弹、奔跑、受伤等新姿势,只需在枚举新增选项,再给混合节点增加对应输入引脚。

4. 输出姿势(Result)

混合后的最终姿势输出,直接驱动骨骼网格体渲染。

设计要点

  1. 分层思想:基础全身动画是一层,瞄准偏移是叠加的一层,互不干扰
  2. 空间转换规范:修改单根骨骼必须走「本地 → 组件 → 本地」的转换流程
  3. 状态驱动动画:用枚举统一管理角色动作状态,比多个布尔变量更清晰、扩展性更好
  4. 平滑过渡:所有状态切换都带混合时间,保证动画衔接自然
本作品采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可(CC BY-NC-SA 4.0)
文章浏览量:Loading
Powered By MC ZBD Studio
发表了64篇文章 · 总计115.79k字
载入天数...载入时分秒...
总浏览量Loading | 访客总数Loading

主题 StackJimmy 设计
由ZephyrBD修改