今天我们来讲讲Grasshopper中的布尔。大家在大学刚开学,甚至更早的时候应该多多少少学习过编程的知识。不用担心我们今天不是讲脚本代码的,请大家回忆一下,我们应该都学习过在各种编程中的代码判定:
If A is X, then print True;Otherwise print False(这句英文是我编的例子,并非任何一种编程语言)
这句话的意思是,如果A是X的(比如你们的小黄人君是爱你们的),则输出True真。(否则的话,会输出False假)
这就是编程脚本中的逻辑判断部分。
其实在Grasshopper中也有类似的逻辑判断部分。接下来我们就一起认识一下:
这是一个非常常见的布尔开关。双击False则会编程True,双击True又会变成False。那么了解犀牛的人应该都听说过布尔,在实体相交的时候就有布尔的命令。
这里的布尔实际上和我们的Grasshopper所讲的布尔Boolean不太一样。我们在Grasshopper中所讲的布尔实际上就是一个逻辑判定,根据一种设置的条件来判定是否是True。但是本质上讲,Rhino的实体交错是这样运行的:
“他俩实体有交集吗?”——True——那么找出他俩交集。所以从这点判断来讲,还是类似的。
回到我们的Grasshopper的布尔值,我们需要知道布尔值无外乎就是True或者False。我们在什么时候会见到布尔值呢?
在这个简单的案例中,大家应该很容易就能理解中间运算器的意思了吧?即使我们没有讲解。中间的运算器是大于的意思,我们试着用第六课的方法来读取一下这个程序。输入端是5,输出端是是否为True的布尔值。那么很显然中间的部分应该就是操作手法了:“是否大于”的意思。很显然,5不大于5,所以输出为False;5的确大于等于5,所以输出为False*。
注:此处笔误,应为True,感谢群友Y指出。
如果你很轻松的理解了上边的这个案例,那么我们来一个稍微复杂一点的。假设我们的建筑外立面有5扇窗户,面积不同,我们需要面积小的做成白色,面积大的做成红色,阈值就定为500好了!这时候按照我们第六讲的思维翻译,我们来试着做一下这个程序。
首先我们需要有输入端拾取这五个窗户。操作手法部分,我们首先需要将这五个窗户的面积求出来,求出来之后判断是否大于500,根据大小关系输出True/False。然后我们需要有一个运算器自动把数据筛选出来,True一组,False一组。把True一组的,也就是大于500的,根据要求附上红色,False组的给白色。
整个程序如下图:
在这个图中,根据我们刚才的思路,我们很容易读懂这个程序。很显然,这个“m²”的运算器是用来输出面积的。实际上他可以求出任何面(平面,曲面)的面积(输出端A,Area)和中心(输出端C,Center)。我们再仔细看这个运算器的输入端,显示的是G,鼠标悬停以后显示应该输入Geometry,由此可见即使我们输入一个Box它也可以求出这个Box的面积,只不过会显示六个面的总面积,还会分别显示Box的体心。
接下来的大于号我们应该已经很熟悉了,进行逻辑判断得到True/False,所以下一个两个箭头分流的运算器的作用,按照我们刚才的思路,应该就是将True放在一组False分在另一组。这个运算器叫做Dispatch,是非常有用的运算器。我在《三分钟Grasshopper小讲堂》中也介绍了这个运算器。那么按照思路继续读程序,很显然A输出端是一组,B输出端是一组。但是究竟哪一组是False哪一组是True呢?我们还是用鼠标悬停法观察输出端A,发现输出的是True的结果。那么很显然B端就是False啦。
True,也就是说前边逻辑判断部分是真的,也就是说面积是大于500的,所以我们按照题目要求把他们附上颜色。但是要注意,我们目前画的都是窗户的边框,是没有“面”这个元素的。所以我们要把它封面。于是下边的运算器一定是封面运算器了,它的名字叫做Boundary Surface。
封面之后给面颜色。很显然之后的运算器是和上颜色有关的。大家依旧可以用悬停方法来看输入端和输出端,发现最后一个运算器(Preview,用来显示颜色)的输入端是Geometry和Shader(着色器),那么我们已经可以猜到,我们应当把需要上色的几何体输入G输入端,把颜色输入到S输入端。那么S的颜色自然应该来自于一种能够设置颜色的运算器。Grasshopper中能够设置颜色的运算器有很多,我们用最简单的Color Swatch做示范。同时我们都知道颜色制式有RGB和CMYK,所以我们也可以根据CMYK和RGB的数值设置颜色。事实上,Grasshopper为我们提供了很多很多种颜色运算器供大家使用。大家可以在Params的Input标签下找到,也可以在Display的Color标签下找到。
那么有人会问,请问小黄人君,我怎么看不出它和我方案的联系呢?只是附一个颜色实在是太Low了。我想说的是,这里讲的重点不是附颜色,而是如何将杂乱无章的一大堆物体按照一定的规则筛选出来。事实上我们可以再次设定“操作手法”让其复杂化,比如面积小于250的,250-500的,500-750的,750-1000的(具体怎么做你们能想得到吗?作为作业请大家做一下吧)。这个窗户面积可以是根据日照来开的,当然根据日照开渐变的窗户我们要到后边才讲。但是大家应该明白,方法就是这样的方法,有的人可以做出很棒的设计,是因为他们更会举一反三。
再举一个例子,我们将窗户面积分组以后,不但可以附上不同的颜色,还可以做不同的窗花纹理装饰。我们的窗户大小是根据日照进行渐变的,而我们窗户上的装饰也是根据窗户面积,也就是日照情况进行变化的,这样你的设计将会丰富很多。
接着回到刚才的话题,从颜色中我们可以看出Grasshopper的超级人性化。那么既然讲到了m²,我们用脚趾头应该都能猜到,有算平面面积的运算器m²,肯定还有算立体几何的体积的。那么很可能他的图标是m³对吧?它的输入端应该也是G,输出端应该可以输出形心,也可以输出V(Volume)体积。没错,就是它啦!事实上,m²和m³排列都是挨在一起的。所以说Grasshopper真的是很人性化,同时这也为我们带来了很大的好处,那就是类似的运算器我们只用讲解一两个即可,大家触类旁通举一反三可以很快的明白其余相关的运算器。所以说四百多个运算器,把常用的拿出来讲解,配上案例,其实比大家想的快得多。
最后,我将Grasshopper的Color输入部分的运算器都放在了随案例的gh文件里供大家学习。还记得如何查阅运算器的位置吗?Ctrl+Alt+鼠标左键单击不放即可看到它的位置。
那么我们今天就讲解到这里。Dispatch是非常有用的运算器,希望大家可以好好复习今天所讲解的知识。
爱你们的小黄人君
DanielJin
———————————————————————————————————————————————————————
本文所有内容版权均属于作者所有
欢迎您扫描下方二维码关注小黄人君的微信公众账号
交流学习