Unity现在包含三种模型动画方式:
三者都依赖于 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使用。