动画重定位

描述如何在多个骨架网格体中使用重定位动画以便共享动画,

Windows
MacOS
Linux

RetargetingHeader.png

动画重定位 是一种允许在共用相同骨架 资源但比例差异很大的角色之间复用动画的功能。通过重定位,可以防止生成动画的骨架在使用来自不同外形的角色的动画时丢失比例或产生不必要的变形。 通过动画重定位,还可以在使用 不同骨架 资源的角色之间共享动画,前提是他们使用相似的骨骼层级,并使用名为 绑定(Rig) 的共享资源在骨架之间传递动画数据。

为何使用重定位?

假设您有多个角色,您希望在基本角色、矮壮角色和高瘦角色之间共享动画。

BaseCharacter.png

ShortStocky.png

TallSkinny.png

基本角色

矮壮角色

高瘦角色

重定位前的结果

在应用重定位前,您就可以在任何共用相同骨架资源的骨骼网格之间使用动画。但是,如果角色身材比例如上图所示有差异,就会得到一些很难看的结果。请注意矮个角色是如何被不必要地拉长的,高个角色又是如何被压短的,这都是系统为了使其符合基本角色的骨骼比例而进行的更改。

BaseCharacterRunning.png

ShortStockyRunning.png

TallSkinnyRunning.png

基本角色

矮壮角色

高瘦角色

重定位后的结果

对角色应用重定位以后,系统就不再考虑它们的比例差异,动画会在每个角色身上正常播放。 您也可以转到 视口(Viewport) 选项中的 显示(Show)>非重定位动画(Non-Retargeted Animation) 来查看原骨架(以米黄色显示)和当前骨架(白色)的差异。请注意,在基本角色身上,米黄色的非重定位骨骼与骨架是完美重合的。

BaseCharacterRunningRetargetedBones.png

ShortStockyRunningRetargetedBones.png

TallSkinnyRunningRetargetedBones.png

基本角色

矮壮角色

高瘦角色

重定位的原理是怎样的?

动画绑定到骨架 资源。骨架资产其实就是一个骨骼名称和层次结构数据的列表,但它也存储了来自用于定义骨架资产的原始骨骼网格的初始比例。此数据是以骨骼平移数据的形式存储的。特别要注意的是,重定位系统只会重定位骨骼的平移分量。骨骼的旋转始终来自动画数据。

因为使用了原始骨骼网格定义骨架资产的比例,所以使用该骨架资产但有不同比例的其他任何骨骼网格(例如比原始网格短得多的网格)都需要经过重定位才能正确工作。如果不经过这一步,具有不同比例的骨骼网格会尝试使用原始网格的平移数据,导致我们在本文开头看到的各种错误。

为了解决这个问题,骨架编辑器 中的骨架树提供了几个设置,用于更改处理骨骼之间平移重定位的方式。有 3 种不同设置可用于骨骼平移重定位:

RetargetingSettings.png

  • Animation(动画)——骨骼平移来自动画数据,不做改变。

  • Skeleton(骨架)——骨骼平移来自目标骨架的绑定姿势。

  • 比例动画(AnimationScaled)——骨骼平移来自动画数据,但按骨架的比例调整。这是目标骨架(播放动画的骨架)与源骨架(制作动画的骨架)的骨骼长度之比。

此外,对于动画重定位,使用重定位动画和非重定位动画没有显著的性能差异。使用动画重定位的好处是增加独特角色的数量,又不必创建全新的一套匹配动画,重新做动画可能会严重占用您的动画存储预算。

不同骨架的重定位动画

在为不共享相同骨架资源的角色处理动画重定位时,需要指定一个特殊的资源,名为 绑定(Rig),它负责处理骨架之间传递的动画数据。 与各个角色关联的骨架资源通过共享的 绑定(Rig) 资源通信,以正确地将变换数据从一个源传递到其预定目标。

绑定(Rig) 可以在 骨架编辑器 中的重定位管理器 中指定,同一个绑定需要指定给两个骨架资源。

请参阅使用重定位后的动画 以了解逐步指南。

重定位如何处理最终效果器?

高个角色会跑得更快吗?它们能拿住相同的道具吗?——这些都是使用重定位时可能出现的问题。简而言之,这里没有自动完成的工作,要由用户来决定如何实施。

关于保持比例,有一种方法是创建单独的一串骨骼,跟随原始动画中的手部运动,称为“手IK骨骼”。然后重定位身体和手臂,但不重定位“手IK骨骼”,使其在重定位后保持原样。这样您就可以让不同比例的角色操作相同的道具(例如,给步枪装弹)。

通过单独设置一串骨骼可以在您需要时方便地在 FK 和 IK 之间平滑切换(例如您希望在装填武器弹药时打开“手IK”,在从口袋里取弹夹时关闭“手IK”)。

这个系统非常灵活,可以根据您的需要定制。也许您只希望左手是IK,而右手使用其FK位置和IK旋转。有时可以这样处理脚部,有时不需要这样处理。当角色踩踏非常精确的道具时,您会希望打开IK;当角色只是四处奔跑时,您会希望使用FK,以免产生罗圈腿的角色(或相反)。

设置重定位

如上文重定位工作原理中所述,首先需要为骨架中的骨骼设置 骨骼平移重定位 模式。

通常您需要对两足生物使用这些设置:

  • 根骨骼、IK骨骼、武器骨骼和任何一种将使用动画模式的标记。

  • 骨盆将使用比例动画,以确保其在正确的高度,同时仍能动作。

    • 您希望平移和重定位动画的其他任何骨骼也应该使用比例动画。

  • 所有其他骨骼都应使用骨架。它们将使用来自目标骨架的静态平移。

这意味着快速工作流程应该是:

RecursivelySet.png

  1. 右键单击 根骨骼,并 递归地设置平移重定位骨架,以便所有骨骼都设置为“骨架”(Skeleton)。

  2. 找到骨盆或与之相当的骨骼,将其设置为 比例动画(AnimationScaled)

  3. 找到根骨骼,所有IK骨骼、所有武器骨骼或其他标记式的骨骼,将它们设置为使用 动画(Animation)

如果要重定位共享相同骨架资源的角色的动画,这些动画现在将受到动画重定位的影响。 如果要重定位不共享相同骨架资源的角色的动画,则需要执行一些额外步骤,确保正确重定位动画。 请参阅使用重定位后的动画 来获取更多信息。

使用重定位源管理器

BasePoseManager.png

在动画重定位中使用的另一个工具是 重定位管理器,它可以让您:

  • 管理重定位源(Manage Retarget Source) 资源——如果每个骨架有不同比例的网格体则十分有用,您可以使用该设置来指示某个特定动画是否来自于另一个来源。

  • 设置绑定(Set up Rig)——将动画重定位到使用相同绑定的不同骨架。

  • 管理重定位基本姿势(Manage Retarget Base Pose)——重定位资源到其他骨架时可以使用,允许更改目标的基本姿势,以使其与源基本姿势一致,并提供更准确的重定位动画。

请参阅 重定位管理器 页面来获取更多信息。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback