原作者:只待苍霞

这一章讲一下布料系统, 这次的布料系统有很大的改良.
Unity4中, 需要对SkinnedMeshRenderer使用SkinnedCloth, 或者对Cloth Renderer使用Interactive Cloth, 很麻烦, 在Unity5中, Cloth合二为一了.
Cloth只能必须和Skinned Mesh Renderer搭配使用, 但是这不代表使用简单的物体时还必须在Max中导出一个带有蒙皮信息的FBX, 其实可以新建一个GameObject然后赋予Cloth组件, 这会自动添加Skinned Mesh Renderer组件, 然后在Skinned Mesh Renderer组件中赋予基本体的Mesh上去并且设置正确的材质也完全可以.

布料可以接受外部影响,但完全不会将影响赋予外部刚体, 换句话说, 布料系统的物理模拟是单向的.

出于性能的考虑, 可以对Cloth产生影响的Collider只有两种, SphereCollider以及CapsuleCollider, 但是SphereCollider可以赋予两个为一组(当然了还可以只赋予一个, 第二个保持null), 那么通过组合这两个SphereCollider可以出现第三种, Unity会将这组的两个SphereCollider进行相连, 那么就可以有圆锥形的Collider.

按这个
按钮来打开编辑Constraint模式,
Max Distance可以设置每个顶点最大可移动距离. 最常用的用法是将不能动的顶点的Max Distance设置为0.
Surface Penetration控制的是顶点最大可以嵌入到Mesh里面的程度. 在布料网格顶点比较稀疏的情况下可以明显对比出差别. 具体是什么概念我不太清楚. 不过将顶点的Surface Penetration设置得很低会看起来很不正常, 默认, 也就是Unconstrained应该是一个较高的值, 没有任何问题. 不知道在什么情况下需要将这个值设置得低一些呢? 哪位大神知道的话欢迎在本楼补充.


Visualization这里能够选择当前在Scene视图中预览Max Distance还是Surface Penetration. (这两者二选一), 还能选择是否让操作影响视口背面的顶点.

Select编辑模式要先通过框选, 或者Shift+点击来多选, 来选中顶点, 然后勾选Max Distance或者Surface Penetration前面的复选框, 代表我现在要改变选中的顶点的值了! 然后再在后面的数值里面输入想要的数值就OK了, 要想将当前有数值的顶点设置为Unconstrained, 只需要选中那些带有数值的顶点然后将对应复选框取消勾选即可.

在Paint模式中, 这个按钮
代表要绘制这里设置的值了!
而这个复选框代表的意思是是否想为现在已经有值的顶点Paint成为Unconstrained的顶点.

Stretching Stiffness---拉扯硬度.
Bending Stiffness---弯曲硬度.
Use Tethers---默认开启, 用于方式过度拉伸
Use Gravity---是否使用世界重力.
Damping---阻尼会应用于每个布料顶点. 要想打造看上去抖动更小的布料, 可以试试这个.
External Acceleration---常量外力.
Random Acceleration---随机外力.
World Velocity Scale---与World Acceleration Scale共同组成布料的GameObject.transfrom的运动会对物理模拟造成的影响比例.
World Acceleration Scale---与World Velocity Scale共同组成布料的GameObject.transfrom的运动会对物理模拟造成的影响比例.
Friction---当布料碰到在
这个列表中存在的Collider时所产生的摩擦力, 这只会影响布料的模拟. 上面说过了布料的物理模拟是单向的.
Collision Mass Scale---How much to increase mass of colliding particles. 这个参数我不懂, 求补充.
Use Continuous Collision---使用Continuous Collision, 增加消耗, 减少直接穿透碰撞的几率.
Use Virtual Particles---Add one virtual particle per triangle to improve collision stability.
Solver Frequency---Number of solver iterations per second. 显然是一个优化参数, 默认120很高了, 我可以试着调低一些.
Sleep Threshold---静止阈值.
Capsule Colliders---要对布料产生交互的胶囊碰撞体.
Sphere Colliders---要对布料产生交互的ClothSphereColliderPairs. 可以理解为他是按照一组来的, 一组中可以只有一个SphereCollider, 也可以有两个, 当有两个的时候, 那么这两个SphereCollider会在布料的碰撞系统中被”焊接”起来. 这样就允许通过两个大小不同的SphereCollider来组合成一个圆锥形状的碰撞体了.

这一章讲一下动画系统的更新.

首先要说一下StateMachineBehaviour.

可以为Animator的每个State都赋予一个或多个Behavior.

使用这里的New Script按钮来创建StateMachineBehaviour是最方便的, 这样创建出来的脚本不仅自动继承自StateMachineBehaviour类, 还会自动添加经过注释的Message.

需要注意的是, 不要在Awake中使用Animator.GetBehaviour.

StateMachineBehaviour可用的内容有:

上面这些是用于State的.

上面这两个是用于SubStateMachine的.

对于StateMachineBehaviour,可以使用一个SharedBetweenAnimatorsAttribute属性, 有了他, 在多个相同的Animator之上, 仅会生成一个实例. 既然是一个实例, 那么变量当然也是共享的.


IK现在支持膝盖和手肘的控制. 可以混合在正常动画中, 还可以混合在手脚的IK动画中. 我不清楚这到底是不是5.0的新功能, 反正我以前通读Unity4的文档的时候是没有这个功能的, 那时应该是4.1, 不管了, 先写在这里吧, 知识这东西不嫌多.

Animator窗口的布局有一定的改动不过不是什么重要的内容各位自行研究一下就懂了. 但是这次的Animator有一个很好的改动, 那就是加入了Entry以及Exit. 
The Entry node is used when transitioning into a state machine.
The Exit node is used to indicate that a state machine should exit.
有了Entry和Exit, 对于SubStateMachine的处理可以更加灵活, 可以通过Entry和Exit将SubStateMachine完全理解为一个单独的State. 或者像Unity5之前那样将SubStateMachine内部的State与外部的东西连接. 
现在可以将State多选然后拖拽到SubStateMachine中, Unity会自动帮你整理他们的Transition关系, 还可以在SubStateMachine中多选State然后拖拽到Up节点, 同样, Unity会自动整理Transition, Unity4在这方面极其尴尬, 用过的都知道. Unity5终于进步了.

橙色的Transition代表是的默认的过渡, 当第一次触发, 或者当前没有其他过渡可用时会使用这个Transition, 灰色的Transition代表的是过渡之前可以是任何State. 因此灰色的Transition只能设置condition, 不能设置过渡的细节, 因为没有任何意义.
SubStateMachine中的Exit和(UP)的区别在于Exit创建的是灰色Transition, 而(UP)创建的是白色的正常Transition.


关于Animator, 多了一种BlendTree的方式, 非常适用于面部动画.
这个模式可以将多个动画混合起来一起播放. 用参数来指定混合比例.

一般情况, Animation的运动是绝对位置的, 要想将绝对位置改变为根动画, 也就是相对位置, 可以使用这个”Generate Root Motion Curves”, 并且将Animator的Apply Root Motion开启.

unity5.0新功能-布料、动画系统的更多相关文章

  1. unity5.0新功能

    原作者 只待苍霞 章节1: 先来两个最关心的新功能, 第一章先讲PBS, 第二章讲光影GI.说到PBS, 首先应该想到的是Unity自带的两个新的Shader, 分别是Standard以及Standa ...

  2. VS2015预览版中的C#6.0 新功能(二)

    VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...

  3. VS2015预览版中的C#6.0 新功能(三)

    VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(二) Using static 使用using StaticClass,你可以访问StaticClass类里的 ...

  4. VS2015预览版中的C#6.0 新功能(一)

    VS2015预览版中的C#6.0 新功能(二) VS2015预览版中的C#6.0 新功能(三) VS2015的预览版在11月12日发布了,下面让我们来看看C#都提供了哪些新的功能. 字符串添写(Str ...

  5. REDGATE SQLPROMPT 6.0新功能

    原文:REDGATE SQLPROMPT 6.0新功能 REDGATE SQLPROMPT 6.0新功能 下载地址:http://files.cnblogs.com/lyhabc/SQLPrompt6 ...

  6. Unity User Group 北京站:《Unity5.6新功能介绍以及HoloLens开发》

    ​时间一转眼从春天来到了初夏,Unity User Group(以下简称UUG)活动也迎来了第七期.我们面向Unity3D开发从业者以及未来想从事Unity3D开发的学生群体的UUG活动这次仍然在海淀 ...

  7. (六)Unity5.0新特性------新动画功能

     unity 5.0 中的新动画功能 这里是你能够期待的新动画功能高速概述 ! State Machine Behaviours状态机行为 在Unity 5 中,你会能够将StateMachine ...

  8. Redis 4.0新功能介绍

    Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...

  9. ASP.NET Core 2.0 新功能汇总

    前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...

随机推荐

  1. asp.net解决高并发的方案.[转]

    最近几天一直在读代震军的博客,他是Discuz!NT的设计者,读了他的一系列关于Discuz!NT的架构设计文章,大呼过瘾,特别是Discuz!NT在解决高访问高并发时所设计的一系列方案,本人尤其感兴 ...

  2. 关于<meta http-equiv="X-UA-Compatible" content="IE=edge" />问题

    我在做网页过程中都是在火狐浏览器下进行的,可是有一次我在IE浏览器下打开时却发现我设置的style.css中的大部分样式都失效率了,这个问题足足困扰了我两天,终于在百度的帮助下找到了答案,原来在网页的 ...

  3. ajaxReturn

    controller:$info=array('error'=>0,'msg'=>'');if($user_info){    if($user_info['is_lock']){     ...

  4. Unity关于脚本前面的勾选框

    今天做项目时需要在某个事件条件下禁用某个脚本,但是突然发现这个脚本前面没有勾选框,,,就像这样 网上搜了下,原来是需要在脚本中加上void Start()方法,即使这个方法里什么都没有 void St ...

  5. stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)

    I. 最小编辑距离的定义 最小编辑距离旨在定义两个字符串之间的相似度(word similarity).定义相似度可以用于拼写纠错,计算生物学上的序列比对,机器翻译,信息提取,语音识别等. 编辑距离就 ...

  6. HttpWebRequest-header设置

    http://www.cnblogs.com/yczz/archive/2012/06/01/2530484.html http://blog.csdn.net/htsnoopy/article/de ...

  7. ORA-15025: could not open disk "/dev/asm***"--转载

    Symptoms: 打完补丁后,数据库报错ORA-15025,数据库无法启动. alert日志信息: Wed Jul22 16:26:57 2015 ORA-15025:could not open ...

  8. springmvc 接受特殊类型字段的处理方法

    springmvc接受前台传入的数据时如果该字段类型无法被封装(如Date),则会出现400 Bad Request错误,解决方法如下. 1.在需要处理的字段前加上注解: @DateTimeForma ...

  9. js访问xml

    从w3school中获取代码 <html> <head> <script type="text/javascript"> var xmlhttp ...

  10. java中的运算符

    1.      赋值运算符:  (=) 2.      算术运算符:  (+ ,- , * , /, %) 3.      逻辑运算符:  (&& ,||, !) 4.      关系 ...