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