原作者:只待苍霞

这一章讲一下布料系统, 这次的布料系统有很大的改良.
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. AJAX怎么用POST 传参数

    //注册回调函数.注意注册回调函数是不能加括号,加了会把函数的值返回给onreadystatechange xmlhttp.onreadystatechange = callback; //设置连接信 ...

  2. 树莓派开启root用户

    树莓派系统使用的linux是debian系统,所以树莓派启用root和debian是相同的. debian里root账户默认没有密码,但账户锁定. 当需要root权限时,由默认账户经由sudo执行,R ...

  3. Oracle行转列操作

    有时候我们在展示表中数据的时候,需要将行转为列来显示,如以下形式: 原表结构展示如下:---------------------------产品名称    销售额     季度------------ ...

  4. Angular进度-1207

    https://www.angular.cn/docs/ts/latest/tutorial/toh-pt1.html

  5. List接口

    1.List接口实现的方式有两种ArrayList 和 LinkedList ArrayList实现了可变的数组,允许保存所有元素包括null,缺点是删除的比较慢 LinkedList删除对象比较快, ...

  6. java中abstract详解

    Abstract(抽象)可以修饰类.方法 如果将一个类设置为abstract,则此类必须被继承使用.此类不可生成对象,必须被继承使用. Abstract可以将子类的共性最大限度的抽取出来,放在父类中, ...

  7. C#设计模式——解释器模式(Interpreter Pattern)

    一.概述 在软件开发特别是DSL开发中常常需要使用一些相对较复杂的业务语言,如果业务语言使用频率足够高,且使用普通的编程模式来实现会导致非常复杂的变化,那么就可以考虑使用解释器模式构建一个解释器对复杂 ...

  8. javascrip小笔记

    function getCookie(name) {//获取name为 var arr, reg = new RegExp("(^| )" + name + "=([^; ...

  9. Python3.x和Python2.x的区别

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...

  10. css3动画3

    1.transition过渡动画 2.@keyframes关键帧动画,配合transform.animation使用