Unity里的TimeLine和动画控制器有什么区别?
Unity里的TimeLine和动画控制器有什么区别? 在游戏行业也已经快十年了,经历了好几款大型游戏的制作了,包括Unity,Unreal,题主看来也是有较多Unity开发经验的同学,因此来分享一下经验,权当交流学习,希望能给你点帮助。Unity中的TimeLine可以理解为一个导演演播室,可以放动画,音频,甚至视频,特效等等,可以放任意带有Transform对象的物体,像相机,任意物体,这个时间轴是泛物体,可以有关键帧,可以触发事件,可以调整动画曲线,实现变加速,变减速,需要注意的是,这个控制功能是泛物体的,控制层面是具体到Transform级别的“节点”,节点可以嵌套,但是主要还是线性的简单的变换。
表面上看上去功能重叠了,采用animator控制的都可以用Timeline进行控制,但是Animator存在核心差异的,这个差异就是分层状态机,典型的应用是像FPS中,上半身持枪瞄准,下半身小步快跑,这种需要多个动画,多层融合,多个状态机嵌套配合的复杂动画表现,则必须使用到Animator,因为这种存在多状态,多层融合,涉及到前后依赖,甚至中间Pose是由某几个状态动态组合生成的,这种才是两者之间的核心差异。
总结一下,Time line可以和Animator在大多数普通场景混用,因为本质上只涉及到Transform,对象属性,事件触发等简单线性逻辑,甚至于可以混用。但是对于专业复杂度非常高的骨骼蒙皮动画,由于涉及到多状态嵌套,融合,中间Pose缓存,前后输入输出存在依赖,因此只能用Animator,才能实现对应的功能。 首先我需要确认两件事情:
[*]你说的“动画控制器”应该指的是Animator组件,而不是Animation组件,对吧?
[*]你疑惑的点应该是Timeline在控制游戏对象的动画方面和Animator组件有啥区别,而不是需要人给你科普Timeline是干什么的以及怎么使用,对吧?
如果这两件事情都是前者,那就继续看,否则就不用继续看了。
<hr/>我认为,你可以把Timeline(准确地说,是Timeline的动画轨道)看做一种特殊的Animator Controller资产。
我们知道,Animator组件的工作原理,就是通过调用预先设置在Animator Controller资产中的动画数据(Animation Clips)来动画场景中的游戏对象的组件。也就是说,你需要先把动画混合规则在Animator Controller中设置好,然后在添加有Animator组件的游戏对象上调用这个Animator Controller资产,然后用动画数据驱动游戏对象。
Timeline的动画轨道其实做的是一样的事情。一个动画轨道中必须且只能指定一个带Animator组件的游戏对象,而且这个游戏对象的Animator组件中最好不要指定Animator Controller。我们在动画轨道上添加动画片段,然后动画轨道就会告诉动画对象的Animator组件,你在什么时间点应该调用哪一个动画片段上的那一帧数据。
和Animator Controller资产一样,Timeline资产其实也不知道它将要作用于什么游戏对象,都只是在设置动画混合规则。区别在于,Animator Controller是按状态机的方式来设置规则,而Timeline是按照线性方式来设置规则。
Animator Controller资产被哪个游戏对象的Animator组件调用了,它的规则就会被应用给哪个游戏对象。
Timeline资产稍微复杂一些。它首先在场景中要被PlayableDirector组件调用,由PlayableDirector组件告诉它,各个动画轨道究竟对应的是场景中的哪个Animator组件,然后这些动画轨道上的规则才会被应用给其所对应的游戏对象。 tineline 是多对象状态机,animator 是单对象状态机
tineline 让某个对象播放特定动画
animator 当前对象的某根骨骼怎么运动 题主说的可能是Animation组件,这个组件非常古老了,建议使用Animator(动画状态机)代替。
Animation只能用于让角色播放动画,而Animator(动画状态机)可以设计角色在什么情况下跳转到什么动画状态,比如走、跑、跳、下蹲等等。
Animator可以大材小用,只用来播放一段动画,也能完全替代Animation组件。
而以上两者主要用于实现单个角色的动画。
Timeline是一个相对新的模块,专门用于制作一段场景动画,涉及到多个物体运动、以及摄像机运动的那种。
Timeline和Cinemachine(虚拟摄像机工具)是绝配。Timeline的设计借用了一些电影的概念,轨道、镜头切换等等,是制作实时渲染动画的利器。
[*]TimeLine类似于拍电影时的导演,导演指挥场景中多个分镜头的拍摄,以及每个演员的动作
[*]而普通的动画系统只能用来控制一个摄像机或者控制一个演员,无法进行统一的协调
[*]而且导演在拍戏时是有脚本的,脚本控制在什么时间出现什么事件,这也是与普通的动画系统有很大区别的地方
[*]也就是说Unity的TimeLine系统是类似于导演的系统,而传统的动画控制器只能用来控制每一个单独的游戏对象上的动作动画
详细内容可以参考我们的《皇室战争S1:打开新世界的大门》公开课
页:
[1]