布尔复合对象

布尔对象可以通过对两个或更多对象执行布尔操作,将其合并到单个网格中。

提示: 您也可以使用 ProBoolean 创建复合对象,它有备用的工作流和一些其他选项。但是,对于大多数用途,新的双精度布尔算法提供了精确装配复合对象的最强大、最直观的方法。

界面

“布尔参数”卷展栏

操作对象及其操作图标示例

“添加操作对象”按钮
从视口或场景资源管理器中单击可将操作对象添加到复合对象。
“操作对象”列表
显示复合对象的操作对象。彩色图标显示当前布尔操作,如“操作对象参数”卷展栏中所示。通过单击眼睛图标可以打开和关闭每个操作对象的可见性。

可以右键单击操作对象来访问以下命令:“移除操作对象”、“创建新的布尔”、“重命名”、“禁用”和“单放”。使用“创建新的布尔”可在复合对象内创建子布尔。

移除操作对象
将所选操作对象从复合对象中移除。
打开布尔操作资源管理器
打开“布尔操作资源管理器”窗口。有关详细信息,请参见布尔操作资源管理器

“操作对象参数”卷展栏

并集
结合两个对象的体积。几何体的相交部分或重叠部分会被丢弃。应用了“并集”的操作对象在视口中显示时会以绿色标出其轮廓。

并集操作

相交
使两个原始对象共同的重叠体积相交。剩余几何体会被丢弃。应用了“相交”的操作对象在视口中显示时会以黄色标出其轮廓。

相交操作

差集
从基础(最初选定)对象移除相交的体积。该操作也称为“差集”。应用了“差集”的操作对象在视口中显示时会以蓝色标出其轮廓。

差集操作

合并
使两个网格相交并组合,而不移除任何原始多边形。在相交对象的位置创建新边。对于需要有选择地移除网格的某些部分的情况,这可能很有用。应用了“合并”的操作对象在视口中显示时会以紫色标出其轮廓。
附加
将多个对象合并成一个对象,而不影响各对象的拓扑;各对象实质上是复合对象中的独立元素。应用了“附加”的操作对象在视口中显示时会以橙色标出其轮廓。
插入
从操作对象 A(当前结果)减去操作对象 B(新添加的操作对象)的边界图形,操作对象 B 的图形不受此操作的影响。应用了“插入”的操作对象在视口中显示时会以红色标出其轮廓。

实际上,“插入”操作会将第一个操作对象视为液体体积,因此,如果插入的操作对象存在孔洞或存在使“液体”进入其体积的某些其他途经,则的确会将其视为液体体积。

盖印
启用此选项可在操作对象与原始网格之间插入(盖印)相交边,而不移除或添加面。“盖印”只分割面,并将新边添加到基础(最初选定)对象的网格中。

启用了“盖印”的并集操作

切面
启用“饼切”选项可执行指定的布尔操作,但不会将操作对象的面添加到原始网格中。选定运算对象的面未添加到布尔结果中。可以使用该选项在网格中剪切一个洞,或获取网格在另一对象内部的部分。
注: 一旦对布尔对象执行了饼切操作,网格将不再是闭合的复合型网格或“无间隙”网格。后续操作将遵循打开没有内部或外部的复合型网格的规则。
提示: 对某个操作对象启用“切面”也会将该选项应用于“操作对象”列表中该操作对象下面的任何操作对象。要删除不需要的裁切,您可以将启用了“切面”的操作对象拖动到列表底部。

启用了“切面”的并集操作

“材质”组

应用操作对象材质
将已添加操作对象的材质应用于整个复合对象。
保留原始材质
保留应用到复合对象的现有材质。

“显示”组

结果
显示布尔操作的最终结果。
操作对象
显示没有执行布尔操作的操作对象。操作对象的轮廓会以一种显示当前所执行布尔操作的颜色标出。
选定的操作对象
显示选定的操作对象。操作对象的轮廓会以一种显示当前所执行布尔操作的颜色标出。
显示为明暗处理
如果启用,则在视口中会显示已明暗处理的操作对象。此选项会关闭颜色编码显示。

过程

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

  1. 在视口中根据需要创建并合并源对象。
  2. 选择基础对象。
  3. 单击“布尔”。操作对象的名称会显示在“布尔参数”卷展栏的“操作对象”列表中。
  4. 在“布尔参数”卷展栏中,单击“添加操作对象”按钮从视口或场景资源管理器中选择另一个对象以添加到复合对象。
  5. 在“参数”卷展栏上,选择要执行的布尔操作:“并集”、“交集”、“差集”、“合并”、“附加”或“插入”,并启用“盖印”或“切面”选项(如果需要)。
  6. 操作对象保留为布尔对象的子对象。双击该子对象以更改参数并使用变换工具。通过修改布尔操作对象子对象的创建参数,可以随时更改操作对象几何体,以便更改布尔结果或设置布尔结果的动画。

要创建和修改包含多个操作对象的单个复合对象,执行以下操作:

    在此示例中,创建一个剪切了两个孔的长方体:一个孔用球体剪切,另一个孔用圆柱体剪切。为了以后能够更改球体或圆柱体,将使用以下步骤集合复合对象:

  1. 按照上述步骤创建布尔复合对象。将原始对象(长方体)转换为布尔对象,并指定为基础对象。
  2. 取消选择布尔对象。创建和放置球体(如果尚未就位)。
  3. 选择布尔对象。单击 以显示“修改”面板;或在“复合对象”下再次单击“布尔”。
  4. 单击“添加操作对象”,然后在视口或场景资源管理器中单击球体。
  5. 取消选择布尔对象。创建和放置圆柱体(如果尚未就位)。
  6. 选择布尔对象。单击 以显示“修改”面板;或在“复合对象”下再次单击“布尔”。
  7. 单击“添加操作对象”,然后在视口或场景资源管理器中单击圆柱体。
  8. 如果要修改球体的参数,请在“操作对象”列表中选择长方体。
  9. 现在,堆栈显示中有两个标有“布尔”的项。选择下面一项。“球体”显示在“操作对象”列表中。
  10. 从“操作对象”中选择“球体”。在修改器堆栈显示中双击球体的名称,即可查看球体的参数。您可以更改参数,使用变换工具,或设置布尔复合对象内任意操作对象的动画。

布尔和材质

当创建布尔对象时,材质将继承自原始网格。

如果您随后添加操作对象,则可以选择使用操作对象的原始材质,或保留来自布尔复合对象的材质。如果选择“保留原始材质”,则材质 ID 将匹配。但是,如果选择“应用操作对象材质”,则已添加操作对象的材质 ID 将不同于原始布尔网格。

仅当您添加操作对象时,才指定的材质 ID。一旦操作对象添加到布尔网格内,就无法更改材质 ID。但是,在添加操作对象后,您可以转到材质编辑器,并从布尔对象获得材质。请注意,这是一个多维子对象材质。更改原始网格上的材质也将影响布尔网格材质。

使用布尔的最佳实践

某些几何体有时会在布尔算法中导致不可预知的结果。要限制这种可能性,请尝试遵循下面所述的做法。

表面拓扑

布尔要求操作对象的表面拓扑完好无缺。这意味着,不得有缺失或重叠的面,也不得有未焊接的顶点。表面应当连续且封闭。

布尔算法将尝试更正无法满足此要求的操作对象,但是,结果可能并不总是可取的,在某些情况下最好手动更正表面。

要检查几何体中的洞,请使用 “STL 检查”修改器测量工具。要填充洞,请使用“补洞”修改器

面法线

曲面的面法线应始终是一致的,因为翻转法线可能会产生意外的结果。曲面朝向一个方向而相邻曲面发生翻转也可能存在问题,这是从 CAD 程序导入的几何体的常见问题。布尔算法会试图修正面,但是,在某些情况下最好手动更正这些面。

要查找法线问题,请在视口中打开“明暗处理”,注意出现内部外翻或不正确的对象。还可以在“可编辑网格 (曲面)”“曲面属性”卷展栏 “法线”组中启用“显示”。可以在此修正法线,或使用法线修改器

平面

网格应该构建成所有面都是平的,这意味着一个面中使用的每个顶点都位于同一平面中。扭曲成非平面形状的面(例如薯片)可能会导致布尔错误。虽然布尔算法会尝试在应用操作时将这些面分割为平面部分,但是建模时最好避免此类结构,否则可能会出现不想要的结果。

重叠元素

由于布尔操作取决于对网格内部与外部内容的充分了解,因此,重叠的网格本身会产生无效的结果。例如,如果在不启用布尔功能的情况下对两个重叠对象使用“折叠”工具,则所获得的对象不会产生好的布尔操作对象。对于自身重叠的茶壶基本体(所有部分均已启用)而言,这也是个问题。

如果必须使用此类对象作为布尔操作对象,则可以将组件分离并使用布尔操作进行组合,以将其重新构造为单个不重叠的网格。

使用反向网格

对于“反向网格”(即,网格由于法线翻转而变得内部外翻),布尔操作并不总是产生理想的结果。问题在于,翻转网格内部的区域被正确地视为“外部”,但其外部区域也被视为“外部”。要修正此问题,不应反转网格,而是应生成一个非常大的长方体或其他以网格为中心(但不要接触)的基本体,并使用布尔操作从该几何体中减去网格。将结果转化为可编辑的网格,并删除长方体的面。这将产生与布尔操作兼容的正确反转网格。

对齐问题

如果两个布尔操作对象完全对齐但实际上并未相交,则布尔操作可能会产生错误的结果。虽然此错误很少出现,但是您可以通过使操作对象稍稍重叠来更正此问题。

保持操作对象之间的相对复杂性

当两个操作对象的复杂性比较接近时,布尔操作的效果最佳。例如,如果在没有任何分段的长方体中减去文本(一种由许多面和顶点构成的复杂对象),则获得的结果是许多很容易产生渲染错误的细长的面。增加长方体分段的数量可使结果变好。应尽量使操作对象的复杂性接近。

共面面/共线边

以前版本的布尔算法要求对象重叠。如果两个对象不重叠,而仅仅是边与边或面与面接触,则布尔操作将失败。

布尔算法现在允许不重叠的对象。重合面/边和顶点不再成为问题。您甚至可以使用完全被另一个对象所包围、二者根本没有相交边的对象,来创建布尔复合对象。

另请参见塌陷实用程序,以使用多个对象创建布尔复合对象。

缩放运算对象

建议避免缩放布尔操作的第一个运算对象,因为这可能会导致随后添加的运算对象发生不可预测的缩放。