您可以使用 nConstraint 调整 nCloth 和 nParticle 对象的行为,方法是限制它们的移动或将它们固定到其他对象。例如,有时您可能需要将 nCloth 布料的某些部位约束到角色,使其不会脱落。您可以使用 nCloth 约束来实现此目的。您可以使用约束来确保角色的裤子保持穿着状态,或使衣服的背带附着在角色的肩部。还可以使用约束来附着纽扣、撕裂 nCloth 或将不同的 nCloth 对象合并在一起。
对于 nParticle,您可能需要将 nParticle 约束到 nCloth 对象,并调整约束强度,使 nCloth 与另一个 Nucleus 对象碰撞时粒子可以飞出 nCloth。
所有 nConstraint 都受 nCloth 对象支持,但并非所有 nConstraint 都适用于 nParticle。nParticle 约束适用于初始状态和发出的 nParticle。nParticle 对象支持以下 nConstraint:
有关 nConstraint 以及如何使用它们的详细信息,请参见:
“变换”(Transform)约束将 nCloth 对象的选定顶点和 nParticle 对象的选定粒子保持在原地,或将其在 XYZ 空间中移动。“变换”(Transform)约束具有变换约束定位器,用于控制约束的顶点或粒子。此定位器可以是父对象、动画、或对另一个对象的约束。例如,可以动画“变换”(Transform)约束的 nCloth 丝质头巾的变换约束定位器,指导其在从空中落下时的移动。
“组件到组件”(Component to Component)约束
“组件到组件”(Component to Component)约束将 nCloth 组件(顶点、边或面)或 nParticle 组件(各个粒子)附着到其他 nCloth、nParticle 或被动对象组件。例如,可以使用“组件到组件”(Component to Component)约束将纽扣附着到 nCloth 衬衫。
“点到曲面”(Point to Surface)约束将 nCloth 组件(顶点、边或面)或 nParticle 组件(各个粒子)附着到目标曲面(nCloth 曲面或被动碰撞对象)。如果要将 nCloth 对象的一部分(如袖口的衬衫)保留到多边形网格(如角色的腕部),此类型的 nConstraint 将十分有用。
“在曲面上滑动”(Slide on Surface)约束将 nCloth 组件(顶点、边或面)或 nParticle 组件(各个粒子)附着到目标曲面(另一个 nCloth 曲面或被动碰撞对象),并允许受约束的组件沿着约束的曲面移动或滑动。“在曲面上滑动”(Slide on Surface)约束是“点到曲面”(Point to Surface)约束的变型(它允许滑动)。此类型的 nConstraint 可以用于代替碰撞,大多数情况下的速度比碰撞快。
“焊接相邻边界”(Weld Adjacent Borders)约束
“焊接相邻边界”(Weld Adjacent Borders)约束捕捉和合并离选中 nCloth 对象最近的边界。当您希望多个独立 nCloth 网格的行为与一个 nCloth 对象的行为一样,此类型的 nConstraint 将非常有用。nParticle 对象不支持“焊接相邻边界”(Weld Adjacent Borders)约束。
“力场”(Force Field)约束使用具有球形体积边界的径向场,将 nCloth 和 nParticle 组件或对象推离约束的中心。当创建“力场”(Force Field)约束后,将在场景中显示力场定位器。定位器的大小、形状和位置表示力场的大小、形状和位置。
您可以使用“力场”(Force Field)约束通过拒绝对象或特定顶点或 nParticle,来更正不需要的穿透。例如,可以通过在关节处放置“力场”(Force Field)约束,推开卡在角色肘部的 nCloth。相反,可以使用它吸收或包含约束边界内的 nCloth。
“力场”(Force Field)约束可以应用于对象,也可以用于本地化的顶点或单个 nParticle。使用“力”(Force)、“强度”(Strength)和“强度衰减”(Strength Dropoff)属性(位于 dynamicConstraint 节点)来确定力场的强度。正值会使力场将 nCloth 或 nParticle 向外推,而负值会导致的力场将 nCloth 或 nParticle 向内吸。
“吸引到匹配网格”(Attract to Matching Mesh)约束
“吸引到匹配网格”(Attract to Matching Mesh)约束会将 nCloth 对象的顶点吸引到具有匹配拓扑的被动对象的对应顶点。如果希望 nCloth 在模拟期间采用特定的形状,此类型的约束将非常有用。
例如,如果要将衣服从角色身上脱落,并且必须以特定特定形状落地,或为场景中的方向设置最终形状,可以使用此约束。位于 dynamicConstraint 节点的“强度”(Strength)属性,可以确定您的 nCloth 对象与目标网格的相似度。nParticle 对象不支持“吸引到匹配网格”(Attract to Matching Mesh)约束。
“可撕裂曲面”(Tearable Surface)约束可以使用“焊接”约束的方法,通过分离所有的面,生成新的边和定点,合并 nCloth 的顶点,软化 nCloth 的边,并同时约束 nCloth 点(撕裂)或边(破坏),以使 nCloth 对象变得可撕裂或可破坏。如果希望创建在与被动对象或其他 nCloth 对象碰撞时,可以被撕裂或破坏的 nCloth 曲面,此约束将非常有用。位于 dynamicConstraint 节点的“粘合强度”(Glue Strength)属性确定了将 nCloth 撕裂或破坏的难易度。nParticle 对象不支持“可撕裂曲面”(Tearable Surface)约束。
“禁用碰撞”(Disable Collision)和“排除碰撞对”(Exclude Collision Pairs)约束
“禁用碰撞”(Disable Collision)和“排除碰撞对”(Exclude Collision Pairs)约束用于限制 nCloth、nParticle 和被动对象组件发生碰撞。“禁用碰撞”(Disable Collision)约束防止其成员与所有其他 Nucleus 对象或 nCloth 和 nParticle 对象组件的碰撞。“排除碰撞对”(Exclude Collide Pairs)约束防止其成员与特定 Nucleus 对象或 nCloth 和 nParticle 对象组件的碰撞。当您想要控制 nCloth 的哪些区域或粒子发生碰撞,或想要避免碰撞几何体内部发生布料撕裂时,提高 nCloth 或 nParticle 对象性能,这些约束会非常有用。