在团结引擎 1.9.0 版本中,动画系统围绕角色移动、动画图控制和程序化绑定工作流进行了进一步升级。Locomotion 新增 Rotate Root Bone、Stride Warping、Inertialization、Distance Matching 等能力,支持更自然的朝向控制、步幅适配、动画过渡和位移匹配,有效减少滑步与姿态突变问题。
同时,AnimGraph 增强了 Additive、AnimationClip 与 Event 控制能力,Rig Graph 也在 Code Generate、IK、射线检测、Gizmo 绘制等方面持续完善,帮助开发者更高效地构建稳定、自然、可控的角色动画系统。
Locomotion
Stride Warping 步幅变形节点
AnimGraph 新增的 StrideWarping(步幅缩放) 节点提供了另一种思路:不修改动画资源,在运行时动态缩放步幅,使脚步覆盖的距离与角色的实际移动速度相匹配。
以下为同一段行走动画在不同移动速度下的步幅缩放效果:
![]()
Inertialization 惯性化混合节点
动画切换时的姿态突变,是动作类游戏中常见的动画品质问题。传统线性混合虽能缓解突变,但在过渡期间会将两个姿态按权重混合,导致目标动画的运动轨迹被稀释。
AnimGraph 现已新增 Inertialization(惯性化混合) 节点,通过记录姿态差异并逐步衰减的方式,在过渡期间完整播放目标动画,避免运动轨迹被稀释。
以下为同一段动画切换的三种过渡方式对比:
![]()
性能测试数据: 由于仅需评估目标动画,过渡期间性能有所提升,100个如上图所示的角色来回切换动作的场景中,过渡阶段性能平均提升4.5%,非过渡阶段性能损耗0.4%。较短的过渡时长在过渡阶段能获得更好的性能提升,非过渡阶段的性能下降也更少。
![]()
惯性化与线性化过渡性能对比
Rotate Root Bone 旋转根骨骼节点
旋转根骨骼节点(Rotate Root Bone Node)的核心作用是根据输入的偏航角(Yaw)和俯仰角(Pitch)旋转角色的根骨骼,常用于实现角色头部/躯干的上下左右朝向控制、瞄准姿态调整等效果。
该节点支持对输入角度进行范围映射、钳制和平滑插值处理,确保旋转效果自然流畅。
Distance Match 距离匹配功能
距离匹配(Distance Matching)节点的核心作用,在于将动画播放的驱动逻辑由传统的“时间轴驱动”转变为“空间位移驱动”。它能够根据角色实际移动距离动态匹配动画进度,从而有效保证起步、急停和快速变向等场景下,脚步动作与物理位移在时间和空间上的一致性。使用距离匹配首先需要在动画 inspector 上勾选 lockToRoot 来生成一根距离曲线,有了距离曲线之后后续节点会通过采样曲线数值来计算出实际的位置。
动画通常依赖时间轴播放,常常导致胶囊体已停止但脚步还在滑动。该功能需与基于物理预测逻辑配合使用:实时计算出角色静止所需的预测停止距离,节点则据此直接跳转至对应的动画帧,确保角色移动表现与物理空间位移的一致性。并引入了基于距离数据的动画序列评估器,支持查询并直接输出动画曲线中与距离标记相匹配的帧姿态,可有效解决角色滑步问题。
距离匹配需要在 Animation Graph 中通过 Animation Evaluator Node 进行计算,不同于 Animaiton Clip Node,Evaluator 只能通过设置精确时间来采样姿态,姿态更新需要通过在右侧的 bindingFunctions 栏目里根据需要执行的频率不同来在不同的细分类别中添加函数来进行驱动(如果全局只需要执行一次则在 OnInitFunctions 中添加,如果每帧都需要执行则在 UpdateBindingFunctions 栏里添加,如果每次进入状态执行一次则在 OnBecameRevalentFunctions 里添加),每个函数需要给定一个 AnimEvaluator 格式的入参,不能有输出参数。
AnimGraph 动画控制增强
- Apply Additive 节点和 Dynamic Additive 节点支持 MeshSpace。勾选 MeshSpace,动画旋转的差值运算和叠加运算均发生在全局坐标系中;不勾选 MeshSpace,则默认动画旋转的差值运算和叠加运算均发生在局部坐标系中。
- Apply Additive 节点和 Dynamic Additive 节点兼容 BlendTree 节点。BlendTree 节点的输出端口可以连接 Apply Additive 节点和 Dynamic Additive 节点的输入端口,注意:与 Apply Additive 节点的 Additive 端口相连的 BlendTree 节点内部使用的动画应正确设置 Additive 参数以控制叠加效果。
![]()
- AnimationClip 节点支持 OverrideLoop 和 StartPosition,可以单独控制节点的loop和开始播放点位,不用更改clip资产
![]()
- 新增 BecomeRelevantBinding,每次激活对应Node的时候都会执行调用
![]()
- Blendtree 和 Clip 节点通过 EventClip 节点实现 Event 控制机制和 AnimationClip 分离。
![]()
![]()
RigGraph 工作流升级
- Code Generate 功能增强:兼容模块化资产,并支持 Rig Graph Manager 组件资产列表中包含多个资产的场景。当模块化资产中包含所有的人体绑定模块时,使用 Code Generate 并开启 Brust 时会大幅提升 Runtime 下的运行速度。
![]()
未使用 Code Generate
![]()
使用了 Code Generate
- Bone Render:Rig Graph 资产编辑器界面中,参考模型的骨骼被高亮渲染显示。用户可自行编辑骨骼渲染的样式。
- Ray Cast:新增 Ray Cast Node 实现射线检测。
- FullBodyIK:在 Rig Graph 中新增基础的 Full Body IK 功能节点。
- Chain IK Constraint:在 Rig Graph 中新增 Chain IK Constraint 节点,可用于 Script Graph 中的绑定逻辑创建。
- Gizmo 绘制:在script graph中添加Gizmo绘制的相关节点:Draw Cube Safe、Draw Icon Safe、Draw Line Safe、Draw Wire Cube Safe、Draw Sphere Safe、Draw Wire Sphere Safe、Draw Ray Safe (Ray)、Draw Ray Safe (From&Direction),并增加Set Gizmo Color 和 Set Gizmo Matrix 节点以设置 Gizmo 的颜色和变换矩阵。
- Time 节点:Rig Graph 中提供了获取一些时间属性的节点,这些节点可以获取或设置时间相关的属性。
Event Graph CodeGen
使用 CodeGen 可以使得 EventGraph 和 Function 部分的运行更加快速。使用方法:点击 Compile 按钮可以将 EventGraph 和 Functions 编译为C,C# 代码存放于 Assets/AnimGraph.Generated 文件夹下面,存在 C# 代码会自动使用编译后的代码,不再通过图逻辑解释执行。
![]()
编译后直接走C# 逻辑更新,可有效提升运行速度并减少GC(垃圾回收)开销。
![]()
未使用Code Gen
![]()
使用了Code Gen
快速上手
点击菜单栏,Editor -> Project Settings
Player -> Other Settings 当中勾选 Add AnimationGraph Package和 Add RigGraph Package 运行测试场景查看项目
更多使用指南:https://docs.unity.cn/cn/tuanjiemanual/Manual/Animation-whats-new.html
Unity 官方微信
第一时间了解Unity引擎动向,学习进阶开发技能
每一个“点赞”、“在看”,都是我们前进的动力
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.