ProBoolean 复合对象

布尔对象通过对两个或多个其他对象执行布尔运算将它们组合起来。ProBoolean 提供了一系列功能,例如一次合并多个对象的能力,每个使用不同的布尔操作。

ProBoolean 还可以自动将布尔结果细分为四边形面,这有助于将网格平滑涡轮平滑

材质、纹理、顶点颜色

ProBoolean 和 ProCutter 将纹理坐标、顶点颜色、可选材质和贴图从运算对象传输到最终结果。可以选择将运算对象材质应用于所得到的面,也可以保留原始材质。如果其中一个原始运算对象具有材质贴图或顶点颜色,则所得到的面是由于运算对象保持这些图形属性获得的。但是,当纹理坐标或顶点颜色存在时,不能移除共面的面,因此所得到的网格质量会降低。我们建议在 ProBoolean 运算之后应用纹理。

ProBoolean 提供了 2 个用于应用材质的选项,这两个选项在“参数”卷展栏的“应用材质”组中提供(请参见上图)。默认方法是“应用运算对象材质”,该方法可将操作对象材质应用于所得到的面。另一种方法“保留原始材质”会使所得到的面使用在布尔运算中第一个选定对象的材质。

下图显示了两种方法的区别。布尔运算从左侧图的一个红色的长方体和一个蓝色的球体开始。该长方体用作基本对象,球体是减去的运算对象。使用默认的“应用运算对象材质”选项给出在图中心显示的结果。选择“保留原始材质”会产生在图右侧显示的结果。

左:原始运算对象

中:“应用运算对象材质”处于激活状态

右:“保留原始材质”处于激活状态

支持的布尔运算

ProBoolean 支持并集、交集、差集、合并、附加和插入。前三个运算与标准布尔复合对象中执行的运算很相似。“合集”运算相交并组合两个网格,不用移除任何原始多边形。对于需要有选择地移除网格的某些部分的情况,这可能很有用。

附加操作可将多个对象合并成一个对象,而不影响各对象的拓扑;各对象实质上是复合对象中的独立元素。而插入操作会从操作对象 B 减去操作对象 A 的边界图形,然后用操作对象 A 替换切掉的部分。

还支持的是布尔运算的两个变体:盖印和切面切割器。“盖印”选项在运算对象和原始网格中插入(盖印)相交边,而不用移除或添加面。“盖印”只分割面,并将新边添加到基本对象(原始选定对象)的网格中。切面切割器执行指定的布尔运算,但不会将运算对象的面添加到原始网格中。可以使用它在网格中剪切一个洞,或获取网格在其他对象内部的部分。

编辑布尔对象

当从“修改”面板中访问 ProBoolean 或 ProCutter 对象时,可以将运算对象添加到现有的集合中。您还可以移除和变换(移动、旋转或缩放)操作对象。

多边形减少

ProBoolean 和 ProCutter 具有内置的百分数功能。通常情况下,如果将百分数与布尔运算结合在一起,则效果会很更好。原因是布尔对象包含有关哪些边是相交边的元信息。百分数功能将考虑该信息,并使用它正确保持相交边。

文本、放样和 NURBS

当对文本对象执行布尔操作时,应确保字符彼此不相交,并且每个字母都是闭合的。此外,用这种方法很容易不小心创建放样对象NURBS 对象,以致产生自相交。借助放样对象,检查端点以及放样曲线弯曲处的点。

过程

要创建 ProBoolean 复合对象,请执行以下操作:

  1. 为布尔运算设置对象。例如,要从长方体中减去球体,创建该长方体和球体,并排列球体,以便其体积与长方体相交,去掉相交部分就得到了所需结果。
  2. 选择基本对象。在示例的步骤 1 中,选择长方体。
  3. “创建”面板上,(几何体)处于激活状态时,从下拉列表中选择“复合对象”。在“对象类型”卷展栏中,启用“ProBoolean”。
  4. 在“参数”卷展栏上,选择要使用的布尔运算类型:“并集”、“交集”、“差集”等。还要选择 3ds Max 如何将拾取的下一个运算对象传输到布尔型对象:“参考”、“复制”、“移动”或“实例化”。您也可以选择保留原始材质,或保持默认的“应用材质”选择:应用运算对象材质。
  5. 单击“开始拾取”按钮。
  6. 拾取一个或多个对象参与布尔运算。
  7. 拾取对象时,还可以为每个新拾取的对象更改布尔运算(合并等)和选项(切面或盖印),并将下一个操作对象传输到布尔(参考、复制等)和“应用材质”选项。只要“开始拾取”按钮一直处于按下的状态,就可以继续拾取操作对象。拾取的每一个对象都会添加到布尔运算。

    当“修改”面板处于活动状态时,可以通过单击“开始拾取”按钮,然后拾取要添加的对象将这些对象添加到选定的 ProBoolean 对象中。

示例:要对子对象运算更改现有的布尔,请执行以下操作:

    ProBoolean 提供了组合各种布尔运算的诸多灵活性,并提供了在构建布尔对象时以及构建了布尔对象后,更改运算对象组合方式的能力。

  1. 通过添加长方体、球体、小的长方体和圆柱体开始,如下图所示:

    顶部:“前”视口

    底部:“透视”视口

  2. 选择长方体。
  3. “创建”面板上,(几何体)处于激活状态时,从下拉列表中选择“复合对象”。在“对象类型”卷展栏中,启用“ProBoolean”。
  4. 在“参数”卷展栏的“运算”组中,选择“交集”。
  5. 在“拾取布尔”卷展栏上,单击“开始拾取”,然后单击球体。

    结果是球体和长方体相交,即代表两个对象都拥有的共同 体积的一个对象。在这种情况下,这个对象就是是球体和长方体的重叠部分。尽管球体和长方体在此处都没有材质,但是所得到的结果使用创建长方体时,最初由 3ds Max 随机指定给它的默认颜色。

    注意,“开始拾取”保持活动状态(蓝色、黄色,具体取决于颜色方案)。这意味着可以继续拾取对象以合并到布尔对象中,执行操作时也可以更改运算。

  6. 将“运算”设置为“并集”,然后单击小的长方体。

    所得到的结果是小的长方体和球体与较大长方体交集的并集(增加)。再次将原始对象的颜色指定给结果。

  7. 将“运算”设置为“差集”,然后单击圆柱体。

    圆柱体的相交体积是从以前的布尔结果中减去得到的。

    注意,在“参数”卷展栏底部的层次视图列表中,列出了用于构建布尔对象的运算对象和运算的整个历史。用“并集”合并 Box01 开始布尔运算,然后用“交集”合并 Sphere01,用“并集”合并 Box02,最后,用“差集”合并 Cylinder01。

    注: 列表中第一个对象的运算对布尔对象没有影响,但是如果将其移动到列表的其他位置,则会产生影响。此练习结束时您会看到一个这样的示例。

    可以使用“子对象运算”组中的列表和其他控件来更改结果。

  8. 在列表中,高亮显示“差集 - Cylinder01”项,然后将“运算”设置为“并集”。
  9. 在“子对象运算”组中,单击“更改运算”按钮。

    更改元素的结果是,圆柱体会作为增加的体积而非减少的体积出现在布尔对象中。另外,它在列表中的项更改为“并集 - Cylinder01”,显示现在对圆柱体进行的布尔运算是“并集”。

    还可以更改运算的顺序,这可能会影响结果。

  10. 在列表中,单击“并集 - Cylinder01”项以移除高亮显示的内容,然后高亮显示项 1:交集 - Sphere01。

    注意,其在列表中的位置 1 出现在“重排运算对象”按钮旁边的可编辑字段中。

  11. 将字段中的值从 1 改为 3,然后单击“重排运算对象”按钮。

    “交集 - Sphere01”项跳到列表结尾。

    此时,布尔对象会发生很大变化。您可以通过列表中的新顺序获知如何得到此形状:利用“并集”组合两个长方体和圆柱体,将它们的体积增加到一起,然后利用“交集”将球体合并到得到的结果中,只留下所有四个对象共有的体积。

界面

修改器堆栈

选择未修改的 ProBoolean 对象之后,修改器堆栈会显示单个的可扩展条目:ProBoolean。

开此条目(通过单击 + 图标)会出现一个子分支:运算对象。

要独立于整个对象转换 ProBoolean 对象中的运算对象,请单击“运算对象”分支以将其高亮显示。

然后,在视口中使用标准选择方法,或在“参数”卷展栏底部的层次视图列表中高亮显示它们的名称来选择一个或多个运算对象。

当仅选择一个运算对象时,在 ProBoolean 条目下面,对象类型(而不是其名称)会作为单独的堆栈条目出现。单击此条目可直接访问“修改”面板上的运算对象的参数。

如果“参数”卷展栏 “显示”设置为“结果”,尽管默认情况下操作对象本身不可见,但是选择操作对象可在视口中显示操作对象的三轴架或变换 Gizmo。

要查看操作对象,请将“参数”卷展栏 “显示”设置为“操作对象”。

不管运算对象是否可见,您都可以在“运算对象”子对象层级下变换并设置它们的动画,就像在 3ds Max 中处理其他任何对象一样。

通过设置所减去操作对象的位置的动画来更改 ProBoolean 对象

还可以变换和设置基础对象(即层次视图列表中的第一个对象)的动画。

“拾取布尔”卷展栏

开始拾取
单击此选项,然后依次单击要传输至布尔对象的每个运算对象。在拾取每个运算对象之前,可以更改“参考/复制/移动/实例化”选择、“运算”选项和“应用材质”选择。
提示: 在使用默认设置将许多运算对象添加到布尔对象时,每次拾取一个对象时都计算结果可能会降低该过程的速度。要保持最适合的反馈,请将“参数”卷展栏 “显示”设置为“操作对象”。然后,当完成时,将其设置回“结果”。另外,在“高级选项”卷展栏上将“更新”设置为“手动”,然后单击“更新”按钮以查看执行完布尔运算之后的结果。

选择一个单选按钮以指定如何将您拾取的下一个运算对象传输到布尔对象:

  • 参考布尔运算使用所拾取的运算对象的参考参考,这样,在合并到布尔对象中后,对象仍然存在。将来修改原来拾取的对象时,也会修改布尔运算。使用“参考”可使对原始运算对象所做的修改器产生的更改与新的运算对象同步,反之则不行。
  • 复制布尔运算使用所拾取运算对象的一个副本。布尔运算不会影响选定的对象,但其副本会参与布尔运算。
  • 移动所拾取的运算对象成为布尔运算的一部分,不能再作为场景中的单独对象。这是默认选择。
  • 实例化布尔运算会创建选定对象的一个实例。将来修改选定的对象时,也会修改参与布尔运算的实例化对象,反之亦然。

“参数”卷展栏

“运算”组

这些设置确定布尔运算对象实际如何交互。

并集
将两个或多个单独的实体组合到单个布尔对象中。
交集
从原始对象之间的物理交集中创建一个“新”对象;移除未相交的体积。
差集
从原始对象中移除选定对象的体积。
合并
将对象组合到单个对象中,而不移除任何几何体。在相交对象的位置创建新边。
注: 在下图中,禁用显示属性背面消隐,以便所有边都可见。

左图:原始对象(长方体)和操作对象(小的长方体)

中图:并集运算;移除小长方体的部分。

右图:合集运算,在相交处显示新边

附加
将两个或多个单独的实体合并成单个布尔型对象,而不更改各实体的拓扑。实质上,操作对象在整个合并成的对象内仍为单独的元素。

长方体和球体基本体可通过附加(左)和并集(右)进行合并

插入
先从第一个操作对象减去第二个操作对象的边界体积,然后再组合这两个对象。

实际上,插入操作会将第一个操作对象视为液体体积,因此,如果插入的操作对象存在孔洞或存在使“液体”进入其体积的某些其他特征,则的确会将其视为液体体积。下图显示了此效果的示例,其中明暗处理的几何体在左侧而线框对应物在右侧。

一个已放入液体中的碗;如果碗上有洞或发生了倾斜,则液体会进入相应的空处。

注: 插入操作不会模拟液体的置换;第一个操作对象的整体尺寸保持不变。
盖印
将图形轮廓(或相交边)打印到原始网格对象上。

左:原始对象(长方体)和运算对象(文本)

中:标准差集运算

右:带有盖印的差集

注: 因为主运算选择对其没有影响,因此盖印运算的结果始终相同。
切面
切割原始网格图形的面,只影响这些面。选定运算对象的面未添加到布尔结果中。

1. 原始对象(长方体)和运算对象(球体)

2. 标准差集运算

3. 启用切面时的差集

4. 标准交集运算

5. 启用切面时的交集

“显示”组

选择下面一个显示模式。

  • 结果只显示布尔运算而非单个运算对象的结果。

    选择“结果”还将激活修改器堆栈中的 ProBoolean 层级。

  • 运算对象 显示定义布尔结果的运算对象。使用该模式编辑运算对象并修改结果。

    选择“操作对象”还将激活修改器堆栈中的“操作对象”层级。

    此外,当拾取许多运算对象时,使用此模式可避免每次重复计算该结果,然后在结束时将“显示”设置回“结果”。

“应用材质”组

选择下面一个材质应用模式:

  • 应用运算对象材质布尔运算产生的新面获取运算对象的材质。
  • 保留原始材质布尔运算产生的新面保留原始对象的材质。
“子对象运算”组

这些函数对在层次视图列表中高亮显示的运算对象进行运算(参见下面)。

注: 对于这些运算,不需要在修改器堆栈的“运算对象”子对象层级下进行。
提取所选对象
根据选择的单选按钮(移除、复制或实例化;参见下面),“提取所选对象”对在层次视图列表中高亮显示的运算对象应用运算。有以下三种提取模式:
  • 移除从布尔结果中移除在层次视图列表中高亮显示的运算对象。它本质上撤消了加到布尔对象中的高亮显示的运算对象。提取的每个运算对象都再次成为顶层对象。
  • 复制提取在层次视图列表中高亮显示的一个或多个运算对象的副本。原始的运算对象仍然是布尔运算结果的一部分。
  • 实例化提取在层次视图列表中高亮显示的一个或多个运算对象的一个实例。对提取的这个运算对象的后续修改也会修改原始的运算对象,因此会影响布尔对象。
重排运算对象
在层次视图列表中更改高亮显示的运算对象的顺序。将重排的运算对象移动到“重排运算对象”按钮旁边的文本字段中列出的位置。
更改运算
为高亮显示的运算对象更改运算类型(请参见“运算”组)。要更改运算类型,请高亮显示层次视图中的运算对象,并选择运算类型单选按钮选项,然后单击“更改运算”。
[层次视图]

在“参数”卷展栏底部的层次视图显示定义选定网格的所有布尔运算的列表。每次执行新的布尔运算时,3ds Max 都会向该列表中添加一个条目。

通过单击层次视图列表中要修改的运算对象将其高亮显示。要高亮显示列表中的多个连续项,请单击第一项,然后按住 Shift 键并单击最后一项。要高亮显示多个非连续条目,请按住 Ctrl 键并单击。要从列表条目中删除高亮显示的项,请按住 Alt 键并单击高亮显示的项。

在修改器堆栈的 ProBoolean 层级,可以只对高亮显示的项上执行子对象运。在“操作对象”子对象层级上,可以转换高亮显示的操作对象,并执行子对象操作;有关详细信息,请参见修改器堆栈

“高级选项”卷展栏

“更新”组

这些选项确定在进行更改后,何时在布尔对象上执行更新。选择下列选项之一:

  • 始终只要您更改了布尔对象,就会进行更新。
  • 手动仅在单击“更新”按钮后进行更新。
  • 仅限选定时不论何时,只要选定了布尔对象,就会进行更新。
  • 仅限渲染时仅在渲染或单击“更新”时才将更新应用于布尔对象。
更新
对布尔对象应用更改。除了“始终”外,可用于所有选项。
注: 当您首次在“手动”或“仅在渲染时”处于活动状态的情况下创建 ProCutter 对象时,只有在至少更新一次之后,才能看到运算对象(包括基础对象)。因此,基础对象是可见的,但再次更新之后,随后拾取的运算对象才可见。
百分数
从布尔对象中的多边形上移除边从而减少多边形数目的边百分比。例如,将“百分数”设置为 20.0 会将多边形的边移除 20%。

1. 消减 %=0.0

2. 消减 %=30.0

3. 消减 %=60.0

4. 消减 %=80.0

“四边形镶嵌”组

这些选项启用布尔对象的四边形镶嵌。这会使该对象适合于编辑细分曲面和平滑网格。它还会使该对象适合于转换为“可编辑多边形”格式。

有关此选项的进一步讨论,请参见主题四边形网格和平滑

设为四边形
启用时,会将布尔对象的镶嵌从三角形改为四边形。
注: 当启用“设为四边形”之后,对“百分数”设置没有影响。
四边形大小 %
确定四边形的大小作为总体布尔对象长度的百分比。
“移除平面上的边”组

此选项确定如何处理平面上的多边形。选择下列选项之一:

  • 全部移除移除一个面上的所有其他共面的边,这样该面本身将定义多边形。
  • 只移除不可见移除每个面上的不可见边。
  • 不移除边不移除边。