UE_ControllRig交互
1. 在动画蓝图中调用 Control Rig
这是最常见、最核心的交互方式。你可以在动画蓝图的动画图表中,将Control Rig作为一个节点来使用。
数据流: 动画蓝图 -> Control Rig -> 最终骨骼姿势
如何操作:
在动画蓝图的Anim Graph中,右键搜索你的Control Rig资产(例如 CR_MyCharacter),然后将其连接到Output Pose上。
交互场景:
- 添加程序化运动:在动画蓝图的状态机或混合空间输出的基础动画之上,叠加由Control Rig计算的动作。例如,在基础的走路循环上,通过Control Rig让角色的头部始终看向一个目标。
- 姿势修正:使用Control Rig来修正动画的脚部穿墙、手部抓取物品等位置。
2. 从蓝图(Level Blueprint / Actor Blueprint)驱动 Control Rig
游戏逻辑(如角色血量、速度、玩家输入)通常写在角色的Actor蓝图或关卡蓝图中。这些蓝图可以直接设置Control Rig的参数。
数据流: 游戏逻辑蓝图 -> 动画蓝图 -> Control Rig
如何操作:
- 在Control Rig中暴露变量:在Control Rig图表中,创建一个变量(例如
LookAt_Enabled或Aim_Intensity),并将其细节面板中的Expose To Animation Blueprint勾选上。 - 在动画蓝图中获取Control Rig实例:在动画蓝图的
Event Graph中,使用Get Control Rig节点获取当前运行的Control Rig实例。 - 在动画蓝图中设置变量:通过
Get Control Rig节点返回的实例,你可以Set任何你暴露出来的变量。 - 从游戏蓝图通信:游戏蓝图可以通过调用动画蓝图中自定义的函数或设置变量,来间接驱动这些Control Rig参数。
交互场景:
- 受伤反应:当角色在游戏蓝图中受到伤害时,触发一个事件,通知动画蓝图,动画蓝图再设置Control Rig的
HitReaction_Location和HitReaction_Intensity变量,让角色身体程序化地朝向受击点弯曲。 - 情绪状态:根据角色的精神状态(平静、紧张、愤怒),游戏蓝图可以设置一个
Breathing_Heavy的强度参数,Control Rig根据这个参数来控制胸部骨骼的呼吸起伏幅度。
3. Control Rig 调用蓝图函数(反向通信)
更强大的是,Control Rig不仅可以被驱动,它反过来也可以调用蓝图中的函数。这实现了从“骨骼层面”到“游戏逻辑层面”的通信。
如何操作:
在Control Rig图表中,有一个名为 Execution 的分类,你可以找到 Invoke Function 节点。通过这个节点,你可以调用在动画蓝图或角色蓝图中定义的函数。
交互场景:
- 脚步同步:在Control Rig中计算脚步IK时,当一只脚完全落地的那一帧,调用蓝图的
PlayFootstepSound函数来播放脚步声。这样声音和视觉完美同步。 - 生成特效:当Control Rig计算的尾巴骨骼摆动速度超过某个阈值时,调用蓝图函数在尾巴尖生成风轨迹特效。
- 物理物体交互:当通过Control Rig计算的手部骨骼触碰到一个物体时,调用蓝图函数来通知物理系统。
4. 在Sequencer中联合使用
在过场动画序列中,它们的交互同样强大。
- 关键帧Control Rig:你可以在Sequencer中为Control Rig的控制器添加关键帧,制作精细的动画。
- 蓝图驱动Sequencer参数:游戏运行时,蓝图可以动态修改Sequencer中Control Rig轨道的参数(通过
Level Sequence Player),实现动态的、由游戏事件触发的过场动画。
总结:一个完整的实战例子
目标: 角色被击中时,身体朝向子弹飞来的方向弯曲,并在中弹点播放特效。
-
Control Rig 端:
- 创建一个
Hit React功能,它根据Hit_Location(向量)和Hit_Intensity(浮点数)变量,驱动脊柱骨骼程序化地朝向击中点弯曲。 - 暴露
Hit_Location和Hit_Intensity变量给动画蓝图。
- 创建一个
-
动画蓝图 端:
- 在
Anim Graph中,将Control Rig节点混合在最终姿势输出前。 - 在
Event Graph中,创建一个自定义事件TriggerHitReaction,它接收一个位置参数,并设置Control Rig实例的Hit_Location和Hit_Intensity变量。
- 在
-
角色蓝图 端:
- 在角色的
Take Damage事件中,获取伤害的来源位置。 - 调用动画蓝图中的
TriggerHitReaction事件,并将伤害来源位置传递过去。 - 同时,在击中的位置(
Hit_Location)生成一个火花特效。
- 在角色的
通过这种分层协作,蓝图负责决策和通知,Control Rig负责执行精准的骨骼运动,两者各司其职,共同创造出响应迅速、表现力丰富的游戏动画。
