人形 (Humanoid) 模型是一种非常特别的结构,包含至少 15 种骨骼,这些骨骼的组织方式与实际人体骨架大致相符。所有其他使用 Unity 动画系统的模型则属于非人形或__通用 (Generic)__ 类别。这意味着通用模型可能是从茶壶到飞龙的任何物体,因此非人形骨架可能拥有大量各式各样的骨骼结构。
为了处理这种复杂性,Unity 只需知道哪个骨骼是__根节点 (Root node)__。就通用角色而言,这是人形角色质心的最佳近似值。它有助于 Unity 确定如何以最可靠的方式渲染动画。由于只有一个骨骼要映射,通用设置不使用 Humanoid Avatar 窗口。因此,准备将非人形模型文件导入 Unity 时所需的步骤比人形模型所需的步骤要少。
1.设置 Rig 为 Generic。 2.可以选择通过定义 Avatar 遮罩来限制在某些骨骼上导入的动画。 3.从 Animation 选项卡中,启用 Import Animation 选项,然后设置其他特定于资源的属性。 4.如果文件包含多个动画或动作,可将特定帧范围定义为动画剪辑。 5.对于文件中定义的每个动画剪辑,可以: * 设置姿势和根变换 * 优化循环 * 向剪辑添加曲线以便动画化其他项的时序 * 向剪辑添加事件以便在动画期间触发某些动作 * 丢弃动画的一部分(类似于使用运行时 Avatar 遮罩,但却是在导入时执行的) * 选择其他根运动节点来驱动动作 * 阅读 Unity 提供的有关导入剪辑的任何消息 * 观看动画剪辑的预览 6.要保存更改,请单击 Import Settings 窗口底部的 Apply 按钮,也可单击 Revert 放弃所做的更改。
从 Inspector 窗口的 Rig 选项卡中,将 Avatar__(动画)类型设置为 Generic。默认情况下,__Avatar Definition 属性设置为 Create From This Model__,而 Root node__ 选项设置为 None。
在某些情况下,可将 Avatar Definition 选项更改为 __Copy From Other Avatar__,从而使用事先为其他模型文件定义的 Avatar。例如,如果在 3D 建模应用程序中使用多个不同的动画来创建一个网格(皮肤),则可以将网格导出到一个 FBX 文件,并将每个动画导出到各自的 FBX 文件。将这些文件导入 Unity 时,只需为导入的第一个文件(通常是网格)创建一个 Avatar 即可。只要所有文件都使用相同的骨骼结构,便可以将该 Avatar 用于其余文件(例如,所有动画)。
如果保留 Create From This Model 选项,则必须从 Root node 属性中选择一种骨骼。
如果将 Avatar Definition 选项更改为 Copy From Other Avatar__,必须通过设置 Source__ 属性来指定要使用的 Avatar。
还可以使用 Skin Weights 属性更改可以影响给定顶点的最大骨骼数量。默认情况下,此属性将影响限制为四个骨骼,但是您可以指定更多或更少。
单击 Apply 按钮时,Unity 会创建__通用__ __Avatar__,并将 Avatar 子资源添加到模型资源(可以在 Project 视图中找到该资源)下。
注意:通用 Avatar 与人形 Avatar 不同,但它会显示在项目视图中,也会保存根节点映射。但是,如果单击项目视图中的 Avatar 图标在 Inspector 中显示其属性,则仅会显示其名称,不显示 Configure Avatar 按钮。
可以在导入时或运行时将遮罩应用于动画剪辑。最好是在导入时应用遮罩,因为这样做允许从构建中忽略丢弃的动画数据,从而使文件更小,进而使用更少的内存。此外还可以提高处理速度,因为在运行时需要混合的动画数据更少。在某些情况下,导入遮罩可能对您不适用。这种情况下,可在运行时应用遮罩,为此需要创建 Avatar 遮罩 (Avatar Mask) 资源,并在 Animator Controller 的层设置中使用该资源。
要创建空的 Avatar 遮罩资源,可以:
新资源将显示在__项目__视图中:
现在可以从 Transform 层级视图中选择要包含或排除的骨骼,然后将遮罩添加到动画层或添加对遮罩的引用(在 Animation 选项卡的 Mask 部分)。