随笔
主页
  • Unity
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
  • 数据库

    • Redis
  • Html 文档
  • CSS 文档
  • Vue 文档
  • TypeScript
  • Golang
  • 版本控制

    • Git 文档
    • Svn 文档
  • 技术文档

    • Markdown语法
    • GitHub技巧
    • Nodejs
  • 分类
  • 标签
  • 时间线
  • 目录结构
  • 配置和约定
  • 主题配置
  • 首页配置
  • front matter
  • 目录页配置
  • 摘要
  • 主题颜色
  • 评论栏
  • Markdown扩展
GitHub
主页
  • Unity
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
  • 数据库

    • Redis
  • Html 文档
  • CSS 文档
  • Vue 文档
  • TypeScript
  • Golang
  • 版本控制

    • Git 文档
    • Svn 文档
  • 技术文档

    • Markdown语法
    • GitHub技巧
    • Nodejs
  • 分类
  • 标签
  • 时间线
  • 目录结构
  • 配置和约定
  • 主题配置
  • 首页配置
  • front matter
  • 目录页配置
  • 摘要
  • 主题颜色
  • 评论栏
  • Markdown扩展
GitHub
  • 基础

  • 资源导入

  • 2D

  • Physical2D

  • UGUI

  • Animation

    • Animation
    • 导入外部动画
    • Avatar
      • 导入人形动画
        • 设置 Avatar
        • 配置 Avatar
        • 映射策略
        • 创建 Avatar 遮罩
    • Animation窗口
    • 创建动画剪辑
    • 动画化游戏对象
    • 动画曲线
  • Animator

  • Unity
  • Animation
dong
2021-01-16

Avatar

# 人形Avatar

Unity 的动画系统具有处理人形角色的特殊功能。因为人形角色在游戏中很常见,所以 Unity 为人形动画提供专门的工作流程以及扩展工具集。

Unity 使用Avatar系统来识别布局中的特定动画模型是否为人形,以及模型的哪些部分对应于腿、手臂、头和躯干。

由于不同人形角色之间骨骼结构的相似性,可将动画从一个人形角色映射到另一个角色,允许重定位和反向运动学 (IK)。

# 导入人形动画

当 Unity 导入包含人形骨架和动画的模型文件时,需要将模型的骨骼结构与其动画进行协调。为了实现这一点,系统会将文件中的每个骨骼映射到人形 Avatar,这样才能正确播放动画。因此,在将模型文件导入 Unity 之前,仔细准备该文件非常重要。

  1. 定义骨架类型并创建 Avatar。

  2. 纠正或验证 Avatar 的映射。

  3. 完成骨骼映射后,可选择单击 Muscles & Settings 选项卡来调整 Avatar 的肌肉配置。

  4. 可以选择将骨架骨骼到 Avatar 的映射保存为人体模板 (.ht) 文件。

  5. 可以选择通过定义 Avatar 遮罩来限制在某些骨骼上导入的动画。

  6. 从 Animation 选项卡中,启用 Import Animation 选项,然后设置其他特定于资源的属性。

  7. 如果文件包含多个动画或动作,可将特定动作范围定义为动画剪辑。

  8. 对于文件中定义的每个动画剪辑,可以:更改姿势和根变换,优化循环, 对人形骨架两侧的动画进行镜像 (Mirror)。 向剪辑添加曲线以便动画化其他项的时序,向剪辑添加事件以便在动画期间触发某些动作, 丢弃动画的一部分(类似于使用运行时 Avatar 遮罩,但却是在导入时执行的), 选择其他根运动节点来驱动动作

  9. 要保存更改,请单击 Import Settings 窗口底部的 Apply 按钮,也可单击 Revert 放弃所做的更改。

# 设置 Avatar

从 Inspector 窗口的 Rig 选项卡中,将 Animation Type 设置为 Humanoid。默认情况下,Avatar Definition 属性设置为 Create From This Model。如果保持该选项,Unity 会尝试将文件中定义的一组骨骼映射到人形 Avatar。

注意:在某些情况下,可将此选项更改为 Copy From Other Avatar,从而使用事先为其他模型文件定义的 Avatar。例如,如果在 3D 建模应用程序中使用多个不同的动画来创建一个网格(皮肤),则可以将网格导出到一个 FBX 文件,并将每个动画导出到各自的 FBX 文件。将这些文件导入 Unity 时,只需为导入的第一个文件(通常是网格)创建一个 Avatar 即可。只要所有文件都使用相同的骨骼结构,便可以将该 Avatar 用于其余文件(例如,所有动画)。

如果启用此选项,必须通过设置 Source 属性来指定要使用的 Avatar。

单击 Apply 按钮。Unity 会尝试将现有骨骼结构与 Avatar 骨骼结构相匹配。在许多情况下,它可以通过分析骨架中骨骼之间的连接情况来自动执行此操作。

如果匹配成功,Configure 菜单旁会出现一个复选标记。Unity 还会将 Avatar 子资源添加到模型资源(可以在项目视图中找到该资源)。

成功匹配只是意味着 Unity 能够匹配所有必需的骨骼。但是,为了获得更好的结果,还需要匹配可选骨骼,并将模型设置为正确的 T 形姿势 (T-pose)。

如果 Unity 无法创建 Avatar,Configure 按钮旁将显示一个叉号,且项目视图中不显示任何 Avatar 子资源。

由于 Avatar 是动画系统极其重要的一个方面,因此为模型正确配置 Avatar 非常重要。出于这一原因,无论自动创建 Avatar 是否成功,都务必要检查 Avatar 是否有效并正确进行设置。

# 配置 Avatar

如果 Unity 无法为模型创建 Avatar,必须单击 Rig 选项卡上的 Configure ... 按钮以打开 Avatar 窗口并修复 Avatar。

如果匹配成功,可以单击 Rig 选项卡上的 Configure ... 按钮,或从项目视图中打开窗口:

  1. 单击项目视图中的 Avatar 子资源。Inspector 将显示 Avatar 名称和 Configure Avatar 按钮。

  2. 单击 Configure Avatar 按钮。

如果尚未保存 Avatar,则会显示一条消息,要求保存场景:

出现这种情况的原因是,在 Configure 模式下,Scene 视图用于单独显示所选模型的骨骼、肌肉和动画信息,而不显示场景的其余部分。

保存场景后,Inspector 内将显示 Avatar 窗口,其中显示所有骨骼映射。 确保骨骼映射正确,并映射了 Unity 未分配的任何可选骨骼。

骨架必须至少具备所需的骨骼才能让 Unity 产生有效的匹配。为了提高与 Avatar 相匹配的机会,请确保骨骼的命名方式反映了其所代表的身体部位。例如,“LeftArm”和“RightForearm”明确显示了这些骨骼的控制对象。

# 映射策略

如果模型未产生有效匹配,可以使用与 Unity 内部过程类似的过程:

如果自动映射彻底失败或部分失败,可以通过从 Scene 视图或 Hierarchy 视图中拖动骨骼来手动分配骨骼。如果 Unity 认为骨骼适合,该骨骼会在 Avatar Mapping 选项卡中显示为绿色;否则显示为红色。

# 重置姿势

T 形姿势是 Unity 动画所需的默认姿势,也是在 3D 建模应用程序中建模的推荐姿势。但是,如果没有使用 T 形姿势对角色进行建模并且动画无法按预期工作,则可以选择:

如果骨骼分配正确,但角色未处于正确的姿势,将看到消息“Character not in T-Pose”。此时可从 Pose 菜单中选择 Enforce T-Pose 来修复该问题。如果姿势仍然不正确,可以手动将剩余的骨骼旋转为 T 形姿势。

# 创建 Avatar 遮罩

通过遮罩功能可以丢弃剪辑中的一些动画数据,从而让剪辑仅动画化对象或角色的某些部分而不是整体。例如,可能有一个标准的行走动画,其中包括手臂和腿部运动,但如果一个角色用双手抱着大型物体,那么不会希望其手臂在行走时向侧面摆动。但是,仍然可以在角色抱着物体时使用标准行走动画,但需要使用遮罩在行走动画的上层仅播放抱着物体动画的上半身部分。

可以在导入时或运行时将遮罩应用于动画剪辑。最好是在导入时应用遮罩,因为这样做允许从构建中忽略丢弃的动画数据,从而使文件更小,进而使用更少的内存。此外还可以提高处理速度,因为在运行时需要混合的动画数据更少。在某些情况下,导入遮罩可能对您不适用。这种情况下,可在运行时应用遮罩,为此需要创建 Avatar 遮罩 (Avatar Mask) 资源,并在 Animator Controller 的层设置中使用该资源。

要创建空的 Avatar 遮罩资源,可以:

  • 从 Assets 菜单中选择 Create > Avatar Mask。

  • 在项目视图中单击要定义遮罩的模型对象,然后单击右键并选择 Create > Avatar Mask。

新资源将显示在项目视图中:

现在可以将人体部位添加到遮罩,然后将遮罩添加到动画层或添加对遮罩的引用(在 Animation 选项卡的 Mask 部分)。

导入外部动画
Animation窗口

← 导入外部动画 Animation窗口→

Theme by Vdoing | Copyright © 2021-2023 Evan Dong MIT License | 粤ICP备2021052092号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×