unity5.0新功能-布料、动画系统
原作者:只待苍霞
这一章讲一下布料系统, 这次的布料系统有很大的改良.
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新功能-布料、动画系统的更多相关文章
- unity5.0新功能
原作者 只待苍霞 章节1: 先来两个最关心的新功能, 第一章先讲PBS, 第二章讲光影GI.说到PBS, 首先应该想到的是Unity自带的两个新的Shader, 分别是Standard以及Standa ...
- VS2015预览版中的C#6.0 新功能(二)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...
- VS2015预览版中的C#6.0 新功能(三)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(二) Using static 使用using StaticClass,你可以访问StaticClass类里的 ...
- VS2015预览版中的C#6.0 新功能(一)
VS2015预览版中的C#6.0 新功能(二) VS2015预览版中的C#6.0 新功能(三) VS2015的预览版在11月12日发布了,下面让我们来看看C#都提供了哪些新的功能. 字符串添写(Str ...
- REDGATE SQLPROMPT 6.0新功能
原文:REDGATE SQLPROMPT 6.0新功能 REDGATE SQLPROMPT 6.0新功能 下载地址:http://files.cnblogs.com/lyhabc/SQLPrompt6 ...
- Unity User Group 北京站:《Unity5.6新功能介绍以及HoloLens开发》
时间一转眼从春天来到了初夏,Unity User Group(以下简称UUG)活动也迎来了第七期.我们面向Unity3D开发从业者以及未来想从事Unity3D开发的学生群体的UUG活动这次仍然在海淀 ...
- (六)Unity5.0新特性------新动画功能
unity 5.0 中的新动画功能 这里是你能够期待的新动画功能高速概述 ! State Machine Behaviours状态机行为 在Unity 5 中,你会能够将StateMachine ...
- Redis 4.0新功能介绍
Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...
- ASP.NET Core 2.0 新功能汇总
前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...
随机推荐
- Android学习笔记(十二)
Fragment是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间. 碎片的简单用法:新建一个FragmentTest项目,然后新建一个左侧碎片布局left_fragmen ...
- [Mongodb] Tarball二进制包安装过程
一.缘由: 用在线安装的方式安装mongodb,诚然很方便.但文件过于分散,如果在单机多实例的情况下,就不方便管理. 对于数据库的管理,我习惯将所有数据(配置)文件放在一个地方,方便查找区分. 二.解 ...
- SearchBar 修改 cancel button 文字 及颜色
#pragma mark - - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar{ _searchController.searchB ...
- source 源码下载
http://blog.csdn.net/zlgydx/article/details/50781258 经常需要查看某些第三方的源码,一直在用的一个网站,功能比较简介.好用. http://grep ...
- 【OpenCV】视频取坐标
今天实现了视频播放以后暂停获取鼠标点击处坐标的功能. #include <iostream> #include <opencv2/highgui/highgui.hpp> #i ...
- NOIP201307货车运输
2016.1.28 试题描述 A 国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有q辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多 ...
- java 静态方法和实例方法的区别(转)
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...
- java.lang.classnotfoundexception org.json.jsonexception
java.lang.classnotfoundexception org.json.jsonexception 解决方法 http://www.java2s.com/Code/Jar/j/Downlo ...
- Linux 用户和用户组管理
Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...
- log4j输出模板
log4j.rootLogger=DEBUG, A1,A2 log4j.appender.A1.MaxFileSize=1kb#10个备份 log4j.appender.A1.MaxBackupInd ...