AnimGraph 与节点

自动关联目录:AnimGraph 与节点

官方依据:Animation Blueprints(AnimGraph 是其中"创建动画逻辑的核心图表",可在其中混合动画、直接控制骨骼并输出最终姿势)。

1. 定位

AnimGraph 是 AnimBP 里"从若干动画算出最终姿势"的数据流图。它每帧求值一次,输出一个 Pose。

一句话定位:AnimGraph 是纯数据流,不是逻辑控制——逻辑判断放状态机,数值计算放这里。混着写会让图很快失控。

2. 节点分类与代价

类别节点代价
姿势来源AnimSequence Player、BlendSpace Player、Pose Asset低
混合Blend、Blend by Bool/Int/Enum、Layered Blend per Bone、Blend Poses by Bool低
叠加Additive、Apply Additive、Make Dynamic Additive中
状态State Machine见 动画状态机
骨骼控制Two Bone IK、FABRIK、Transform (Modify) Bone、Look At中—高(见 IK 与重定向)
过渡缓存Inertialization、Blend Stack低
缓存Save Cache Pose / Use Cached Pose负代价(省)
拷贝Copy Pose from Mesh、Copy Bone中
外部Control Rig、Linked Anim Layer、Montage Slot视内容

3. 三个最该会用但常被忽略的节点

Save Cache Pose / Use Cached Pose

把一段子图的结果缓存下来,在多处复用。典型:"下半身姿势算一次,既用于基础又用于叠加层"。

这是 AnimGraph 里唯一能"省"的节点——其余节点都是纯开销。

Inertialization

用惯性过渡替代传统混合:不再需要真的混合两个姿势,直接从一个姿势"滑"到另一个,保留速度信息。

对比传统 BlendInertialization
成本需要同时求两个姿势只求目标姿势
适用长时间过渡短促响应(受击、急停)
缺点—不适合长过渡(会失真)

Inertialization 是"短过渡"的性能正解,尤其配合 Blend Stack 用。

Layered Blend per Bone

按骨骼分层混合:上半身持枪、下半身跑步。用骨骼名 + 权重定义分层范围。

代价随层数与骨骼数上升;层数控制在 3 层以内。

4. 性能相关的写法

做法影响
用 Blend 而非多个分支分支会导致两条子图都求值(除非用状态机/Blend Stack)
Save Cache Pose复用已算好的姿势
Inertialization短过渡省一次求值
LOD 分支远处用简化图(见 动画性能)
骨骼 LOD减少需要解算的骨骼
减少 Transform Bone 节点每个都要遍历骨骼

最常见的浪费:同一个姿势在图上被算了三四次——用 Cache Pose 一次解决。

5. 代价与权衡

设计收益代价什么时候不该用
分支(Blend by X)直观两条子图都可能求值用状态机或 Blend Stack 更好
Additive叠加层复用性强需要构造 additive 动画一次性动作不必
Layered Blend per Bone上下半身独立层数与骨骼数上升成本层数控制在 3 内
Control Rig 节点灵活每帧解算简单 IK 用节点更快
Transform (Modify) Bone直接改骨骼遍历骨骼,多了很贵能用动画解决的别改骨骼
Inertialization短过渡最省长过渡失真长过渡用普通 Blend

6. 踩坑与排查

坑现象怎么验证
分支导致两路都求值性能翻倍用状态机或 Blend Stack
姿势算了很多次求值慢加 Save Cache Pose
Additive 结果不对没建 additive 动画检查动画是否标记为 Additive
Layered Blend 范围错了分层位置不对检查骨骼名与权重
Transform Bone 太多求值慢合并或减少
Inertialization 用错地方长过渡失真长过渡改普通 Blend
图太大无法维护—拆成 Linked Anim Layer(见 AnimBP)
节点顺序导致结果异常姿势被覆盖按数据流逐节点观察(Pose Watch)

7. 排查顺序

1. 慢?→ stat anim;找被重复求值的子图 → Cache Pose
2. 姿势不对?→ 用 Pose Watch 逐节点看
3. 混合不对?→ 分支/Additive/Layered 的语义是否理解错
4. 过渡抖动?→ 过渡方式与时长
5. 图太乱?→ 拆 Linked Anim Layer

参考