布料修改器

布料修改器是布料系统的核心,应用于布料模拟组成部分的场景中的所有对象。该修改器用于定义布料对象和冲突对象、指定属性和执行模拟。其他控件包括创建约束、交互拖动布料和清除模拟组件。

左:尚未应用布料修改器

右:已应用布料修改器并进行模拟

基本概念

在布料模拟中,需要让布料知道哪些对象将成为模拟的一部分,而哪些对象不是模拟的一部分。在完成上述操作之后,要定义制作的对象。此外还可以指定布料材质,以及什么是固体冲突对象。

由于布料是修改器,因此其实例将指定给每个要包括在布料模拟中的对象。这其中包括所有布料对象和冲突对象。注意分别带有单独布料修改器应用程序的布料对象彼此将不会交互。我们可以采用多种方式将对象包括在模拟中:

测量单位

注意: 只有当您在应用布料修改器后更改系统单位时,以下信息才是必要的。如果您在应用布料之前更改系统单位,则修改器会自动调整厘米/单位设置。

在进行布料模拟时考虑尺寸大小非常重要。一面大幅的旗帜和手帕的行为不同。如果关闭了比例,那么模拟也将关闭。由于布料处理的是真实世界中的物理,所以它在真实世界单位中工作。这意味着布料需要知道 3ds Max 中的单位与现实世界中的单位之间的关系。

例如,假定创建的平面为 10 x 10 的 3ds Max 单位。如果希望此平面的行为与 10 英寸 x 10 英寸手帕的行为类似,则需要告知布料 1 个 3ds Max 单位=1 英寸。如果希望此平面的行为与 10 英尺 x 10 英尺床单类似,则需要告知布料 1 个 3ds Max 单位=1 英尺。

除此部分开头所述情形之外,布料将忽略 3ds Max 系统单位设置(“自定义”菜单 “单位设置”“系统单位设置”下)。布料具有其自带的单位设置,该设置是由“模拟参数”卷展栏中的厘米/单位参数确定的。通过该参数可以告知布料1 个 3ds Max 单位等同于多少厘米 (cm)。由于 1 英寸等于 2.54 厘米,因此默认设置 2.54 意味着 1 个 3ds Max 单位等同于 1 英寸。

通过以下步骤可以确定此处使用的设置。

  1. 使用测量工具或卷尺辅助对象以 3ds Max 单位测量布料(或角色)的尺寸(此数字称为 x)。
  2. 确定您希望该对象在现实世界中的大小,然后将该数字转化为以厘米为单位的数字。如果您掌握的尺寸以英寸为单位,则只需乘以 2.54(称此数字为 y)。
  3. 厘米/单位 = y/x

以下是一个快速参考示例:您将文件 man.obj 导入到 3ds Max 中,并希望为其穿上一件衬衫。

  1. 通过测量工具,您发现此人身高为 170 个 3ds Max 单位。因此 y=170。
  2. 确定该角色身高 6 英尺。
    • 6 英尺=72 英寸。
    • 且 72 英寸=72x2.54=182.88cm。所以 x=182.88
  3. 现在的值即可确保衬衫行为的正确。Cm/unit=y/x=170/182.88=0.929。由于在此并不需要很高的精度,您还可将微调器的值圆整为 1.0。

织物行为

布料提供多种不同的方式来设置织物行为。您可以令布料的行为类似于皮革、丝绸、粗麻布和任意介于其间的材料。

模拟

在设定所有参数之后,我们已经准备就绪,可以开始模拟了。一般情况下,将先执行本地模拟来令织物和角色相匹配。在织物就位之后,可以多次模拟。

在布料中运行模拟非常轻松。您可以对模拟做出多种更改和编辑,将其作为一个不断完善的过程,而非一蹴而就的场景。

约束

您可采用多种方式约束织物来在模拟期间创建不同的织物效果。布料可以约束布料具有额外的拖拽效果,就仿佛其在空气中飘荡,或者还可以令其受到场景中空间扭曲的影响。将一部分织物链接到动画对象或附加到曲面是其他常见约束。例如,创建裤子时要将裤子的顶部约束到角色的腰部;或者需要将窗帘约束到拉杆上。约束条件非常重要,同时也是布料的强大部分。布料可以创建多组约束顶点,以获取最大的灵活性。此外还可以将衣服的众多不同组成部分约束到不同节点曲面或其他布料对象。

布料中的约束可在修改器的“组”子对象层级创建。在此处,可以看到布料和冲突等所有选定对象的顶点。随后您可以选择这些对象并将其置于组中。在定义组之后,可将选择集附加或“约束”到另一对象,或令其受到外力的影响。

撕裂布料

布料可以撕裂。有关如何执行此操作的示例,请参见此步骤

在模拟过程中,布料在以下几种情况下会撕裂:

  • 布料在力的作用下受到拉扯,导致其撕裂。

    “强度”或“撕裂阈值”值(此二者相同)可用来设置撕裂布料的难易程度。

  • 布料与设置为“剪切布料”的冲突对象相冲突。请参见碰撞属性

运行模拟之前,必须指定布料将撕裂的位置。为此,有以下几种不同方法可供选择:

撕裂布料和点缓存修改器

如果使用“点缓存”修改器优化布料动画,则有可能在发生撕裂之前不能正确平滑撕裂。要修复此问题,可以将“焊接”修改器添加至堆栈。将“焊接”放置于“点缓存”修改器上方。

过程

示例:要使用“保持形状”选项,请执行以下操作:

    如果布料对象以您想在模拟过程中保留的 3D 图形开始,则可以使用“保持形状”选项和设置保留此图形或甚至反转它。此简单步骤提供如何使用“保持形状”的示例。

  1. 在“顶”视口或“透视”视口中,创建“平面”基本体对象,该对象约为 90 x 90 单位并且为 20 段 x 20 段。
  2. 应用弯曲修改器,将“角度”设置为 250.0,将“弯曲轴”设置为 X。

    这将生成初始管状图形。

  3. 复制弯曲平面两次,以便在一行中具有三个平面。重命名平面,如下所示:
    • 未保持图形
    • 保持形状
    • 反转图形
  4. 选择所有三个平面并应用布料修改器。
  5. 在“模拟参数”卷展栏上,禁用“重力”并将厘米/单位设置为 0.5

    禁用“重力”使布料对象在模拟期间不会滑落,使它们处于视图中,并降低平面相对大的尺寸的厘米/单位设置补偿。

  6. 在“对象”卷展栏上,单击“对象属性”。

    这会打开“对象属性”对话框。

  7. 在“模拟对象”列表中,高亮显示所有三个平面(通过拖动),然后在“布料属性”组中选择“布料”。同时,将“U 弯曲”设置为 500.0

    这也会将“V 弯曲”自动设置为 500.0。

    通过使用高的弯曲值允许更快速地进行模拟。

    下一步,分别为每个对象设置不同的“保持形状”属性。

  8. 高亮显示列表中的反转图形对象并将“弯曲 %”值设置为 –100.0
    注: 默认值是 100.0。
  9. 单击“确定”退出该对话框。
  10. 选择不保持形状对象,并确保禁用“对象”卷展栏 “已选的对象操纵器”组 “使用目标状态”。
  11. 选择反转图形保持形状对象,但不要选择不保持形状,然后启用“使用目标状态”。
  12. 在“对象”卷展栏,单击“模拟本地”。

    几秒钟之后,不保持形状对象开始变得平缓,保持形状对象保持不变,而反转图形对象实际上反转了其图形,从而有效地创建了负的弯曲角度。

    提示: 也可以使用带有“抓取状态”的“目标状态”进行维持,或使用前面的布料模拟或形状更改修改器反转创建的图形。

示例:要撕裂一块布料,请执行以下操作:

  1. 在“顶”视口中, 创建一个平面。使其每一边为大约 150 单位。将其“长度分段”和“宽度分段”均设置为 7
  2. 同时在“顶”视口中创建两个 虚拟对象:在平面每侧各创建一个对象。

    该平面两侧为两个虚拟对象

  3. 启用 。转到第 100 帧,然后设置每个虚拟对象的动画,以使其沿其 X 轴移动至距离该平面约 300 个单位:向左移动左侧虚拟对象,向右移动右侧虚拟对象。
  4. 禁用
  5. 返回第 0 帧。
  6. 选择平面。转到 “修改”面板,将布料修改器应用于平面。
  7. 在“对象”卷展栏上,单击“对象属性”。3ds Max 将打开布料的“对象属性”对话框。在对象列表中,单击 Plane01 将其高亮显示,选择布料单选按钮以使 Plane01 如同布料一样,然后单击“确定”(保持所有默认“布料属性”设置)。
  8. 在“修改器”堆栈中,转至“组”子对象层级。
  9. 沿平面左侧选择顶点,然后在“组”卷展栏上单击“生成组”。单击“确定”以接受默认名称 Group01。保持在“组”列表中高亮显示 Group01,单击“节点”,然后在视口中单击左侧虚拟对象以将其指定至该组。
  10. 对右侧列顶点和右侧虚拟对象重复步骤 9。
  11. 选择中间两列平面顶点,然后在“组”卷展栏上单击“制造撕裂”。单击“确定”接受默认名称。

    选择要在布料中创建撕裂的中心顶点

    3ds Max 将创建新的“焊接”约束,该约束包括布料平面中心的顶点。

    单击“制造撕裂”之后

  12. 在修改器堆栈中,单击“布料”以返回到顶级。
  13. 在“对象”卷展栏 “模拟”组中,单击“模拟”。

    3ds Max 将设置虚拟对象拉扯布料的动画。布料随之沿设置撕裂的顶点撕裂。

    布料随着其边缘被拉开而在中心开裂

    根据虚拟对象位置的不同,您在示例中所见到的撕裂可能与这些图中所示的有所不同。

要使用联网的渲染处理场运行布料模拟,请执行以下操作:

    复杂布料模拟不仅需要大量计算,而且要花费很长的时间。布料包含使其易于在联网计算机上(渲染处理场的一部分)运行模拟的命令,从而可以释放计算机的空间,以用于场景的其他部分。

  1. 设置模拟。
  2. 对于模拟过程中的每个布料对象, 都要选中该对象,然后在“选定对象”卷展栏上,单击“设置”,并指定缓存的路径和文件名。

    为了获得最佳效果,应指定映射的驱动器,并启用“强制 UNC 路径”。从而可以使用通用命名约定指定该路径,以便网络中的所有计算机都可以找到它。此外,将所有缓存文件保留在相同的目录中也是一种不错的方法。

  3. 在“模拟参数”卷展栏上,关闭“随渲染模拟”。
  4. 保存此场景文件。
  5. 打开 “渲染设置”对话框。
  6. 从“渲染设置”对话框 “目标”下拉列表中,选择“提交到网络渲染”。
  7. 3ds Max 将打开“网络作业分配”对话框。将该作业提交到单个服务器上。

    与渲染不一样,网络布料模拟不能在多台服务器计算机之间拆分。

    注: 您无需渲染整个动画即可触发缓存的创建;单帧就足够了。

    只要服务器计算机启动渲染,它就开始计算模拟并将结果保存到磁盘。通过单击“加载”按钮,您可以在任意位置从缓存文件加载最新状态的模拟,以检查其进度。