[玩转UE4/UE5动画系统>Control Rig篇] 之 Control Rig版的惯性倾斜实现(附项目代码)

本教程通过ControlRig详细讲解如何在UE4/UE5中实现角色运动的惯性倾斜效果,包括地面和空中运动。相比传统叠加动画法,ControlRig法无需额外动画资源,控制更灵活,扩展性更强。教程涵盖ControlRig绑定、ForwardsSolve、动画蓝图中的加速度计算等关键步骤,并提供了开源项目供参考。
摘要由CSDN通过智能技术生成

本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式。教程内容将同步免费发布于开发游戏的老王(知乎|CSDN)的专栏《玩转UE4/UE5动画系统》。教程中使用的资源及工程将以开源项目的形式更新到GitHub:玩转UE4上。

在这里插入图片描述
工程文件: 玩转UE4(GitHub)
在这里插入图片描述

0. 效果演示

用ControlRig实现惯性倾斜

1. 前言

1.1 关于Control Rig以及Fullbody IK

关于Control Rig以及Fullbody IK的简要说明以及一个实现足部IK的案例,请见《[玩转UE4/UE5动画系统>Control Rig篇] 之 Control Rig + Fullbody IK版的足部IK实现(附项目代码)》

1.2 惯性倾斜的传统实现方法:叠加动画法

从上面演示视频的惯性倾斜的关闭和开启对比中,我们可以看到惯性倾斜,由两大部分组成:地面和空中。

我们先以突然退步跑为例解释一下地面部分的效果。下图中,A是角色的Idle动画状态,B是角色退步跑的动画状态(原始动画提供的状态),这里的倾斜叠加就是要生成一个C状态,当角色"突然"退步跑时,在瞬时加速度的作用下先由A状态到C状态,速度稳定后再回到B状态。

注意: 影响惯性倾斜的是加速度而不是速度

在这里插入图片描述

空中部分相对简单,B是跳跃动画原始状态,A是角色叠加了起跳前倾斜角度的状态,角色跳到空中会忽略空气阻力的话,在惯性作用下会保持着这个角度。

在这里插入图片描述
总而言之,惯性倾斜就是让角色的运动通过倾斜来体现一点惯性的感觉。虽然效果很细微,但是还是可以让动画更生动。

老王在《[玩转UE4/UE5动画系统>应用篇>功能模块] 之 倾斜叠加(Lean Additive)(ALS V4实现方案详解)》(下文简称为:叠加动画法)一文中介绍过惯性倾斜的传统实现方法,该方法的关键就是先用正常体位/前倾/后倾/左倾/右倾五个动画资源构造出一个混合空间,在动画蓝图中计算出加速度来对混合空间定位,然后把混合空间叠加到当前动画上。

在这里插入图片描述

在这里插入图片描述

那么叠加动画法的缺点就先显而易见了:

  • 需要很多额外的动画资源。
  • 对于倾斜幅度的控制非常不灵活。

2. Control Rig法

有了Control Rig实现方法就灵活且简单多了。本例实现方法的关键就使用Fullbody IK在运行时动态实现身体的倾斜,而且Control Rig绑定的方法不唯一,简直是太方便了!

2.1 地面运动的惯性倾斜实现

2.1.1 Control Rig绑定

使用头部(head_ctrl)、小腿(calf_l_ctrl和calf_r_ctrl)三点构造出一个 Fullbody IK。之所以把西面的IK固定点放在小腿而不是足部,我希望在倾斜时,小腿以下尽可能保持原动画姿态。

在这里插入图片描述

头部IK,以前游戏和动画开发中应该很少用到这个IK吧!

在这里插入图片描述
在这里插入图片描述

2.1.2 Forwards Solve

Step 1:插值计算当前倾斜偏移量

相较于叠加动画法,本例中插值计算也放到Control Rig中。个人觉得以后能放到Control Rig中的计算就尽量放,这样更便于模块化,虽然Control Rig目前还不能用C++开发,但以后肯定会实现的。

在这里插入图片描述
Step 2:先还原head_ctrl然后根据当前CurrentLeanAmount进行偏移

在这里插入图片描述

Step 3:足部控制器取动画中的位置

在这里插入图片描述
Step 4:Fullbody IK

在这里插入图片描述

2.1.3 在动画蓝图中计算角色地面运动的加速度

本部分逻辑和叠加动画法一样,只不过把插值部分移到了Control Rig中。

在这里插入图片描述

2.1.4 在动画蓝图中使用Control Rig

在这里插入图片描述

相较于叠加动画法,可以非常方便地控制倾斜幅度。在地面运动中,使用Weight_Gait动画曲线对Idle/走/跑赋以不同的权重系数。

2.2 空中运动的惯性倾斜

2.2.1 Control Rig绑定

和地面运动很相似,只不过把下面的IK固定点放到了脚部
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2.2 Forwards Solve

Forwards Solve逻辑和地面运动也是相同的

在这里插入图片描述

2.2.3 在动画蓝图中计算角色在空中的加速度

本部分逻辑和叠加动画法一样,只不过把插值部分移到了Control Rig中。

在这里插入图片描述

2.2.4 在动画蓝图中使用Control Rig

在这里插入图片描述
轻松集成到动画蓝图。

3. 小结

我们可以看到,和叠加动画法相比Control Rig法有很多优点:

  1. 无须额外的动画资源。
  2. 更加灵活简单的控制。
  3. 更好的扩展性以及更多的可能。
  4. 更方便移植和复用。
  5. 再加上之前足部IK的教程,我们可以看到,以前很多功能的实现都使用着完全不同的技术手段,有了Control Rig就可以使用相对统一的方法实现了。

缺点:
Fullbody IK运算量较大,具体项目中酌情使用。

参考

本文参考了Advanced Locomotion V4 。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发游戏的老王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值