动画重定位(不同骨架)

Retarget1_1.jpg

注:在引擎 4.5 版之前的版本中未提供此功能

动画重定位(不同骨架)是一种允许在不共用相同骨架资产的角色之间复用动画的功能,它不同于在共用相同骨架资产的角色之间重定位动画的 动画重定位(相同骨架)

在具有不同骨架的角色之间重定位动画的过程使用一种名为 结构 的资产在不同骨架之间传递骨骼信息。选择结构后,您要在源骨架和目标骨架(您希望将动画重定位到的骨架)之间共享它。完成这一步后,要使目标骨架的骨骼与结构中存储的节点配对。

一旦目标骨架中的所有骨骼都在结构中设置完毕,您就可以将源骨架使用的动画重定位到目标骨架。如果您希望快速将所有动画资产从一副骨架移动到另一副,甚至可以将整套动画蓝图连同其所有关联数据一起重定位,从而节省时间。

开始操作

为了开始在不同骨架之间重定位动画,您需要为两副骨架选择用于共享的结构资产。本节将向您介绍如何访问引擎内容中附带的 人形结构,并指定它以供使用。

我们还要使用两个可通过 市场 免费获取的资产包,它们包含我们可用于重定位的多种骨架和动画。如果您已经准备好了两个骨架资产供使用,可以跳过下面的说明,使用您的资产。如果您没有准备骨架,可以按照下面说明中概述的步骤操作,添加两个包。

在这个示例中,我们使用可通过 市场 下载的下列资产。

  • 我们使用的源骨架是 UE4_Mannequin_Skeleton,它包含在 动画初学者包 中。

  • 我们使用的目标骨架是 SWAT_Skeleton,它包含在 Mixamo 角色包 中。

安装以上两个包之后,您可以在虚幻启动程序中通过 添加到项目(Add to project)按钮将它们添加到项目。

AnimationStarterpack2.jpg

动画初学者包含有多种动画,我们将把它们重定位到 Mixamo 角色包中的角色。

您的虚幻引擎 4 版本可能与上图中的版本不同。

下面的步骤将说明如何访问默认结构并重定位动画:

  1. 内容浏览器 中的 Game/AnimStarterPack/UE4_Mannequin/Mesh 文件夹下,打开 UE4_Mannequin_Skeleton 资产。

  2. 单击 重定位管理器(Retarget Manager)按钮,然后在 设置结构(Set up Rig)下,单击 选择结构(Select Rig)下拉菜单,选择 选择人形结构(Select Humanoid Rig)

    单击查看大图。

  3. 单击 保存(Save),然后关闭窗口。

  4. 内容浏览器 中的 Game/MixamoAnimPack/Mixamo_SWAT/Anims 文件夹下,打开 SWAT_Skeleton 资产。

  5. 单击 重定位管理器(Retarget Manager)按钮,然后在 设置结构(Set up Rig)下,单击 选择结构(Select Rig)下拉菜单,选择 选择人形结构(Select Humanoid Rig)

    单击查看大图。

  6. 指定结构后,下一步需要使目标的骨骼与结构上的节点配对。

    Retarget7.png

  7. 使用下拉菜单在骨架上选择与结构上的骨骼(节点)位置相似的骨骼。

    单击查看大图。

    在上图中,左边是我们的源骨架(启用了 显示骨骼名称(Show Bone Names)),右边是目标骨架(也启用了“显示骨骼名称”(Show Bone Names))。中间是 设置结构(Set up Rig)窗口,我们在其中设置目标骨架的那些骨骼与源骨架上的骨骼相同(或位置相似)。

    虽然每副骨架的命名约定可能不同,但您可以看到每块骨骼在每副骨架上的位置,从而相应地将它们配对。您不需要指定所有骨骼,而且根据您的需求可能需要进行一些微调。

  8. 继续将目标骨架中的每块骨骼指定到结构上的相应节点。

    下表演示了 UE4_Mannequin_SkeletonSWAT_Skeleton 的设置

    节点(结构) 骨骼(骨架)
    Root None
    Pelvis Hips
    spine_01 Spine
    spine_02 Spine1
    spine_03 Spine2
    clavicle_l LeftShoulder
    upperarm_l LeftArm
    lowerarm_l LeftForeArm
    hand_l LeftHand
    clavicle_r RightShoulder
    upperarm_r RightArm
    lowerarm_r RightForeArm
    hand_r RightHand
    neck_01 Neck1
    head head
    thigh_l LeftUpLeg
    calf_l LeftLeg
    foot_l LeftFoot
    thigh_r RightUpLeg
    calf_r RightLeg
    foot_r RightFoot

    在设置结构时可以使用两种配置:基本高级。基本配置(上表所示)使用确保动画成功重定位所需的关键元素。高级配置允许您包括并指定更多应该在重定位过程中包括的骨骼。

    在上面的示例中,左手和右手都包括在了重定位过程中,但没有包括各个手指。使用基本配置重定位动画可确保将基本动作复制到新骨架,但如果源骨架有活动的手指而目标骨架没有,那么重定位后的动画就不会显示活动的手指,手部就会显得很僵硬。

  9. 单击 显示高级(Show Advanced)按钮切换 高级 配置。

    RetargetAdd4.png

  10. 将目标骨架中的骨骼指定到高级配置下结构上的节点。

    节点(结构) 骨骼(骨架)
    index_01_l LeftHandIndex1
    index_02_l LeftHandIndex2
    index_03_l LeftHandIndex3
    middle_01_l LeftHandMiddle1
    middle_02_l LeftHandMiddle2
    middle_03_l LeftHandMiddle3
    pinky_01_l LeftHandPinky1
    pinky_02_l LeftHandPinky2
    pinky_03_l LeftHandPinky3
    ring_01_l LeftHandRing1
    ring_02_l LeftHandRing2
    ring_03_l LeftHandRing3
    thumb_01_l LeftHandThumb1
    thumb_02_l LeftHandThumb2
    thumb_03_l LeftHandThumb3
    lowerarm_twist_01_l LeftHand
    upperarm_twist_01_l LeftArm
    index_01_r RightHandIndex1
    index_02_r RightHandIndex2
    index_03_r RightHandIndex3
    middle_01_r RightHandMiddle1
    middle_02_r RightHandMiddle2
    middle_03_r RightHandMiddle3
    pinky_01_r RightHandPinky1
    pinky_02_r RightHandPinky2
    pinky_03_r RightHandPinky3
    ring_01_r RightHandRing1
    ring_02_r RightHandRing2
    ring_03_r RightHandRing3
    thumb_01_r RightHandThumb1
    thumb_02_r RightHandThumb2
    thumb_03_r RightHandThumb3
    lowerarm_twist_01_r RightHand
    upperarm_twist_01_r RightArm
    calf_twist_01_l None
    ball_l LeftToeBase
    thigh_twist_01_l LeftUpLeg
    calf_twist_01_r None
    ball_r RightToeBase
    thigh_twist_01_r RightUpLeg

    有时一副骨架中可能有另一副骨架所不包含的附加骨骼;您可以忽略这些骨骼,因为可以对目标骨架进行调整来解决这个问题。

    在此示例中,您也可以将 IK 骨骼指定到 Mixamo 角色上的 None,因为 IK 重定位功能尚在开发中。

  11. 内容浏览器 中的 Game/AnimStarterPack 下,选择一个要重定位到新骨架的动画。

  12. 右键单击 该动画,然后选择 重定位动画资产(Retarget Anim Assets) -> 复制动画资产并重定位(Duplicate Anim Assets and Retarget)

    RT_DuplicateAnim.jpg

  13. 选择骨架(Select Skeleton)窗口中,您应该会在窗口上部看到您的骨架,选择它并单击 选择(Select)

    Retarget11_2.jpg

  14. 系统将在目标骨架所在的文件夹中创建您选择重定位的动画的副本。

    Retarget12.png

    现在可以将此新动画用于您的角色。

重定位调整

设置要在骨架之间共享的结构时,您可能遇到一副骨架比另一副骨架多出一些骨骼的情况(在“开始操作”部分中,如果您使用了示例中指定的骨架,可能已经注意到 Mixamo 骨架在手部等处有更多骨骼)。有时这会引发问题,但可以通过递归地对骨架设置平移重定位来解决。

例如,这里有一张调整前的截图:

Retarget13.png

请注意,由于在结构设置过程中未指定多余的骨骼,手指显得很扭曲。

这里是经过调整后的示例:

Retarget15.png

您可以通过骨架树形视图来指定骨骼平移重定位。在这里我们在每根手指的最后一节 右键单击,将骨骼平移设置为 递归地设置平移重定位骨架(Recursively Set Translation Retargeting Skeleton)

Retarget14.png

重定位动画蓝图

在您完成设置两副骨架资产共享的结构的过程后,如果源骨架有关联的 动画蓝图,您就可以选择重定位它,以用于目标骨架。

右键单击 动画蓝图,然后选择 重定位动画蓝图(Retarget Anim Blueprints) -> 复制动画蓝图并重定位(Duplicate Anim Blueprints and Retarget)选项。

RT_AnimBP.jpg

将显示 选择骨架(Select Skeleton)窗口。选择您的目标骨架,然后按 选择(Select)

Retarget11_2.jpg

系统将复制所有与动画蓝图关联的资产(动画资产、混合空间等)以及在动画蓝图本身中定义的所有逻辑,放置在与目标骨架相同的位置。

Retarget17.png

重定位基本姿势

有时您可能希望将动画重定位到基本姿势与源骨架不太一致的骨架。

以下图右边的骨架为例。

Retarget2_2.jpg

左边的源骨架摆出了 A 字姿势,而目标骨架摆出的是 T 字姿势。即使设置了两副骨架共用的结构,如果我们就这样重定位动画,可能遇到下图所示的问题。

Retarget19.png

在上图中,已经为目标骨架重定位了动画;但是因为基本姿势不同,它的双臂都被截掉了。好在您还可以在重定位动画前先重定位目标骨架的基本姿势,以减少或消除这样的问题。

在目标骨架中的 重定位管理器(Retarget Manager)下,有一个叫做 管理重定位基本姿势(Manage Retarget Base Pose)的选项。

Retarget20.png

如果您单击 查看姿势(View Pose)按钮,将看到当前的基本姿势。可以通过单击骨骼并使用 旋转 (E) 小部件来调整它。

Retarget21.png

在上图中,已经调整了右臂,但左臂还是使用默认的基本姿势(我们可以使用旋转小部件来调整)。调整完姿势后,可以单击 保存姿势(Save Pose)选项保存重定位后的基本姿势。由于两副骨架的基本姿势已经差不多,现在您可以重定位动画了。当“骨架选择”(Skeleton Select)窗口出现时,您将注意到目标骨架使用了重定位后的基本姿势。

Retarget2_2.jpg

用重定位后的基本姿势重定位动画,得到效果更好的动画。

Retarget23.png