您可以使用 nConstraint 调整 nCloth、nParticle 和 nHair 对象的行为,方法是限制它们的移动或将它们固定到其他对象。例如,有时您可能需要将 nCloth 布料的某些部位约束到角色,使其不会脱落。您可以使用约束来确保角色的裤子保持穿着状态,或使衣服的背带附着在角色的肩部。还可以使用约束来将 nHair 变形为马尾辫或其他样式。对于 nParticle,您可能需要将 nParticle 约束到 nCloth 对象,并调整约束强度,使得 nCloth 与另一个 Nucleus 对象碰撞时粒子可以飞出 nCloth。
所有 nConstraint 都受 nCloth 对象支持,但并非所有 nConstraint 都适用于 nParticle 和 nHair 对象。nParticle 和 nHair 对象支持以下 nConstraint:
“变换”(Transform)约束将 nCloth 对象和被动碰撞对象的选定顶点、nHair 曲线 CV 和 nParticle 对象的选定粒子保持在原地,或将其在 XYZ 空间中移动。“变换”(Transform)约束具有变换约束定位器,用于控制约束的顶点或粒子。此定位器可以是父对象、动画、或对另一个对象的约束。例如,可以动画“变换”(Transform)约束的 nCloth 丝质头巾的变换约束定位器,指导其在从空中落下时的移动。
请参见 nConstraint > 变换
“组件到组件”(Component to Component)约束将 nCloth 组件(顶点、边或面)、nHair 曲线 CV 和 nParticle 组件(各个粒子)附着到其他 nCloth、nParticle、nHair 或被动对象组件。例如,可以使用“组件到组件”(Component to Component)约束将纽扣附着到 nCloth 衬衫。
“组件”(Component)约束提供在选定面之间以及沿 nCloth 网格的选定边的拉伸和弯曲行为的附加控制。有两种类型的“组件”(Component)约束:“拉伸”(Stretch)和“弯曲”(Bend)。
创建“拉伸”(Stretch)约束,可在选定边的顶点或网格的面之间构建链接和交叉链接。这些链接和交叉链接保持选定组件之间的角度,从而稳固化 nCloth 并防止诸如在受约束的区域中斜切等行为。
您可以调整“组件”(Component)约束的“静止长度比例”(Rest Length Scale)属性,以控制在受约束的区域中的链接和交叉链接之间布料如何拉伸。例如,您可以对 nCloth 衬衫袖子创建两个“拉伸”(Stretch)约束,来分别控制沿长度以及网格周围的拉伸阻力。
“拉伸”(Stretch)类型约束对于模拟衣服上的弹性腰带及创建裙子和窗帘上的自然褶皱很有用。
“弯曲”(Bend)约束可让您沿 nCloth 网格的选定边施加附加弯曲阻力。使用“弯曲”(Bend)约束来增加布料的弯曲强度,以便创建如硬的衬衫领口和袖口的效果。
“点到曲面”(Point to Surface)约束将 nCloth 组件(顶点、边或面)、nHair 曲线 CV 和 nParticle 组件(各个粒子)附着到目标曲面(nCloth 曲面或被动碰撞对象)。如果要将 nCloth 对象的一部分(如袖口的衬衫)保留到多边形网格(如角色的腕部),此类型的 nConstraint 将十分有用。
“在曲面上滑动”(Slide on Surface)约束将 nCloth 组件(顶点、边或面)、nHair 曲线 CV 和 nParticle 组件(各个粒子)附着到目标曲面(另一个 nCloth 曲面或被动碰撞对象),并允许受约束的组件沿着约束到的曲面移动或滑动。“在曲面上滑动”(Slide on Surface)约束是“点到曲面”(Point to Surface)约束的变型(它允许滑动)。此类型的 nConstraint 可以用于代替碰撞,大多数情况下的速度比碰撞快。
“焊接相邻边界”(Weld Adjacent Borders)约束捕捉和合并离选中 nCloth 对象最近的边界。当您希望多个独立 nCloth 网格的行为与一个 nCloth 对象的行为一样,此类型的 nConstraint 将非常有用。nParticle 对象不支持“焊接相邻边界”(Weld Adjacent Borders)约束。
“力场”(Force Field)约束使用具有球形体积边界的径向场,将 nCloth、nHair 曲线和 nParticle 组件或对象推离约束的中心。当创建“力场”(Force Field)约束后,将在场景中显示力场定位器。定位器的大小、形状和位置表示力场的大小、形状和位置。
您可以使用“力场”(Force Field)约束通过拒绝对象或特定顶点、nHair 曲线 CV 或 nParticle,来更正不需要的穿透。例如,可以通过在关节处放置“力场”(Force Field)约束,推开卡在角色肘部的 nCloth。相反,可以使用它吸收或包含约束边界内的 nCloth。
“力场”(Force Field)约束可以应用于整个 Nucleus 对象,也可以用于本地化顶点、曲线 CV 或单个 nParticle。使用“力”(Force)、“强度”(Strength)和“强度衰减”(Strength Dropoff)属性(位于 dynamicConstraint 节点)来确定力场的强度。正值会使力场将 nCloth、nHair 或 nParticle 向外推,而负值会导致力场将 nCloth、nHair 或 nParticle 向内吸。
请参见 nConstraint > 力场
“吸引到匹配网格”(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)约束用于限制 nCloth、nParticle 和被动对象组件发生碰撞。“禁用碰撞”(Disable Collision)约束防止其成员与所有其他 Nucleus 对象或 nCloth 和 nParticle 对象组件的碰撞。“排除碰撞对”(Exclude Collide Pairs)约束防止其成员与特定 Nucleus 对象或 nCloth 和 nParticle 对象组件的碰撞。当您想要控制 nCloth 的哪些区域或粒子发生碰撞,或想要避免碰撞几何体内部发生布料撕裂时,提高 nCloth 或 nParticle 对象性能,这些约束会非常有用。