布尔运算疑难排解

布尔运算指令也可以用于曲面以及开放的多重曲面,运算结果取决于物件法线的方向。使用 Dir 指令可以查看方向。如果布尔运算的结果与您期望的相反,您可以使用 DirFlip 指令反转曲面方向,然后重试。

操作之前先尝试使用 Join 指令组合曲面。

网格物件的操作步骤与 NURBS 布尔运算的步骤是一样的。

无论输入物件是什么类型,指令执行结果总会输出一个网格。

为什么布尔运算会失败?

布尔运算失败有以下原因:

曲面法线

布尔运算使用曲面法线方向决定保留和丢弃的部分。当您执行布尔差集结果却得到了布尔联集的结果,或者执行布尔联集却得到了布尔差集的结果,都是因为物件的方向与您期望的是相反的,如果一个或多个物件没有完全闭合,也会发生这种情况,这是因为 Rhino 无法确定未闭合物件哪边才是物件的外面,您可以使用 Dir 指令查看物件的法线方向,然后通过反转选项更改物件的法线方向。完全闭合的物件在未反转法线之前,法线都是指向外面的。

控制点汇集

控制点汇集是指多个控制点重叠在曲面边缘上的同一个位置。在 Rhino 中,圆锥体的顶点、球体的两极、三个边的未修剪曲面上都有控制点汇集,手动将控制点移动到同一个位置也可以形成控制点汇集。

当两个要做布尔运算的物件相交位置附近有控制点汇集时,会形成几何上的“奇点”,这种情况可能导致布尔运算失败。

曲面重叠

曲面重叠指两个曲面的某些部分共用同一个区域。在这个例子中,两个立方体表面靠在一起,物件只能做联集运算,不能做差集交集运算。

非流形的边缘

除了重叠曲面之外,非流形边缘也会导致失败。

被三个或以上网格面或曲面共用的边缘称为非流形边缘。


图中是以 ShowEdges 指令高亮显示的多重曲面的非流形边缘。

如何操作

如果无法执行布尔运算,可以通过其他方式获得想要的结果。

在这个例子中,锥体的顶点正好在立方体的角上,这是可能导致布尔运算失败的情况之一。

在这个案例中,作为布尔运算的替代方案,使用 Explode 指令将多重曲面炸开为数个单一曲面,使用 Intersect 指令在相交的两个曲面上求交线,使用交线修剪分割曲面,去除不要的部分然后再将需要的部分组合在一起。

请参考

Rhino Wiki: Boolean FAQ

 

 

 

Rhinoceros 7 © 2010-2022 Robert McNeel & Associates. 29-4月-2022