Version: 6000.3
语言: 中文
了解物理性能问题
多场景物理

切换到脚本

布料组件可与蒙皮网格Unity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表
渲染器,为模拟织物提供基于物理的解决方案。它是专门为角色服装设计的,并且仅适用于 Skinned网格体渲染器(Mesh Renderer一个网格体组件,用于从网格体过滤器中获取几何体,并将其渲染到对象的变换组件定义的位置。更多信息
请参阅术语表
.如果将布料组件添加到游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
使用常规网格渲染器时,Unity 会删除网格渲染器并添加蒙皮网格渲染器。

要将 Cloth 组件附加到具有蒙皮网格渲染器的游戏对象,请在编辑器中选择游戏对象,单击 Inspector 窗口中的 Add Component 按钮,然后选择 Physics > Cloth。组件将显示在检查器中。

布料组件。
布料组件。

性能

财产 描述
拉伸刚度 布料的拉伸刚度。
弯曲刚度 布料的弯曲刚度。
使用系绳 应用约束,以帮助防止移动布料粒子离固定粒子太远。这有助于减少过度的拉伸。
使用重力(Use Gravity) 重力加速度应该施加到布料上吗?
阻尼 运动阻尼系数。
外部加速 施加到布料上的恒定外部加速度。
随机加速 应用于布料的随机外部加速度。
世界速度比例(World Velocity Scale) 角色的世界空间移动将影响布顶点的程度。
世界加速规模 角色的世界空间加速度将影响布顶点。
摩擦 布料与角色碰撞时的摩擦力。
碰撞质量比例(Collision Mass Scale) 碰撞粒子的质量增加多少。
使用连续碰撞(Use Continuous Collision) 启用连续碰撞当物理引擎检测到两个游戏对象的碰撞器接触或重叠时,当至少一个游戏对象具有刚体组件并且处于运动状态时,就会发生碰撞。更多信息
请参阅术语表
以提高碰撞稳定性。
使用虚拟粒子(Use Virtual Particles) 每个三角形添加一个虚拟粒子以提高碰撞稳定性。
求解器频率 每秒求解器迭代次数。
睡眠阈值 布的睡眠阈值。
胶囊碰撞体胶囊体形状的碰撞器组件,用于处理游戏对象(如桶和角色肢体)的碰撞。更多信息
请参阅术语表
此布料实例应与之碰撞的胶囊碰撞体数组。
球体碰撞体球体形状的碰撞器组件,用于处理游戏对象(如球或其他出于物理目的可以大致近似为球体)的碰撞。更多信息
请参阅术语表
此 Cloth 实例应与之碰撞的 ClothSphereColliderPairs 数组。
虚拟粒子权重(Virtual Particle Weights) 虚拟粒子相对于三个相邻法线布料粒子的重心坐标。(这些权重通常不需要调整)。

布料不会对所有碰撞体 用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格体形状完全相同 - 在游戏中,粗略的近似值通常更有效且难以区分。更多信息
请参阅术语表
场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
,也不会将力量施加回世界。添加布料组件后,根本不会对任何其他形体做出反应或影响。因此,布料和世界在手动将世界中的碰撞器添加到布料组件之前无法识别或看到彼此。即使在那之后,模拟仍然是单向的:布料对这些物体做出反应,但不会施加力回。

此外,你只能将三种类型的碰撞器与布料一起使用:球体、胶囊体和圆锥形胶囊体碰撞器,这些碰撞器使用两个球体碰撞器构造。这些限制的存在都是为了帮助提高性能。

编辑约束工具(Edit Constraints Tool)

可以将约束应用于布料的特定顶点,以使其具有或多或少的移动自由度。

检查器一个Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
,在 Cloth 组件中选择 Edit cloth constraints(左上角按钮)。当工具处于活动状态时,小球体会出现在场景视图:您正在创建的世界的交互式视图。您可以使用场景视图来选择和定位场景、角色、摄像机、灯光和所有其他类型的游戏对象。更多信息
请参阅术语表
在网格体的所有顶点上。它们表示可以应用约束的布料粒子。粒子的颜色表示其约束在布料中的相对值,具体取决于当前选择的约束类型。

在蒙皮网格渲染器上使用的布料约束工具。
在蒙皮网格渲染器上使用的布料约束工具。

布料约束工具窗口也显示在场景视图的右下角。

布料约束工具
布料约束工具

布料约束工具具有以下选项:

财产 描述
可视化 允许您选择要显示的约束类型和粒子。从以下选项中进行选择:
  • 最大距离(Max Distance):仅显示布料粒子的“最大距离”(Max Distance)值。
  • 表面穿透(Surface Penetration):仅显示布料粒子的表面穿透(Surface Penetration)值。
  • 纵背面(Manipulate Backfaces) :启用此选项可可视化和纵可能隐藏在布料当前朝向部分后面的粒子。

颜色光谱(Color spectrum) 根据当前在整个布料中应用的最小值和最大值,提供所选约束类型的粒子颜色和约束值之间的对应关系。黑色始终表示粒子没有约束。
约束模式 从以下选项中选择如何编辑布料约束值:
  • 选择:将固定约束值应用于预先选定的粒子组。有关更多信息,请参阅选择模式
  • 绘制:通过使用画笔绘制布料粒子来应用固定约束值。有关更多信息,请参阅绘制模式
  • 渐变:将约束值的从左到右线性渐变应用到预先选择的粒子组。有关更多信息,请参阅渐变模式
约束大小(Constraint Size) 表示布料粒子的球体的显示大小。在方便时调整此值,以简化约束版本。此属性对约束本身没有影响。

选择模式

要在“选择”模式下使用“布料约束”工具,请执行以下作:

  1. 在“布料约束”窗口中选择“选择”。
  2. 使用鼠标光标绘制选择框或一次单击一个粒子。
  3. 启用要应用于选择的约束类型:“最大距离”(Max Distance)、“曲面穿透”(Surface Penetration)或两者兼而有之。
  4. 根据刚刚启用的约束类型设置一个值。
选择模式下的布料约束工具。
选择模式下的布料约束工具。

绘制模式

要在“绘制”模式下使用“布料约束”工具,请执行以下作:

  1. 在“布料约束”窗口中选择“绘制”。
  2. 根据您需要用画笔覆盖的区域调整画笔半径
  3. 启用要应用的约束类型:“最大距离”(Max Distance)、“曲面穿透”(Surface Penetration)或两者兼而有之。
  4. 根据刚刚启用的约束类型设置绘制值。
  5. 使用画笔在粒子上绘制约束。
绘制模式下的布料约束工具。
绘制模式下的布料约束工具。

渐层模式

要在渐变模式下使用“布料约束”工具,请执行以下作:

  1. 在“布料约束”(Cloth Constraints)窗口中选择“渐变”(Gradient)。
  2. 在场景视图中启用 2D 视图(该工具在 3D 视图中无法应用渐变)。
  3. 使用鼠标光标绘制选择框或一次单击一个粒子。
  4. 设置要在选区中从左到右应用的渐变的限制值:“渐变开始”和“渐变结束”
  5. 启用要应用于选择的约束类型:“最大距离”(Max Distance)、“曲面穿透”(Surface Penetration)或两者兼而有之。
渐变模式下的布料约束工具。
渐变模式下的布料约束工具。

自碰撞和互碰撞

布料碰撞使游戏中的角色服装和其他布料移动更加逼真。在 Unity 中,布料具有多个处理碰撞的布料粒子。您可以为以下内容设置布料粒子:

  • 自碰撞,防止布料穿透自身。
  • Intercollision,允许布料粒子相互碰撞。

若要为布料设置碰撞粒子,请在“布料”检查器中选择“自碰撞和相互碰撞”按钮:

布料检查器中的 自碰撞和相互碰撞(Self Collision and Intercollision) 按钮
布料检查器中的 自碰撞和相互碰撞(Self Collision and Intercollision) 按钮

自身Collision__和Intercollision__窗口将出现在场景视图中:

布料自碰撞和相互碰撞窗口
布料自碰撞和相互碰撞窗口

布料粒子会自动显示为带有布料组件的蒙皮网格体。最初,没有布料粒子设置为使用碰撞。这些未使用的颗粒显示为黑色:

未使用的布料颗粒
未使用的布料颗粒

要应用自碰撞或相互碰撞,您需要选择一组粒子来应用碰撞。要选择一组要碰撞的粒子,请单击 选择(Select) 按钮:

选择布料粒子按钮
选择布料粒子按钮

现在,左键点击并拖动以选择要应用碰撞的粒子:

使用单击和拖动选择布料粒子
使用单击和拖动选择布料粒子

所选粒子显示为蓝色:

选定的布料粒子为蓝色
选定的布料粒子为蓝色

勾选“自碰撞和相互碰撞”复选框,将碰撞应用于所选粒子:

“自碰撞和相互碰撞”复选框
“自碰撞和相互碰撞”复选框

指定用于碰撞的粒子显示为绿色:

选定的粒子为绿色
选定的粒子为绿色

要为布料启用自碰撞行为,请转到 布料检查器(Cloth Inspector) 窗口的 自碰撞(Self-Collision) 部分,并将 碰撞间距离(Inter-Collision Distance) 和 碰撞间刚度(Inter-Collision Stiffness) 设置为非零值:

自碰撞参数
自碰撞参数
财产 功能
碰撞间距离(Inter-Collision Distance) 每个粒子周围的球体直径。Unity 确保这些球体在模拟期间不会重叠。碰撞间距离应小于配置中两个粒子之间的最小距离。如果距离较大,自碰撞可能会违反某些距离约束并导致抖动。
碰撞间刚度(Inter-Collision Stiffness) 粒子之间的分离脉冲应该有多强。布解算器会计算出这一点,它应该足以保持粒子分离。

自碰撞和相互碰撞可能会占用大量整体模拟时间。考虑保持较小的碰撞距离,并使用自碰撞指数来减少相互碰撞的粒子数量。

自碰撞使用顶点,而不是三角形,因此不要指望自碰撞能够完美地适用于三角形远大于布料厚度的网格体。

绘制(Paint)和擦除(Erase)模式允许您通过按住鼠标左键并拖动单个布料粒子来添加或删除用于碰撞的粒子:

自碰撞参数
自碰撞参数

“绘制”“擦除”模式下,指定用于碰撞的粒子为绿色,未指定的粒子为黑色,笔刷下方的粒子为蓝色:

被绘制的粒子为蓝色
被绘制的粒子为蓝色

布料碰撞

如上所述,指定用于相互碰撞的粒子与指定用于自碰撞的粒子的方式相同。与自碰撞一样,您可以指定一组用于相互碰撞的粒子。

要启用相互碰撞行为,请打开物理设置(从 Unity 的主菜单中:编辑 > 项目设置(Project Settings) 广泛的设置集合,允许您配置物理、音频、网络、图形、输入和项目的许多其他区域的行为方式。更多信息
请参阅术语表
,然后选择 物理(Physics) > 物理设置(Physics Settings) > 布料(Cloth) 类别),并在 布料碰撞(Cloth InterCollision) 分段中将 碰撞间距离(Inter-Collision Distance) 和 碰撞间刚度(Inter-Collision Stiffness) 设置为非零值:

在物理设置中启用相互碰撞行为
在物理设置中启用相互碰撞行为

布料碰撞间距离(Inter-Collision Distance)和碰撞间刚度(Inter-Collision Stiffness)属性与上文所述的自碰撞距离(Distance)和刚度(Stiffness)属性具有相同的功能。

碰撞体碰撞

布料无法简单地与任意世界几何体发生碰撞,现在只能与胶囊碰撞体球体碰撞体数组中指定的碰撞体进行交互。

球体碰撞器数组可以包含单个有效的 SphereCollider 实例(第二个实例为 null),也可以包含一对。在前一种情况下,ClothSphereColliderPair 仅表示布料要碰撞的单个球体碰撞器。在后一种情况下,它表示由两个球体定义的圆锥形胶囊形状,以及连接两者的圆锥体。圆锥形胶囊形状可用于对角色的肢体进行建模。

了解物理性能问题
多场景物理