这个插件呢,是使用Unity Job系统+ Burst编译器操作的高速布料模拟,可以用于骨骼模拟,以及顶点模拟,最关键的是,性能以及效果都很好的(●'◡'●)。
这个插件需要安装Unity2018.4.0(LTS)或更高的版本 如果直接在空的项目中导入这个插件,会报错的,为什么呢?因为需要安装两个组件才能够运行
从菜单中启动[Window]-> [Package Manager],选择 Burst 和 Jobs ,由于Jobs仍然是preview,因此我们需要从“advanced”菜单中选择“Show preview packages”以查看(如果要使用Unity 2018,请另外安装[Collections] [Mathematics]软件包,它会在Unity 2019之后自动安装)
好啦,我们进入正题,先了解一下这个系统的组件,这个插件功能挺多也挺复杂的,一次可能写不完,所以这次呢,我就先写一下这个插件的动态骨骼的部分( ^_^ )

组件介绍:

— MagicaPhysicsManager —
MagicaCloth这个插件的物理是用自己的物理引擎控制,是与Unity的物理引擎完全分开。因此,它完全不会干扰Unity的物理系统,所以每个场景需要一个MagicaPhysicsManager组件,MagicaCloth才能工作,PhysicsManager管理整个系统和物理的计算时间。
— MagicaBoneCloth —
骨骼模拟组件,通过控制骨骼来模拟一些不可拉伸的物体,这样的物理模型更加适用于模拟头发呀、绳子啊等这些不容易拉伸但容易形变的物体,运用在衣物上时,则需要看衣物材质是否容易拉伸,如果容易拉伸依然不适合用~~
在Root List中,可以分别设置模拟数量和需要模拟的根骨骼 要进入编辑模式,请单击布料组件的Start Point Selection(当你进入编辑模式之后,检视一下Unity的Scene的面板,必须确保Gizmo模式开启,不然将无法编辑骨骼点)
绿色的Move point就是代表参与运算的骨骼点;红色的Fixed Point代表锚点,比如窗帘布,最上面的那一排挂点就是代表这红色的点;灰色的Invalid Point代表的是无效点,比如一个单肩包包,包袋就是绿色的点,而包身就是灰色的无效点,不知道好理解没?哈哈~ 然后“Z Test On & Select Near Point Only”这个选线开启时,则表示指显示前面的点,后面摄像机看不到的点将会被剔除,防止误操作一些点,我建议开启哈~
当点已经设置完毕后,点击“End Point Selection”按钮,来结束编辑界面(这里需要注意哦,如果在刷点的时候,被其他任何Object的Inspector界面替换之后,未End的点将不会被保存哈)最后点击创建按钮,这时如果这行带叹号的红色提示消失,则代表已经完成设置成功了
— Collider —
碰撞组件,Magica Cloth里面有自己一套单独的碰撞系统,能够全局生效,也可以单独的设置骨骼对哪些碰撞体产生作用,总之呢,灵活性还是非常强的,它拥有三种Collider模式:
  • Sphere Collider(球形):球体碰撞体仅受Position(位置)和Scale(半径)控制,Rotation(方向)是无效操作
  • Capsule Collider(胶囊形):非常适合制作手臂和腿的碰撞体,,可以更改头尾的半径,来更加匹配Mesh的外型
  • Plane Collider(平面形):适合制作地面碰撞,需要注意的是,平面碰撞体是没有大小,因此被视为无限平面

参数介绍:

这个插件控制的参数实在是有点多,也具有许多属性,并且从一开始是很难掌握所有内容的。因此呢,经常使用的布料控件的参数(头发,附件,裙子等)被记录为预设。在布料设置中,很容易先加载此预设,然后在观看运动时进行调整。预设也可以独立保存,从而允许小伙伴们创建和重用自己的预设或将自己的预设导出传给别的用户。(对啦,这个插件的参数在运行状态下调整是不会被记录的,所以小伙伴们可以在运行状态下把各个参数都调整好了,直接存成一个预设,这样就很方便调节了) 内置的预设文件包含在MagicaCloth / Preset文件夹中
好啦,接下来我们继续介绍一下具体的一些参数的设置:
Radius(半径) — 设置骨骼的碰撞判断的大小,可以通过点击按钮“Open Cloth Monitor”布料监视器,打开“Particle Position” “Particle Radius” 来检查骨骼的碰撞体半径大小
Mass(质量) — 设置骨骼的重量,当一串骨骼连下来的时候(马尾),较重的骨骼难以移动,而较轻的骨骼则易于移动,基本上,如果起点较重而终点较轻,则骨骼模拟的效果将更加稳定
Gravity(重力加速度) — 设置骨骼的重力加速度(m / s)。小伙伴们可以为起点和终点设置不同的值。在自然界中,重力加速度为(-9.8),但如果要在游戏等中使布料模拟看起来更柔和,请考虑设置较低的重力加速度。
External Force(外力的影响) — 设置承受多少外力,例如“风”,这里将映入一个新的组件“风”; 如果需要风的话,需要新建一个空的Game Object,将脚本MagicaDirectionalWind挂上 小伙伴们可以通过更改组件的“Rotation”的旋转,来实现风向,定向风是仅方向风,因此这个组件的“Position”和“Scale”是无效的
如果小伙伴们觉得角色处于Idle状态过于平静或者角色所处在的环境是一个有风的地方,可以考虑在场景内添加这个组件,风有三个选项可以调节:
  • Mass Influence(质量影响):值为1时,质量影响100%,并且重粒子在暴露于风时不会移动太多, 当值为0时,则禁用重量效果,并且不受重量影响
  • Wind Influence(风影响):如果将值设置为0的时候,则完全不受风的影响。值设为1的时候,则受到100%的影响(该值可以大于1.0)
  • Wind Random Scale(随机的风力大小):如果将值设置为0时,将失去随机性
Drag(空气阻力) — 设置骨骼的空气阻力;值越大,空气阻力越大,骨骼的惯性衰减就将越快。
Max Velocity(最大速度) — 限制骨骼的最高速度,骨骼不会超过这个值的速度移动。
World Influence(世界位移) — 这个主要是针对角色瞬间移动的情况,当角色瞬间的位移或者旋转数值过大时,通过参数调整,让骨骼是否产生模拟。
Distance Disable(距离剔除) — 类似与LOD的功能,根据目标与指定对象之间的距离,来判断是否开启模拟,这个选项里面有两个值,“Distance” “Fade Distance”我举个例子就好理解了,如果Distance为20且FadeDistance为5,则将在15到20个距离之间执行淡入淡出过程。
Collision(碰撞) — 对骨骼模拟开启碰撞模拟,限制骨骼的移动范围,里面有两个参数选项:
  • Keep shape(保持模型体型):设置为ON时,将严格限制粒子的移动范围,以免破坏布料模拟之前的原始姿势。
  • Friction(摩檫系数):调整摩擦系数,当骨骼与碰撞器碰撞时,运动可以通过摩擦系数停止。
Penetration(防穿模) — 通过限制穿透,可以防止骨骼蒙皮的mesh穿透碰撞器并导致破面,有两种模式“ Surface Penetration / Collider Penetration”可以改善此问题。 下图是应用“防穿模”的示例:
  • Surface Penetration 第一种模式是裙子的蒙皮已经包含在脚动画中,并被设计为跟随动画,这种建议使用Surface Penetration模式
  • Collider Penetration 第二种模式是裙子不包含脚骨骼蒙皮的情况,使用Collider可以一定程度避免穿模的发生,但是当动画复杂起来,还是无法避免的会造成穿模,所以这种情况的话,需要使用Collider Penetration模式
好了,今天就先说到这里啦,下次兔纸我再来说一下MagicaCloth的顶点布料系统 记得评论,点赞,转发哦~~ 有推特的小伙伴也可以关注一下我哈~ 每天我都会发布一点小东西... https://twitter.com/Sakura_Rabbiter
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐