虚幻中的角色动画都是基于 骨骼网格体 (Skeletal Mesh)实现,换言之,动画是跟骨骼网格体绑定的。如果有两个骨骼网格体,各自有一套角色动画,那么就可以通过重定向(Retargeting)将两个骨骼网格体做绑定(Rig),从而迁移动画,实现在不同网格体间的角色动画的复用。

(本篇没有 C++ 代码,只是不讲这个,好像没法玩下去。毕竟如果下载别人角色或动画,然后不知道怎么用到自己的项目上,那等于没用)

使用模板

UE4 动画重定向到 UE4

UE5 带有 Mannequin 的 IK Rig,可以不需要手动绑定,手动绑定的方法见下面。

使用第三人称模板就自带了 Mannequin 的 IK Rig,就不需要手动进行绑定了。同时也提供了两个 Retargeter,分为处理从 UE5 Manny 角色到 UE4 的 Mannequin 之间的重定向,以及 UE4 的 Mannequin 到 UE5 的 Manny 角色之间的重定向。

模板自带的 IK Rig

此时我们 UE5 第三人称模板里只有一个 Mannequin 动画:

默认动画

假设现在从商店导入了一个 Mannequin 动画包(选 5.0 即可):

动画包

由于动画资产一般都自洽(自带 Mesh):

动画包中的Mesh

所以这个时候发现我们自己的 Mannequin 还是只有一个动画。当我们知道这两个 Mannequin 都是一样的。那么只需要拷贝一份 IK,将预览的骨骼改成 AnimStarterPack 中的骨骼。这样就算绑定好了。

具体步骤:

  1. 复制 IK_UE4_Mannequin,重新命名;
  2. 将 Preview Skeletal Mesh 修改成 AnimStarterPack 的 Mesh;修改 Mesh
  3. 新建一个 RTG 资产,选择这两个 IK 资产进行重定向即可。由于是要将下载的动画重定向到本地项目,那么源 Source 就应该是 AnimStarterPack 的 IK 和 Mesh,Target 是本地的 IK 和 Mesh;创建 Retargeter 资产
  4. 导出需要的动画,可以添加前缀、后缀等等。导出动画

UE4 动画重定向到 UE5

UE4 的 Mannequin 重定向到 Manny 和 Metahuman 只需要用自带模板即可。直接复制自带的 RTG,即 RTG_UE4Manny_UE5Manny。然后将 Source IK 修改成需要动画对应的 IK 即可。但会发现一个问题,就是手部有明显问题。

动画错误

解决这个问题,需要在 Chain Mapping 面板中将以下骨骼设置为 None

  • Metacarpal (掌骨)系列
    • LeftPinkyMetacarpal
    • LeftMiddleMetacarpal
    • LeftRingMetacarpal
    • LeftIndexMetacarpal
  • Arm:
    • LeftLowerArmTwist02
    • LeftUpperArmTwist02
  • 右手对称设置:
    • RightPinkyMetacarpal
    • RightRingMetacarpal
    • RightMiddleMetacarpal
    • RightIndexMetacarpal
    • RightLowerArmTwist02
    • RightUpperArmTwist02

修复重定向的问题
需要注意,Metahuman 角色骨骼和 UE5 的 Manny 兼容,所以也会有这个问题,同样将上述骨骼设置为 None 即可

这样动画就正常重定向了,可以看到手部是正常的。这样就可以导出需要的动画。

重定向效果

手动创建 IK Rig 与 RTG

如果骨骼名称不一样,或者骨骼层次也不一样的情况下,通常是需要手动建立需要绑定的骨骼,从而建立两个骨骼网格体之间的映射。

Mixamo 角色动画

Mixamo 是一个免费的角色和动画库,但是它有它自己的一套骨骼名称,没法直接套用模板。那么就需要手动进行重定向。我们试着从上面下载一个角色,还有动画,然后重定向到小白人 Mannequin 身上。

我们随便选择一个角色,然后下载,之后下载对应角色的动画。(不需要跟我选一样的,最重要的是开心)
Mixamo 角色和动画

将下载的角色和动画导入 UE(fbx 直接拖入 Content Browser 就行了)
导入后的动画和角色

创建 IK Rig

接下来就是为这个骨骼创建 IK Rig。

作为动画用的骨骼都会有一个根骨骼,这里的根骨骼是 Hips,将其设置为 Retarget Root。

设置根骨骼

接下去主要是按人体结构进行分组,至于怎么分组准确来讲并没有标准。只是作为人类角色来讲,人体结构大致都差不多,基本都是两胳膊、两腿、一个头……

我们这里就命名就和小白人(基本)一致,这样就省去创建小白人的 IK,如果你非要起自己名字,那么就要创建两个 IK,才能进行重定向,并省略掉 IK 的部分。

接下来的步骤相对而言比较无聊,就是一个个的手动 Add New Chain,然后命名。(如果重定向发现动画有问题,可能就是骨骼选错了,就需要重新回来重新调整对应的骨骼或命名)

大概就是这样,IK 部分就算完成了。

Mixamo 的IK Rig

因为第三人称模板已经有了小白人的 IK,如果没有的话,也是需要手动建立 IK 的。

创建 RTG

创建一个 Retargeter,选择这两个骨骼对应的 IK Rig。(此步骤过于简单,不赘述)

调整姿势

T-Pose 与 A-Pose

可以看到,Mixamo 是 T-Pose,而并不是 A-Pose,那么重定向的时候就需要调整骨骼到(尽可能同样的姿势),否则解算出来的骨骼就会差距太大。

我们这里创建一个新的重定向姿势进行调整。

创建 Pose

当然,我这里只是调一下幅度比较大的,至于手指部分,我就不调了,主要是手臂和腿的旋转。当然,两个骨骼越接近,重定向的效果肯定就越好。

调整成 T-Pose

现在就可以看看动画效果了,

重定向后的效果

小白人至此也就学会了爬。

小结

本文主要是动画向的,并不是程序向的,手动重定向还涉及调整骨骼的旋转,但都是非常简单的操作(有手和不瞎即可上手操作)。

  • 由于目前很多角色动画还是基于 UE4 的小白人 Mannequin,所以我们的 Character 可能仍然使用的是基于 Mannequin 的 Mesh。
  • UE4 与 UE5 的相互重定向:如果是下载了基于 Mannequin 的动画,项目中的角色是基于 UE5 的 Manny 或者是 Metahuman 的角色,那么使用官方自带的 IK Rig 和 Retargeter 进行重定向。
  • 通用方法(例如去绑定动物骨骼),那么就需要手动绑定,至于需要使用哪些骨骼,就看各自的需求了。

现在无论是商城上的角色还是网上的角色或动画都可以愉快的使用了。