【Unity编程】Unity动画系统(二)

发表于2018-10-10
评论0 3k浏览
接上篇《【Unity编程】Unity动画系统(一)》本篇文章接着介绍Unity动画系统的第二部分,这里大家要注意下,这篇介绍的动画文档因为从Unity5.6更新到了Unity2017,所以接下来的翻译在2017的文档上继续,动画文档的内容较多,为了能清楚显示当前阅读在哪里,我也作为分段落处理。

我将根据2017版的文档段落来进行分段:

Animation
      Animation System Overview
      Animation Clips
            Animation from external source
                  Working with humanoid animations
                       Creating the Avatar
                       Configuring the Avatar
                       Muscle setup
                  Asset preparation and import
                       Using humanoid Characters
                       Preparing your own character
                  Non-humanoid Animations【目前翻译到这里-_#!】
                  Splitting Animations
                  Looping animation clips
                  Masking Imported Clips
                  Animation Curves on Imported Clips
                  Animation events on imported clips
                  Selecting a Root Motion Node
                  Euler Curve Import
            Animation Window Guide
                  Using the Animation view
                  Creatinga New Animation Clip
                  Animating a GameObject
                  Using Animation Curves
                  Editing Curves
                  Key manipulation in Dopesheet mode
                  Key manipulation in Curves mode
                  Objects with Multiple Moving Parts
                  Using Animation Events
      Animator Controllers
            The Animator Controller Asset
            The Animator Window
            Animation State Machines
                  State Machine Basics
                  Animation Parameters
                  State Machine Transitions
                  State Machine Behaviours
                  Sub-State Machines
                  Animation Layers
                  Solo and Mute functionality
                  Target Matching
                  Inverse Kinematics
                  Root Motion-how it works
                        Tutorial:Scripting Root Motion for“in-place”humanoid animations
            Blend Trees
                  1D Blending
                  2D Blending
                  Direct Blending
                  Additional Blend Tree Options
            Animation Blend Shapes
            Animator Override Controllers
      Retargeting of Humanoid animations
      Performance and Optimization
      Animation Reference
            Animation Clip
            Animator Component
            Animator Controller
                  Creating an Animator Controller
                  Animation States
                  Animation transitions
            Avatar Mask
            Human Template files
            Importing models
                  Models
                  FBX Importer,Rig options
                  FBX Importer-Animations Tab
                  3D formats
      Animation HOWTOs
            Animation FAQ
            Using Blender and Rigify
      Playables API
            The PlayableGraph
            ScriptPlayable and PlayableBehaviour
            Playables Examples
      A Glossary of animation terms

动画片段>使用外部导入的动画>使用人形动画>肌肉绑定

Mecanim允许您使用肌肉控制不同骨骼的运动范围。
如果Avatar 被正确配置,Mecanim将“理解”骨骼结构,并激活Avatar检视面板(选中FBX文件中的Avatar组件并单击常规检视面板中的”Configure Avatar”可以进入Avatar检视面板)中的Muscles & Settings(“肌肉&设置”)选项卡。 在这里,可以方便地调整角色的运动范围,角色的肢体将在人类关节变化所能到达的范围内的发生变形,不会发生变形错误或自我重叠。

你可以调整身体中的单个骨骼(上图中的下半部分),也可以使用预定义的几种操作方式来操纵角色的变形,这些预定义的操作可以一次性操纵几个骨骼(图中的上部)。

Additional Setting(附加设置)部分底部显示的“Translate DoF”选项允许你启用对人形骨骼的移动动画(例如:手臂可以伸长)。 禁用此选项后,骨骼仅能发生旋转。 只有在你的动画中包含针对某些骨骼的运动,你才需要启用此选项。 启用“Translate DoF”选项具有一些性能成本,因为动画系统需要做一个额外的步骤来重新定位人形动画。 “Translate DoF”可用于Chest(胸部),UpperChest(胸部上部)、Neck(颈部)、LeftUpperLeg(左腿上部)、RightUpperLeg(右腿上部)、LeftShoulder(左肩)和RightShoulder(右肩)部分的肌肉。

动画片段>使用外部导入的动画>准备和导入资源>使用人形动画

为了充分利用Mecanim的人形动画系统和重定位功能,你需要有一个可操纵的、已经蒙皮的人形网格。
  1. 角色模型通常由存储于一个3D数据包裹中的多边形组成的,也可能它是源于很复杂的一个网格模型,后来被导出为多边形或三角形网格使用。
  2. 我们需要创建一个关节层次结构,也被称为“骨架”,它定义了网格内的骨骼以及骨骼之间的相对运动关系(层次结构中的每个节点在Unity内部都是一个GameObject),我们通过骨架来控制角色的运动。创建这个骨架的过程被称为“骨骼绑定”。
  3. 然后,网格或皮肤将被关联到这个骨架,以便定义出,在给定的关节发生运动时,网格哪些相应部分的将发生移动。将骨架关联到网格的过程称为“蒙皮”。

怎样获得人形动画模型

Mecanim动画系统主要有三种方法获取人形动画模型:
  1. 使用程序化角色系统或角色生成器,如Poser,Makehuman或Mixamo。 这些系统中有的将对你的网格进行绑定和蒙皮(例如,Mixamo),有些则不会。 此外,这些过程中有的可能会要求你减少原始网格中的多边形数量,以使其适用于Unity。
  2. 从Unity Asset Store购买角色模型。
  3. 你当然可以从零开始制作自己的角色模型。

导出和验证

Unity可以导入许多不同的3D文件格式,有通用的,也有原生的格式。 我们建议你使用FBX 2012格式来导出和验证你的模型,因为它将允许你:
  • 在导出网格时,可以包含骨架层次、法线,贴图和动画
  • 它允许你重新导入3D包裹(FBX文件),来验证你的动画模型是否按照你预期的方式导出
  • 它允许你仅仅导出动画,不包含网格

动画片段>使用外部导入的动画>准备和导入资源>制作你自己的角色

从零开始创建你自己的人形动画角色的话,需要三个步骤:建模、骨骼绑定、蒙皮

建模

这个阶段,你将在一些3D模型软件( 3DSMax, Maya, Blender等等)中创建你自己的人形角色的模型网格。尽管这是另外一个非常庞大的主题,但是这里仍然需要你遵循一些准则,来确保模型在Unity项目中与动画可以正常协调工作。
  • 遵守合理的拓扑结构。模型的网格结构是相当敏感的,一般来说,您需要清楚的是,模型的顶点和三角形将如何跟随动画而变形。拓扑结构不合理的话,甚至将导致模型无法移动,以避免对网格造成不好的变形。你可以通过研究别人制作的3D人物网格,可以了解到如何布置拓扑结构以及为什么。
  • 注意模型网格的尺寸。你可以进行一次导入测试,即将导入的模型的大小与“1米标准立方体”(Unity的标准立方体原型边长为一个单位(1米),因此可以用作很多测量的用途)进行比较。检查你的模型使用的单位,并调整导出设置,使导出的模型的尺寸比例正确。除非你很小心,否则很容易创建没有任何尺度概念的模型,这样最终会导致你导入模型到Unity时大小不一致。
  • 调整你的网格,使得人物的脚站立在模型的本地原点或“锚点”上。由于角色通常都是在地板上直立行走,所以如果锚点(即其变换位置Transform)直接位于地面位置的话,那么它更容易处理。
  • 如果允许的话,最好使用T型的模型。这将在一些需要的地方留有空间,有助于处理多边形细节(例如腋下)。这也将使您的网格更容易与骨骼进行绑定。
  • 把你的模型清理干净。在可能的情况下,执行封孔、焊缝和去除隐藏的面等清理操作,这将有助于蒙皮操作,特别是自动蒙皮过程。
                                           Skin Mesh, textured and triangulated

骨骼绑定

这是创建关节骨架以控制模型运动的过程。

很多3D软件提供了许多方法来为人形骨架创建关节。 这些提供的方法可以让你:从现成的两足动物骨架,缩放以适应您的网格;也可以使用独立的骨骼创建工具,以创建您自己的骨骼结构。 要与Mecanim协调工作,臀部应该是骨骼层级的根元素,另外,整个骨架中至少需要15个骨骼。

关节/骨骼层次应该遵循您所创建的角色的自然结构。 鉴于手臂和双腿成对,您应该使用一致的约定来命名它们(例如,左臂的“arm_L”,右臂的“arm_R”等)。 层次结构的可能结构可能是:
HIPS - spine - chest - shoulders - arm - forearm - hand
HIPS - spine - chest - neck - head
HIPS - UpLeg - Leg - foot - toe - toe_end
                                           Biped Skeleton, positioned in T-pose

蒙皮

这是将模型网格连接到骨架的过程。

蒙皮是为了将网格中的顶点绑定到骨骼,这个过程可以采用直接绑定(硬绑定),或者采用影响到多个骨骼的混合绑定(软绑定)。不同的软件会使用不同的方法。例如,在计算每个骨骼对的网格顶点的影响权重的过程的时候,此数据计算的初始化过程是自动的,不过有软件的会通过查找临近区域来计算影响权重,有的则会使用”热度图”(heatmaps)的方法来产生。蒙皮过程通常需要在动画测试上做大量的工作,以获得满意的皮肤变形结果。在这个过程中,存在一些一般准则:
  • 首先使用自动化过程设置一些皮肤(请参阅3DMax,Maya等相关教程)。
  • 为您的骨架创建一个简单的动画或导入一些动画用作蒙皮的测试。这样你可以快速查看皮肤在运动过程中是否是否完好。
  • 逐步编辑来改善你的蒙皮方案。
  • 使用软绑定时,每个顶点最多可能会受到四根骨骼的影响,因为这是Unity将处理的最大数量。如果使用超过四个影响值,那么在Unity中播放动画时,有一些信息将会丢失。
交互式皮肤绑定,许多蒙皮方法之一
来自:https://blog.csdn.net/AndrewFan/article/details/78070464

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引