本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
使用 Boolean 的指定方式来组合两个几何体,或者用于找两个多边体之间的相交部分。
Ver 19.5
Boolean 的主要操作有:
输入的模型可以指定为 “实心(solid)”,或者是“表面(surface)”。处理的方法就是字面上的意思:当做实心体处理或者当成平面处理。
Boolean 的时候一定要确认输入端的几何体类型。测试中 polygon 与 polygon mesh 就不能很好的 boolean。
该操作只用于各种重合的、或者是同心的几何体(比如 box 套 box,自我相交的几何体之类的)。Custom 允许用户自定义 depth
来分离出指定的区域。
这里的 depth
指的是几何体内某一点要达到几何体最外部所需要穿过的 surface 的最少层数。下图是例子:
该模式会直接为几何体的相交部分创建一个组或者属性。
一般用于内部测试,也可以用于快速生成四面体(Tetrahedralize)。其效果与 Union 相同,但输出的是三角化的几何体和 surface。
在对 Solid 对象进行 Boolean 操作时,我们需要保证 Solid 的质量:
必须要强调的是最后一点:如果有该种类型的边存在,会导致算法错误判断 Solid 的外部和内部。当然,这种情况下 Houdini 会提供一个警告,警告中会描述出现问题的组。
有几种不同的方法可以可视化 Boolean 后的结果:
group-list
选项。Boolean 会对 points / vertex 属性进行插值操作,而对 primitive 属性进行复制操作。
因为 Boolean 采用浮点数进行计算,因此计算的结果永远是个近似值。因此,某些行为是没有必要的,比如试图将一个球体均分(将切割用的 plane 精确的放置到球体的“赤道” 上。)
同样因为精度问题,即便是上述的边对齐(看上去重合)了,这两条边之间也会有细小的缝隙。好消息是, Boolean 会自动将其修复。
Boolean 在处理拥有超高细节的几何体的过程中会出现一些未知的问题,尤其是我们连续使用不同的 Boolean 对几何体操作的时候。这种情况下因为精度问题很可能导致几何体与自身产生相交。如果出现了问题,我们可以通过两种方式来尝试修复:
Assume seam polygons are flat
选项关闭。Detriangulate
的选项为 Only unchanged polygons
。
技术上来说,精度的问题会导致非三角的 polygon 都不是平面(除非基于坐标)。因此先对输入的几何体进行三角面化是可以保证该几何体是“纯平”(perfect-flat)的。而在最后我们设置 Detriangulate
进行还原即可。
但三角化同时也带来一个副作用:会在我们想要“弄平”的几何体上产生一个小的“褶皱”。即便是我们最后对几何体去三角化,也会留下一个额外的点在“褶皱”处。这个问题可以通过 Assume seam polygons are flat
选项解决。
上述的问题是因为在实现上,Boolean 的精度是任意的。具体的说,Boolean 在创建输出的时候会当前几何体做一个“快照”。这个快照实际上做的工作就是保存了当前精度下几何体中 point 的信息(当前的精度是任意的),再将这些信息转化成了低精度的浮点数。而这种转化会导致几何体原有的随机精度覆盖掉浮点数的精度,而这种精度的改变会导致几何体自身与自身的相交(非常微小)。这种情况会在选项 Assume seam polygons are flat
开启的时候变得尤其明显;因此我们可以关闭该选项解决上述的问题。
Parameters | Usage |
---|---|
Remove self-intersections | 自动修复 surface 的穿模 / 重叠的问题。 |
Detriangulate | Boolean 会在开始将输入的几何体三角化。这个选项用于将三角化的几何体还原,以便匹配输入的源几何体。 |
Detriangulate:All Polygons | 通过合并相邻的三角面还原几何体。 |
Detriangulate:Only Unchanged Polygons | 如果输入的几何体没有被 Boolean 切割,那么还原该几何体(方法同上) |
Assume seam polygons are flat | 该选项会忽略去三角化(Detriangulate)过程中的精度差异。不过该差异会导致在 Boolean 处理高细节几何体的过程中出现自身相交()的问题,因此这种情况下最好关掉(当然关掉会导致输出的几何体中会有更多的三角面) |
Unique Points Along Seams | 沿着 seam 将几何体的 surface 切割成几个 polygon,每个 polygon 都有自己独立的 points。该选项可以用于防止处于 seam 范围的点属性的 blending。 |
Collapse tiny seam-adjacent edges | 因为精度问题,通常情况下我们是不能精准的对齐几何体的;而这种细微的差异会导致用于对齐的边之前会有缝隙,这将会导致输出的几何体会有额外的边。该选项可以自动合并对齐的边,防止上述问题的产生。(不推荐关闭) |
Edge length threshold | 边合并的最大距离,就像 distance 之于 fuse 一样。 |