grasshopper作为嵌入rhino的可视化编程界面,对于模型的建立及分析具有极大的帮助。本文旨在通过一些案例简略地介绍grasshopper的操作流程及使用方法。
grasshopper作为一款免费的rhino插件,可以从grasshopper的官网下载。
(https://www.grasshopper3d.com/)
grasshopper的启动
本例中,我们将用参数化的方法绘制两个点之间的直线。首先,我们利用rhino自带的point命令输入两个点作为我们的输入数据。
当grasshopper安装完成后,可以在rhino的命令行输入“grasshopper”来启动grasshopper的界面。
grasshopper的界面
grasshopper的界面如上图所示:
(1)标题栏。同其他软件一样,标题栏显示当前打开状态的文件名称。双击标题栏时,窗口可缩小至仅剩标题栏的状态。
(2)主菜单栏。软件的功能相关按钮都在主菜单栏内。
(3)运算器选项卡。运算器面板中的各个命令根据功能被归类到了各个选项卡内。
(4)运算器面板。选项板是各项命令的分类。单击选项板右下角的三角形,可以查看该选项板的所有命令。
(5)工作区工具栏。工具栏内包含几个命令,能够快捷地保存或者打开文件等。
(6)工作区。这是主要的编程运算区域。
(7)当前文件矩阵。第一次打开grasshopper时,这个区域是不存在的。它们可以帮助你快速地打开原有的文件。
(8)状态栏。显示一些有用的信息。
grasshopper文件可以通过file菜单进行打开及保存。grasshopper文件时独立于rhino文件存在的,因此需要同时保存rhino文件及grasshopper文件。
在view菜单栏下,打开‘obscure components’可以打开隐藏的运算器面板中的命令按钮。这个选项避免了初学者无法找到想要的命令,但是也是找命令的过程更加的漫长。
在display菜单栏下,打开“draw icon”可以使得工作区范围内函数的显示方式发生改变。使用者可以根据个人喜好作出更改。
grasshopper的基本操作
第一步是在grasshopper中读取我们在rhino中建立的两个点,使他能够成为能够在grasshopper中使用的对象。为了达到这个目的,需要选中params选项板geometry分组中的点参数组建,置于工作区。左键选中图标,再左键点选工作区的任意位置,即可完成操作。
以上是调用点组建的一种方法。另一种方法是双击工作区,并输入组建的名称。输入过程中,会显示一系列的建议组建选项,选中point即可。
第二步是关联rhino中的点和grasshopper中的点组件。之前添加的点组件的作用是储存点的数据的。当加入点组件时,没有数据是被指定于组件之上的。此时,组件显示的是橙色,表示当前未被使用,或者无数据关联。
关联数据需要现右键选中需要关联的组件,点击“set one point”。再到rhino的画布中选中需要选择的点。
当数据关联后,组件颜色由橙色变成灰色。
重复操作以上步骤,关联另外一个点。
操作完成后,可以发现两个小X出现在了两个指定过的点之上。这代表了这两个点也存在于grasshopper模型中。当左键选中其中的一个组件,组件由灰色编程了绿色,同时rhino画布中的X也变成了绿色。通过这样的操作,可以识别grasshopper与rhino中的数据点之间的关联。
第三步是在grasshopper中建立数据流。在点指定后,可以在grasshopper中根据定义的点绘制直线。选中primitive选项卡中的curve图标,左键单击后在工作区添加。
直线组件比点组件有更多的属性。点组件只储存一组数据,而直线组件涵盖了一个读入点数据,输出直线的过程。组件的左侧是两个名为A和B的输入项,输出项显示于右侧,由L表示了一根直线。当鼠标悬停于这些名称上时,会有相关的提示说明。
A和B分别是直线的起点和终点。直线组件的输入项可以通过之前定义的点组件形成。为连接组件,将鼠标悬浮于点组件右侧的小圆圈处,按住左键并移动到A左侧的小圆圈处并释放。完成操作后发现一个一条曲线出现在了需要连接的数据之间。点就成为了line组件的一个输入项。
重复以上操作,关联另外一个点,直线组件由橙色变成了灰色,同时在rhino的画布上出现了一条红色的直线。此时,通过grasshopper建立的直线就完成了。
grasshopper使你能够通过流程图的方式来定义并建立一个参数化的模型,如果你可以绘制一个流程图,那么你就可以使用grasshopper。
所有的组件都按照以上的方式进行运作。左侧为输入项,右侧为输出项。点击和拖动鼠标来建立输入项与输出项之间的联系。数据就通过这样的联系流动了起来。
上述例子中,仅仅通过grasshopper绘制了一条线。这并不十分有用,因为我们可以很简单地通过rhino本身来实现这一步。但是grasshopper的强大在于它可以将多个不同的操作串联起来。
为了证明grasshopper的功能,我们利用line命令产生的结果,通过surface/freedom中的pipe组件来创建一个圆管。只需将line组件的L与pipe组件的C连接起来。
pipe组件中的C选项是将要建立的圆管的中心线。rhino界面中可以看到圆管形成的效果。当移动其中的某个点,圆管的走向也随之发生变化。
这就是grasshopper功能的强大之处。当改变一个输入项时,与之关联的输出项也随之发生变化。之前定义的运算过程会自动运行,使模型自动更新。从而节省了重新建模繁复的工作量。
通过拥有成百上千组件的复杂操作流程,我们可以仅仅利用几个参数,来控制整个建筑的形态。
仅通过line组件生成的结果,忽略其中的R,E输入项,pipe组件已能够运行生成圆管。因为R,E输入项都有默认值。通过将鼠标悬停于上部,可以查看默认值的定义。R是圆管的半径,E来定义圆管端部的形状。
我们可以通过params/input中的number slider来定义圆管的半径。将它置于工作区,连接它与R,同时滑动滑块,可以定义圆管的半径。
这是一个输入组建,通过滑动滑块,来定义输入数据的大小。如果要修改它的最小值和最大值,右键滑块并选中edit,就可以显示控制滑块参数的窗口。
grasshopper拥有许多不同的组件使你能够方便地修改不同的数据。目前为止,我们已经完成了这个例子的操作。但是利用这个模型,我们可以探究grasshopper的其他方面。
几何形状预览
也许你已经发现利用grasshopper建立的这根透明圆管有一些奇怪的特点。你不能选中它,你也不能再rhino中保存它,如果你点击render按钮,它无法显示。这是因为在rhino中并没有实际的图形存在,这只是一个grasshopper绘制的预览的图形。
如果你想关闭预览功能。譬如说在生成圆管之后,你想关闭其中直线的预览。只需右键选中直线组件,选中preview按钮。
此时,相关联的几何图形就被隐藏了起来。组件也因此变得更灰。
通过单击工作区右上角的按钮,我们可以关闭所有grasshopper生成的预览。
生成
为了将grasshopper预览生成的图形创建到rhino中,我们需要将它生成(Bake)。右键单击我们希望创建图形的组件,单击Bake。此时会出现一个属性框,可以定义所生成的图形的属性,诸如图层等。单击OK生成图形。
此时,生成的图形就可以被编辑,删除,移动,导出等。这个图形与所有其他的在rhino中创建的图形都相同。需要注意的是,当图形创建完成后,grasshopper与rhino中的图形之间的连接就消失了。如果改变grasshopper中的参数,改变的形状就不会体现在已经Baker过的图形上。如果需要建立一个不同参数的几何图形,需要打开grasshopper然后修改相关参数,重新Bake。出于这个原因,通过grasshopper生成的图形宜设置在特定的图层上,方便删除或编辑。
数据匹配
grasshopper的一个优势是几何图形可以参数化地连接并自动更新。另一个优势是只要过程被定义了,过程可以利用多个不同的参数不停地运算。
区别于单纯地连接两个节点,我们现在用多个节点来生成多个圆管。首先我们在rhino利用point命令再建立四个节点。使节点总数达到六个。
右键节点组件,单击set one point按钮之下的set multiple points,选中希望设置在圆管起点的三个点。点击鼠标右键完成操作。
这步操作会使之前定义在节点上的数据产生更新。此时节点组件包含了多个节点的数据。这些数据都会通过流程自动更新,因此预览图形中出现了三根圆管,起点分别为之前选中的三个节点,终点仍为之前定义的终点。这说明起点节点组件中的一个列表取代了之前定义的单个界定啊数据。
重复之前的操作,在终点组件定义三个点。
此时,我们同时拥有三个起点和三个终点。因此,根据之前的流程,我们分别得到了三根直线和三根圆管。或许你会期待会预览图中会同时产生九根直线和圆管,每个起点都对应三个终点。但是grasshopper自动将节点分组,使节点配对,在每个节点对之间只有一个圆管。grasshopper的这个机制被称为数据匹配。这是使用grasshopper中的一个非常重要的概念。
当一个组件拥有多个数据同时输入时,grasshopper会决定哪个数据率先使用,并运行相关路径。为了判定哪些数据会共同使用,grasshopper制定了以下两条规则:
(1)当输入数据有两个或多个数组,每个数组中数据的个数相同时,每个数组中相同位置的数据会被共同使用。
所以第一个数组中的第一个数据会和第二个数组中的第二个匹配,第一个数组中的第二个数据会和第二个数组中的第二个匹配,以此类推。
如图所示,假设有两个数组,第一个数组中有A,B,C,D和E。第二个数组中有F,G,H,I和J。数据匹配会按A-F,B-G,CH,D-I和E-J的方式匹配。
所以数据在数组中的顺序是十分重要的。而此处节点选取的顺序即为数组排列的顺序。
这在数组长度相同时特别有效,但是数组长度不同时呢?
(2)当一个数组长度小于另一个数组时,较短数组的最后一个数据会和另一个数组余下的所有数据匹配。
grasshopper会重复使用较短数组的最后一个数据。如果减少了上图数组2中的I和J两个数据,那么数据匹配的结果就会变成A-F,B-G,C-H,D-H,E-H.H与C之后的三个数据作匹配。
我们可以查看当终点的节点组件重新定义为两个节点,起点仍为三个节点的情况。
起点的后两点都同时连接到终点的第二点。
这样的特性适用于其他类型的数据,不只限于点和线。这就说明我们可以利用这样的特性定义不同圆管的半径。
定义第二个number slider,将它连接至圆管组件中的R。这步操作会改变原来的number slider在过程中的作用。
R选项在此时是一组数列。包含了两个number slider的数值。先前设置的number slider控制了第一根圆管,而之后定义的number slider控制着后两根圆管。
总结
通过以上操作,你已经掌握了grasshopper初步使用时的基本概念。当然我们还有许多需要学习的内容。grasshopper中提供了成百上千不同的组件可供使用。数据也在不同的维度进行传递,使数据匹配更为繁复,但他们的基本原则都依据我们之前阐述的内容。
了解它能实现哪些功能,并掌控数据在不同组件中流动的过程以达到你想达到的结果,是使自己变得更为熟练的必要途径。开始阶段最好的训练方式是选择一些你想建立的模型,思考基本的建模途径并在grasshopper中实现它。
下载grasshopper请在公众号中回复“gh”
转自:非解构-公众号
理查德·罗杰斯:建筑更像是用来融合社会、经济、人文和艺术的工具
关注我们: