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

如何操作:

  1. 在Control Rig中暴露变量:在Control Rig图表中,创建一个变量(例如 LookAt_EnabledAim_Intensity),并将其细节面板中的Expose To Animation Blueprint勾选上。
  2. 在动画蓝图中获取Control Rig实例:在动画蓝图的Event Graph中,使用 Get Control Rig 节点获取当前运行的Control Rig实例。
  3. 在动画蓝图中设置变量:通过 Get Control Rig 节点返回的实例,你可以 Set 任何你暴露出来的变量。
  4. 从游戏蓝图通信:游戏蓝图可以通过调用动画蓝图中自定义的函数或设置变量,来间接驱动这些Control Rig参数。

交互场景:

  • 受伤反应:当角色在游戏蓝图中受到伤害时,触发一个事件,通知动画蓝图,动画蓝图再设置Control Rig的 HitReaction_LocationHitReaction_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),实现动态的、由游戏事件触发的过场动画。

总结:一个完整的实战例子

目标: 角色被击中时,身体朝向子弹飞来的方向弯曲,并在中弹点播放特效。

  1. Control Rig 端:

    • 创建一个 Hit React 功能,它根据 Hit_Location (向量)和 Hit_Intensity (浮点数)变量,驱动脊柱骨骼程序化地朝向击中点弯曲。
    • 暴露 Hit_LocationHit_Intensity 变量给动画蓝图。
  2. 动画蓝图 端:

    • Anim Graph 中,将Control Rig节点混合在最终姿势输出前。
    • Event Graph 中,创建一个自定义事件 TriggerHitReaction,它接收一个位置参数,并设置Control Rig实例的 Hit_LocationHit_Intensity 变量。
  3. 角色蓝图 端:

    • 在角色的 Take Damage 事件中,获取伤害的来源位置。
    • 调用动画蓝图中的 TriggerHitReaction 事件,并将伤害来源位置传递过去。
    • 同时,在击中的位置(Hit_Location)生成一个火花特效。

通过这种分层协作,蓝图负责决策和通知,Control Rig负责执行精准的骨骼运动,两者各司其职,共同创造出响应迅速、表现力丰富的游戏动画。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值