目前为止Unity包含的动画系统 (简单随笔,没时间总结) 2019.1.24

版权声明:本文为博主原创文章,未经博主允许不得转载。出自 游戏开发实验室 https://blog.csdn.net/u010019717/article/details/86633601

Unity现在包含三种模型动画方式:

  • Animation(Legacy 没有被删除的迹象)
  • Mecanim (Animator, Avatar, AnimationController) 
  • Timeline (PlayableDirector, PlayableAsset)

三者都依赖于 AnimationClip 资源, 记录着随时间变化的数据,数据(position,rotation,color, UV,  sprite, material)曲线的集合?  

      1、Animation(Legacy)

依赖于 Animation 组件。  完全依赖骨骼的名字。名字找不到问题很大

      2、Mecanim

依赖于 Animator组件, 需要AnimationController资源 和 Avatar。 使用这三个,Mecanim实现了各种各样的事情。 包含状态机,子状态机,混合树,重定向功能,Apply Root motion 功能, 利用分层实现上下半身动作分离...。      Avatar的重定向,只要符合人形结构,就可以正常移动。       Apply Root motion功能,可以避免脚滑动, 

          问题, 如果角色非常多,会复制和粘贴创建大量的Animator Controller , 因为可能状态机有点区别,就要这样调整。  如果只是动画由区别,  可以使用 Animator Override Controller

       3、Simple Animation

 继承了 Animation 的高自由度,  依赖于 Animator组件。 使用了Playable API。这是在2017年 Unity 5.5左右添加的, GitHub上开源。 

他是一种创建树形结构并决定播放哪个动画功能。 

推荐阅读 : https://docs.unity3d.com/2018.3/Documentation/Manual/Playables-Examples.html   

        Playable API的工作原理,  由PlayableGraph ,  Output,  Playable  组成。    其中 Output连接到 Animator。 

         4、 现在还有一个叫做    Animation  Instancing 的方法。  这是一个Shader , 一种用顶点动画实现动画的方法。 

         5、 Timeline   , 时间轴,   

              Playable Director 类内是有 PlayableGraph 的 。     现在每个Animator组件内部也有 一个 PlayableGraph !


             timeline  共用一个PlayableGraph .   也就是 PlayableDirector 类中的成员。  
            timeline 会判断, 如果Graph上  如果轨道不为空,就会为轨道创建 PlayableOutput . 
            Animation , Audio 的输出是专有的类, 作用是分别输出到Animator, AudioSource . 

           Animator 是包含 PlayableGraph 成员, 但是看代码会发现,首先进行new 一个 ~~    AudioSource 中是没有的!!! 

6、现在,  Unity拥有GPU Skinning功能。这是使用GPU进行蒙皮的技术。

7、 将来 :   Animation  C# Job (需要现在的 Playable),   Animation Stream  ,             Kinematica (机器学习动画系统)它不是基于AnimationClip,它是一个基于姿势的动画系统。Kinematica还可以作为Animation C#Jobs的Playable API使用。

猜你喜欢

转载自blog.csdn.net/u010019717/article/details/86633601