动画重定位(不同骨架)
注:在引擎 4.5 版之前的版本中未提供此功能
动画重定位(不同骨架)是一种允许在不共用相同骨架资产的角色之间复用动画的功能,它不同于在共用相同骨架资产的角色之间重定位动画的 动画重定位(相同骨架) 。
在具有不同骨架的角色之间重定位动画的过程使用一种名为 结构 的资产在不同骨架之间传递骨骼信息。选择结构后,您要在源骨架和目标骨架(您希望将动画重定位到的骨架)之间共享它。完成这一步后,要使目标骨架的骨骼与结构中存储的节点配对。
一旦目标骨架中的所有骨骼都在结构中设置完毕,您就可以将源骨架使用的动画重定位到目标骨架。如果您希望快速将所有动画资产从一副骨架移动到另一副,甚至可以将整套动画蓝图连同其所有关联数据一起重定位,从而节省时间。
开始操作
为了开始在不同骨架之间重定位动画,您需要为两副骨架选择用于共享的结构资产。本节将向您介绍如何访问引擎内容中附带的 人形结构,并指定它以供使用。
我们还要使用两个可通过 市场 免费获取的资产包,它们包含我们可用于重定位的多种骨架和动画。如果您已经准备好了两个骨架资产供使用,可以跳过下面的说明,使用您的资产。如果您没有准备骨架,可以按照下面说明中概述的步骤操作,添加两个包。
在这个示例中,我们使用可通过 市场 下载的下列资产。
我们使用的源骨架是 UE4_Mannequin_Skeleton,它包含在 动画初学者包 中。
我们使用的目标骨架是 SWAT_Skeleton,它包含在 Mixamo 角色包 中。
安装以上两个包之后,您可以在虚幻启动程序中通过 添加到项目(Add to project)按钮将它们添加到项目。
动画初学者包含有多种动画,我们将把它们重定位到 Mixamo 角色包中的角色。
您的虚幻引擎 4 版本可能与上图中的版本不同。
下面的步骤将说明如何访问默认结构并重定位动画:
在 内容浏览器 中的 Game/AnimStarterPack/UE4_Mannequin/Mesh 文件夹下,打开 UE4_Mannequin_Skeleton 资产。
单击 重定位管理器(Retarget Manager)按钮,然后在 设置结构(Set up Rig)下,单击 选择结构(Select Rig)下拉菜单,选择 选择人形结构(Select Humanoid Rig)。
单击查看大图。
单击 保存(Save),然后关闭窗口。
在 内容浏览器 中的 Game/MixamoAnimPack/Mixamo_SWAT/Anims 文件夹下,打开 SWAT_Skeleton 资产。
单击 重定位管理器(Retarget Manager)按钮,然后在 设置结构(Set up Rig)下,单击 选择结构(Select Rig)下拉菜单,选择 选择人形结构(Select Humanoid Rig)。
单击查看大图。
指定结构后,下一步需要使目标的骨骼与结构上的节点配对。
使用下拉菜单在骨架上选择与结构上的骨骼(节点)位置相似的骨骼。
单击查看大图。
在上图中,左边是我们的源骨架(启用了 显示骨骼名称(Show Bone Names)),右边是目标骨架(也启用了“显示骨骼名称”(Show Bone Names))。中间是 设置结构(Set up Rig)窗口,我们在其中设置目标骨架的那些骨骼与源骨架上的骨骼相同(或位置相似)。
虽然每副骨架的命名约定可能不同,但您可以看到每块骨骼在每副骨架上的位置,从而相应地将它们配对。您不需要指定所有骨骼,而且根据您的需求可能需要进行一些微调。
继续将目标骨架中的每块骨骼指定到结构上的相应节点。
下表演示了 UE4_Mannequin_Skeleton 和 SWAT_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 在设置结构时可以使用两种配置:基本 或 高级。基本配置(上表所示)使用确保动画成功重定位所需的关键元素。高级配置允许您包括并指定更多应该在重定位过程中包括的骨骼。
在上面的示例中,左手和右手都包括在了重定位过程中,但没有包括各个手指。使用基本配置重定位动画可确保将基本动作复制到新骨架,但如果源骨架有活动的手指而目标骨架没有,那么重定位后的动画就不会显示活动的手指,手部就会显得很僵硬。
单击 显示高级(Show Advanced)按钮切换 高级 配置。
将目标骨架中的骨骼指定到高级配置下结构上的节点。
节点(结构) 骨骼(骨架) 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 重定位功能尚在开发中。
在 内容浏览器 中的 Game/AnimStarterPack 下,选择一个要重定位到新骨架的动画。
右键单击 该动画,然后选择 重定位动画资产(Retarget Anim Assets) -> 复制动画资产并重定位(Duplicate Anim Assets and Retarget)。
在 选择骨架(Select Skeleton)窗口中,您应该会在窗口上部看到您的骨架,选择它并单击 选择(Select)。
系统将在目标骨架所在的文件夹中创建您选择重定位的动画的副本。
现在可以将此新动画用于您的角色。
重定位调整
设置要在骨架之间共享的结构时,您可能遇到一副骨架比另一副骨架多出一些骨骼的情况(在“开始操作”部分中,如果您使用了示例中指定的骨架,可能已经注意到 Mixamo 骨架在手部等处有更多骨骼)。有时这会引发问题,但可以通过递归地对骨架设置平移重定位来解决。
例如,这里有一张调整前的截图:
请注意,由于在结构设置过程中未指定多余的骨骼,手指显得很扭曲。
这里是经过调整后的示例:
您可以通过骨架树形视图来指定骨骼平移重定位。在这里我们在每根手指的最后一节 右键单击,将骨骼平移设置为 递归地设置平移重定位骨架(Recursively Set Translation Retargeting Skeleton)。
重定位动画蓝图
在您完成设置两副骨架资产共享的结构的过程后,如果源骨架有关联的 动画蓝图,您就可以选择重定位它,以用于目标骨架。
右键单击 动画蓝图,然后选择 重定位动画蓝图(Retarget Anim Blueprints) -> 复制动画蓝图并重定位(Duplicate Anim Blueprints and Retarget)选项。
将显示 选择骨架(Select Skeleton)窗口。选择您的目标骨架,然后按 选择(Select)。
系统将复制所有与动画蓝图关联的资产(动画资产、混合空间等)以及在动画蓝图本身中定义的所有逻辑,放置在与目标骨架相同的位置。
重定位基本姿势
有时您可能希望将动画重定位到基本姿势与源骨架不太一致的骨架。
以下图右边的骨架为例。
左边的源骨架摆出了 A 字姿势,而目标骨架摆出的是 T 字姿势。即使设置了两副骨架共用的结构,如果我们就这样重定位动画,可能遇到下图所示的问题。
在上图中,已经为目标骨架重定位了动画;但是因为基本姿势不同,它的双臂都被截掉了。好在您还可以在重定位动画前先重定位目标骨架的基本姿势,以减少或消除这样的问题。
在目标骨架中的 重定位管理器(Retarget Manager)下,有一个叫做 管理重定位基本姿势(Manage Retarget Base Pose)的选项。
如果您单击 查看姿势(View Pose)按钮,将看到当前的基本姿势。可以通过单击骨骼并使用 旋转 (E) 小部件来调整它。
在上图中,已经调整了右臂,但左臂还是使用默认的基本姿势(我们可以使用旋转小部件来调整)。调整完姿势后,可以单击 保存姿势(Save Pose)选项保存重定位后的基本姿势。由于两副骨架的基本姿势已经差不多,现在您可以重定位动画了。当“骨架选择”(Skeleton Select)窗口出现时,您将注意到目标骨架使用了重定位后的基本姿势。
用重定位后的基本姿势重定位动画,得到效果更好的动画。