布尔主要包括两种操作,分别是Fusion(布尔并和布尔减)和Intersection(布尔交),在布尔时,参与布尔的几何体会被抹除原有的颜色信息。因此需要重新设置颜色。

2.5.1 布尔并与布尔减

在新版的参数化组件中,布尔并与布尔减可以用加号“+”和减号“-”来表示。

注意,新版的布尔并与布尔减有新的规则,但对之前的方式仍然完全兼容。

布尔并

示例:

    # 融合(布尔并与布尔减)
    testa = translation(100,100,0) * scale(1000,300,500) * Cube().color(1,0,0,1)
    testb = translation(0,0,0) * scale(1000,300,500) * Cube().color(0,1,0,1)
    testFusion = testa+testb

图2.4.1-2

布尔减

示例:

    # 融合(布尔并与布尔减)
    testa = translation(100,100,0) * scale(1000,300,500) * Cube().color(1,0,0,1)
    testb = translation(0,0,0) * scale(1000,300,500) * Cube().color(0,1,0,1)
    testFusion = testa-testb

图2.4.1-3

2.5.2 布尔交

函数:Intersect

Intersect中可以装填多个几何体,最终生成所有几何体的“交集”。

    testa = translation(100,100,0) * scale(1000,300,500) * Cube().color(1,0,0,1)
    testb = translation(0,0,0) * scale(1000,300,500) * Cube().color(0,1,0,1)
    testFusion = Intersect(testa,testb)

图2.4.2-1

2.5.3 组合 Combine

组合不同于布尔,组合时并不会将两个几何体重叠的部分进行处理,同时,颜色信息也不会被抹除。如果对组合后的模型赋予颜色,那combine中的所有几何体都会变为该颜色。

示例:

    testa = translation(100,100,0) * scale(1000,300,500) * Cube().color(1,0,0,1)
    testb = translation(0,0,0) * scale(1000,300,500) * Cube().color(0,1,0,1)
    TestCombine = combine(testa,testb)

图2.4.3-1