骨架(Skeleton)

SkeletonImage.png

在虚幻引擎4中,骨架是独立于骨架网格物体的资源。每个骨架网格物体需要一个和其相关联的骨架,而所有动画资源(比如动画序列、动画蒙太奇及混合空间)都是同该骨架相关联的,而不是同骨架网格物体相关联。

什么是骨架?

如果您熟悉数字内容创建,您也许已经知道了什么是 “骨架”。在大部分3D应用程序中,骨架是一个数字化的层次架构,用于定义角色中的骨骼或关节,并且在很多方面都模仿真实的生物骨骼。

MayaSkeleton.png

您可能在Maya中看到的典型的角色骨架。

一个主要的区别是骨架资源和骨架网格物体中的骨骼层次结构 不是 同一个东西。在虚幻引擎4中,骨架资源不太像是实际骨架的三维呈现,更像是一个列表,存放了一种特定类型的角色或骨架网格物体的骨骼和层次结构信息。动画通过这个列表来进行关联。

至于它在动画系统中的定位,最好把它想成处于骨架网格物体和动画之间的中间物。多个骨架网格物体可以使用同样的骨架资源,且任何使用相同骨架资源的网格物体都可以共享动画。

基本规则

当在处理UE4中的动画时,您需要知道一些关于骨架资源的基本知识:

  • 每个骨架网格物体需要一个相关的骨架资源。

  • 您可以在导入骨架网格物体时为它创建一个新的骨架资源,或者选择一个已有的骨架资源。

  • 骨架的初始部分是由根据其创建该骨架的骨架网格物体定义的 - 当进行重定向 时注意到这点是非常重要的。

  • 要想共享动画,那么骨架网格物体必须使用同样的骨架资源。

  • 共享同样的骨架资源要求不要破坏骨架网格物体中的骨骼层次结构的命名顺序。请参照以下的重用骨架 部分。

FBXImportOptions.png

当导入一个骨架网格物体时,您将看到是为该导入的网格物体使用现有骨架资源还是创建一个新骨架资源的选项。

重用骨架

骨架资源的一个重要功能是多个骨架网格物体可以使用一个单独的骨架资源。最好的一点是,每个骨架网格物体的骨架层次结构甚至都不必一样。但是,它们确实需要具有相同的基本结构。最重要的是 ,一个骨架网格物体的骨骼层次结构不能违反另一个网格物体的骨骼层次结构。

这意味着您的骨骼的名称和顺序必须一致。考虑一个具三个骨骼的手臂,骨骼名称命名为 123:

ExampleBoneHierarchy.png

如果您已经具有了您想同其使用同样骨架资源的第二个骨架网格物体,您需要保持这些骨架具有同样的顺序,但是您可以 添加 该层次结构的外围骨骼。所以,比如,您的新层次结构可能是这样的:

PeripheralBones.png

然而,您不能重新排序该层次结构。比如,这是无效的:

ReorderedBones.png

额外的肢体

因为给该层次结构添加的外围骨骼是有效的,所以可以很轻松地在具有额外部分的骨架网格物体间重用骨架资源。比如,您可能想在三个不同但类似的角色间共享动画,这三个角色具有基本相同的骨架结构( 及同样的骨骼名称 ),比如:

  • 男人 (在这个实例中,这就像是您的基本角色)

  • 女人,具有马尾辫的骨骼

  • 具有四个手臂的类人角色

您可以为所有这些角色使用相同的骨架资源,结果将是该骨架资源会包含关于 所有这三种 类型的关节层次结构信息。该动画将使用该骨架资源来决定要应用给每个骨骼的旋转度。由于该骨架网格物体设计时使得它们的基本骨架层次结构一样,所以它们之间的动画将可以完美地运作。唯一的区别是您可能需要一些特殊动画来驱动这些角色上的额外手臂或者马尾辫。

任何时候,如果接受到不在骨架网格物体中的骨骼的数据(比如,如果马尾辫动画用在了一个具有相同骨架资源但没有马尾辫的角色上),那么则忽略该动画数据。

这个系统仅会产生非常少量的性能消耗,然而,从制作方面来讲,一般最好仅在具有 类似 骨骼层次结构的骨架网格物体间共享骨骼资源。