动画系统:
支持:动画融合,混合,叠加动画,行走循环的时间同步,动画层,控制动画的各个方面(时间,速度,融合权重)
 
带有每顶点1、2或4骨骼的蒙皮网格,以及支持基于物理的布娃娃系统和程序动画。
 
简要介绍如下:  
 
 动画融合 Animation Blending    你不希望两个不同的动作之间突然跳转,想要动画平滑过渡  
        在Unity同一个角色可以拥有任意数量的动画,所有动画被融合或添加在一起,来产生最终动画。
 
         Animation Layers   动画层   
         Animation.CrossFade() 淡入淡出
         在Unity动画系统,可以在许多动画剪辑之间做期望的融合,
         可以指定手工融合权重或简单实用animation.CrossFade(),来自动动画处理权重。
         对权重的解释:
         比方说有一个行走循环和跑步循环,两者的权重都是1(100%)。当Unity生成最终动画会规格化权重,这意味着行走将占50%,跑步占50%权重。
 
 Animation Mixing 动画混合                                           附加动画  和   动画混合 的区别尚不清楚
        例如,有个一个挥手动画,想要在空闲角色或正行走的角色播放挥手动画。没有动画混合,您必须创建两个手挥舞着动画:一个用于空闲,一个用于行走。不过,如果你添加肩膀变换作为混合变换,来做挥手动画,那么挥手动画将从肩膀位置外受完全控制,身体的其余部分将不会受到它的影响,将继续播放空闲或行走动画。因此,只需要一个挥手动画。
 
 Additive Animation 叠加动画(也可以认为是附加动画)          代码部分原理尚未清楚:
  叠加动画和动画混合可以让你缩减为游戏制作的动画片断的数量,并且对面部动画(facial animations)来说非常重要.
叠加动画:就是让你在任意其他动画上面附加上动画效果。或者这样认为主运动不变,在其上面添加一些附加运动。
附加动画详解:
叠加型动画通过将两个动画彼此相减进行计算,并将其存储为两个动画的差值。实际上叠加型动画本身并没有什么用途,因为它需要添加到另一个动画上才能正常工作。使用叠加型动画实际目的是想找到可以应用到多个动画上的叠加姿势。这可以降低每个状态需要的动画数量。比如一个武器弹药装载动画可以制作成为叠加动画。现在可以把它添加到空闲动画、走步的动画集(前、后、左和右)上面,同样也可以添加到跑步的动画集上。所以不必制作向前走动过程中加载弹药的动画或者其他任何组合动画,只需要创建一个装载弹药的叠加动画,然后将其添加到向前走动、向后跑动等动画的上面即可。
但是使用时应该注意失真的影响。
 
Procedural Animation 程序动画
有时,想要程序动画角色骨骼。这样的话可以给指定骨骼写脚本,来控制骨骼的运动轨迹。
一件很重要的事情要知道的是动画系统更新变换是在Update()函数之后并LateUpdate()函数被调用之前。因此想要调用LookAt()函数,应该在LateUpdate()中以确保已经真的重写动画。
     布娃娃系统Ragdolls 也是用同样的方法制作出来的. 你可以简单的把刚性物体(Rigidbodies), 角色关节(Character Joints) 和 胶囊碰撞体(Capsule Colliders)连接给不同的骨骼. 这样物理系统就可以作用于蒙皮角色(skinned character). (什么是布娃娃系统,当你在射击类游戏中打死对手时可以注意到当角色快接近地面时,他的四肢开始瘫软在地面上,这个不是动画师调出来的,而是布娃娃系统自动计算出来的。)
布娃娃系统的利弊:
由于计算机的各种技术限制,游戏开发者不能够使用完全仿真的布娃娃设计,而采用一种相对简单的模式。
  • 一些末端骨骼如手指能做出种类繁多的动作。
  • 利用骨骼联合点代替真实的骨骼肌来约束骨骼的移动,能取得较好的表现效果。
  • 通过布娃娃的碰撞检测可以让角色在游戏中的表现更为真实。不同的先前的将整个角色模型用来进行碰撞检测。

布娃娃系统最大的优势还是在于取代传统的角色动作系统。

Animation Playback and Sampling 动画播放和取样
  动画剪辑通常以一个固定的帧速制作。例如,可以砸Maya中以每秒60帧(fps)的帧速率创建动画,当导入动画到Unity时,这个帧速率将由导入器读取,根据前面的情况,可以得知,导入的动画数据被取样也是60fps。
 提示:所以这个动画播放的取样速率是由3D制作软件(如Maya)来决定的。但是播放速率是由实际设备决定的。
 
然而,游戏运行通常运行在一个变化帧速率,有的电脑帧速快,有的电脑帧速慢,
即使是同一台电脑,前一秒和后一秒因为视角的不同帧速也会不一样。基本上当游戏开始运行时我们无法确定一个精确的帧速率。这意味着即使动画剪辑制作时是60fps,那它播放时也许是另外一个速率,例如56.72 fps 或 83.14 fps,它可能是任何一个。
读取动画播放的最后一帧
采用WrapMode.ClampForever模式    这样的话,动画将保持无限取样最后一帧,直到你停止动画。
 同样需要注意的是变化的帧速采样结果, 一个使用WrapMode.Once 模式重放的动画的采样不一定是精确的最后一帧( last frame).在游戏中很有可能是刚好结束前的某一帧, 在下一帧时间可能超过动画的长度, so it is disabled 和 not sampled further. 如果你需要动画的最后一帧采样精确,你可以使用WrapMode.ClampForever. 如果是那样的话动画将不停的对最后一帧进行采样直到你自己停止动画. 
 
使用动画事件 using Animation Events
       动画剪辑中可以添加动画事件,使你在时间轴特定的帧调用脚本中的函数。这里需要关注的就是在某一个时间点调用某一个函数。比如播放到动画事件显示在事件行上。通过双击事件行,或使用"事件"按钮,添加一个新的动画事件。
        对绝大多数应用场合,  Unity对变化帧速的采样我们无需对其进行干预. 可是, 如果你的某个游戏逻辑所依赖的动画变化或道具(transforms or properties)结构十分特殊, 那你必须知道这一点.  举例说, 如果你有一个动画是把一个物体30帧内从 0旋转到180度, 你想从代码中得知什么时候动画完成一半, 你不能写一段条件语言来检查现在旋转值是不是90度. 因为 Unity 依照游戏的变化速率来对动画采样, 它可能在旋转快到90度时进行采样, 或者是刚好过90度的时候采样. 如果你需要通报动画中一个特殊点到达时,你可以使用 AnimationEvent 来替代.
 
动画剪辑 Animation Clip      动画剪辑存储着所有可使用于角色动画或简单动画的动画数据。这些动画剪辑数据只有一个属性而且不能修改:采样率。(这是创建剪辑的采样率)
 
 

Unity Animation System(动画系统)的更多相关文章

  1. unity 对Animator动画系统的研究

    unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看 ...

  2. 关于Unity中新版动画系统的使用

    Mecanim动画 1:旧版动画系统只能通过代码来控制动画播放,随着动画种类变多,代码复杂度也会增加,同时动画过渡也需要非常繁琐的代码控制,为了让有经验的动画师开发动画,unity推出了针对人物角色的 ...

  3. Unity笔记 英保通 Unity新的动画系统Mecanim

    Mecanim动画系统是Unity独一无二.强大灵活的人物动画系统.该系统赋予您的人类和非人类人物令人难以置信的自然流畅的动作,使它们栩栩如生.游戏中角色设计提高到了新的层次,在处理人类动画角色中可以 ...

  4. Unity3D之Legacy动画系统学习笔记

    Unity3D的Mecanim动画系统是非常强大的,而且作为Unity推荐的动画系统,其未来会完全代替老的一套动画系统,即Legacy动画系统.目前的情况是Mecanim与Legacy两套动画系统同时 ...

  5. 关于Unity中旧版动画系统的使用

    Unity在5.X以后,有一个旧版的动画系统和新版的动画系统. 新版的动画系统是使用Unity动画编辑器来调的,调动画和控制动画 旧版的动画系统是用其他的第三方软件调好后导出到一个FBX文件里面,就是 ...

  6. Unity 动画系统

    Legacy动画系统:Animation组件(旧) Mecanim动画系统:Animator组件(新) 动画播放过程: //动画片段 [System.Serializable] public clas ...

  7. Unity 4.0 中的新动画系统——MecAnim

    分享一个文档资料,关于动画系统的,版本应该很老了,但是有借鉴意义的: Unity 4.0 已于 2012 年 11 月 15 日正式发布,Unity 每一次版本的提升,都给游戏开发者带来惊喜,这一次也 ...

  8. 【Unity】第10章 Mecanim动画系统

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种动画系统:一种是早期版本提供的旧版(Legacy)动画系统,旧版本(Legacy)以后将逐步被淘汰掉 ...

  9. unity, Animation crossfade需要两动画在时间上确实有交叠

    unity现在播动画都用Animator了,但公司的老项用的还是Animation,今天遇到一个bug,是两个动画的衔接处不连贯. 最后发现是由于A动画已经播完之后B动画才开始播,而且还用了cross ...

随机推荐

  1. webView和js交互

    与 js 交互 OC 调用 JS // 执行 js - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *title = [web ...

  2. 再谈如何使用Taglist?

    以前使用个taglist, 但是只是查看, 没有熟练的去使用, 补充一下: 参考文章: http://blog.csdn.net/vaqeteart/article/details/4146618 用 ...

  3. Web压力测试系统-nGrinder

    nGrinder是一个免费的.开放源代码的Web性能测试工具.它本身是JAVA WEB应用程序,在Tomcat服务器中运行. 它由一个controller端和一个或多个Agent端组成.nGrinde ...

  4. System.Web.HttpRequestValidationException: A potentially dangerous Request.F

    ASP.NET .0验证请求 System.Web.HttpRequestValidationException: A potentially dangerous Request.F System.W ...

  5. GET和POST有什么区别?及为什么网上的多数答案都是错的

    如果有人问你,GET和POST,有什么区别?你会如何回答? 最普遍的答案 回来之后寻思了很久,他到底是想问我什么?我一直就觉得GET和POST没有什么除了语义之外的区别,自打我开始学习Web编程开始就 ...

  6. 对于C语言复杂指针类型的分析

    转载自:http://www.slyar.com/blog/complicated-point-type.html int p; p是一个普通的整型变量. int *p; 1.p与*结合,说明p是一个 ...

  7. VSTO开发之一

    VSTO是微软推出一种对Office产品进行操作的技术,其中提供了一些类库来让开发人员可以更方便地开发出Office的解决方案,即对Word/Excel/Outlook实现一些扩展功能. 新建-> ...

  8. Thinkphp 第二篇:如何将一个外部项目导入到Thimkphp环境中

    一:到这篇博文的开头,假设我们的Xmapp环境已经搭建好了,并且成功的安装了Thinkphp的环境了. 1:Xmapp安装成功截图: 2:Thinkphp安装成功截图: 二:Thinkphp中各个文件 ...

  9. git用法之常用命令

    1.git 安装好后,如何配置? a: 设置本地用户名.邮箱,很重要!之后的每次提交都会用到这两条信息,说明是谁提交了更新. $ git config --global user.name " ...

  10. robotframework,selenium启动不了打不开浏览器的问题访问不了网页

    由于最近发现咨询火狐浏览器打不开的问题比较多,现罗列几点解决办法. 1,由于selenium更新3.0的原因导致不在默认支持火狐浏览器,且支持的火狐浏览器大概在45以上的版本,所以很多都由于这个原因导 ...