05.Grasshopper的建模思维及如何读懂Grasshopper程序

 

今天我们来讲一下Grasshopper的建模思维和如何读懂Grasshopper的程序图。我曾经提到过,Grasshopper最难的部分不在于命令,而是在于建模的思维和树形数据。树形数据的知识我们随后根据实际按理来进行讲解。

为什么我们要着重讲解一下建模思维呢?换句话说,建模这东西还有思维吗?——当然有!我们现在回想一下大家用Sketch Up建模的时候,一般都是怎么做的呢?

  • 拿着手画的没问题的平面
  • 拿着左抄右抄的老师说没问题的立面形式
  • 平面建好了以后,pull出墙壁
  • 立面加一些装饰元素,OK大功告成。

而Grasshopper的建模和大家绝大多数体验都不一样,且根本没有可比性。Grasshopper作为一个“建模过程可视化”的逻辑建模软件,它建“模”实际上建的是建模的“过程”。如同用SU,我们画了一个方盒子。而Grasshopper更倾向于记录下你用SU画这个方盒子的“过程”:

  • 选择一个基点
  • 设置长宽高,生成一个矩形
  • 矩形封面,变成surface
  • Pull(推出)这个面,得到一个Box
  • 输出这个Box

 

由于Grasshopper建模实际过程是建立“模型生成过程”,那么Grasshopper,或者说参数化建模的一个大好处就出现了:可修改性。

对于SU,Rhino等建模软件来说,模型一旦生成了,也就生成了。即使可以用组件去修改,微调,如果想要大规模的进行修改还是要人工花费很大的时间和精力的。但是由于Grasshopper的建模是“过程”的记录,我们只需要将需要修改的过程步骤进行修改调整即可。对于模型这个“结果”,则会根据修改后的过程进行再次运算,重新生成结果。由于Grasshopper只记录过程,所以gh文件相当小。

下面我为大家提供一下刚才模拟SU中Box建模步骤的Grasshopper程序图。大家可以先体会一下Grasshopper逻辑的发展顺序。

图片1

Grasshopper的逻辑程序图。在这张图中,我们可以很容易看出来整个建模过程被分为了点→线→面→体四个主要步骤。实际上有很多程序的建模部分都是这四个大框架,很多时候初学的朋友们可以多运用辅助控制点,辅助线来进行建模。当然随着程序复杂以后大家还会看到逻辑判断部分等等。作为初学者的朋友们,能够练习从gh文件中找出这四个大框架,然后利用我们之前讲解的Group功能进行标记,学会读程序,后期进步就会很快了!

图片2

还是这个程序,在这个图中我们可以看到整个程序拥有黄色方块内两个自变量。什么叫做自变量(人为变量)呢?就是在建模逻辑不变的情况下,我们可以通过调节自变量来调节整个建筑的一些参数,比如长宽高,或者后期的渐变/干扰系数;但是我们无法使整个模型的生成逻辑改变。蓝色方框内输出的则是挤出的Box,我们叫结果。通常一个好的程序判断标准是电池足够优化(尽量少绕弯子)。这一点就是建模思维的事儿,很多时候一步就可以求出来的辅助线用了好多步,自然就不够优化。另外一个标准就是尽量少的自变量。我们学习Grasshopper的最终目的是利用尽可能少的数据来统领整个程序,做到“牵一发而动全身”。当然实际情况要复杂得多,在做设计的时候我们需要按照实际情况尽可能用相对应数量的自变量来模拟客观条件,比如阳光和道路红线就需要我们设置两个自变量。如上图,正方体Box的长宽高都为10,那么我们应该将左边的10直接输入到右边的黄框里,这样才是最佳程序。但是如果题目规定了只是一个立方体而不一定是正方体,上边程序就需要对立方体的x,y,z进行分别的控制,也就是说两个黄框自变量应该变成三个才更加符合客观需求。

 

通过刚才的介绍,朋友们应该已经体会到了读程序的重要性了。通过不断读程序图,我们可以更快的理解建模逻辑,同时发现很多有意思的运算器“串联”用法——比如当我们需要做干扰渐变的时候应该运用什么样的运算器组合——能够快速反应出来然后找到运算器并且按照先后顺序进行连接,这样我们使用Grasshopper才能足够高效。这部分内容我们将会主要在中级篇——建筑篇中进行讲解。

 

上边讲解了如何读懂Grasshopper程序图,接下来我们继续说说Grasshopper的建模思维。上边提到过,Grasshopper实际上是将一些建模“过程”通过电池给图像化表示的一个建模软件。其中一个个电池又是对于编程脚本的打包,然后做成电池样子进行可视化处理,这样大家就不必学习晦涩难懂的计算机编程语言的语法和结构了。那么对于建模软件的转换,或者说建模实质的转换(从建立模型到建立过程)我们的建模思维也应该有一个较大的转换才对。具体是怎么个转换方式呢?

 

对于一个模型,我们看到以后应该首先看到最开始的部分——一个点,一根线,一个面。正是这些基础部分的内容,通过一系列操作过程变成了最终的输出结果(也就是你看到的模型)。那么我们掐头去尾,则程序的中间部分,(也就是我们主要用来建模,编软件的部分)应该是整个建模过程中的操作手法了。所以我们要分析这个模型是怎么从最开始的一个点或一根线一个面,逐渐通过什么手法变成了最后的结果模型了呢?有了这个分析,我们只要按照分析得出的步骤来把相关电池一个一个拉出来即可。当然中间肯定有数据处理的问题,但至少思路没有错,程序就完成了一半;剩余的工作就是处理各种数据结构的事儿了。

 

我们引入一个小的案例——根据阳光高度自动打开闭合的遮阳板模型。

当然,由于我们下节课才开始讲运算器,所以我知道你们都看不懂这是在干嘛…我用这个案例是为了说明“人类语言”翻译成“GH语言”,仅此而已。具体做法我们会在后边的案例中细讲。

 

我们知道,计算机语言作为一种语言和英语一样,对于讲中文的我们需要翻译的工作才能理解。举个例子来说,if Daniel 很帅, then print 1, End if, 然后我们看到了计算机输出了大大的1…….
那么再举一个例子,我们如果用了SU建模,通常来说在团队项目中是建细的模型之后拼合成大模型,又或者是先画面,然后pull墙,正如我们一开始讲的那样。用犀牛建模则是通过点,线,放样等步骤生成建筑体块,然后通过一些线面的trim得到细部。这就是建模思路的不同。
Grasshopper作为建模软件,他也有着自己独特的语言,并且很开心的是,这种语言与我们讲的大白话是如此接近!因此这后半篇教程将告诉大家如何进行建模思维的组织。

现在如果由你来做这个模型你会怎么做呢?我们分别把步骤写下来,和我的步骤对照一下,然后想办法找类似的运算器去表达出我们的步骤,意图。这也就是Grasshopper的建模思路。当然,你们可以以SU或者你们最擅长的建模软件的步骤去写,最后大家会发现,Grasshopper的步骤绝对是最接近大白话的那一个。

 

由于大家对运算器还不太理解,我直接向大家讲解当时我建模时候的步骤。

  • 先把两遮阳板的8个顶点做出来(看到了吗?这又是一个活生生的从点出发的例子)
  • 做出两侧滑轨的轨迹(没错,点完了以后就是线)
  • 生成遮阳板(面部分)
  • 接下来就要做操作部分了,大家还没有学习运算器,所以我尽可能简单的过一遍。接下来我是将生成的遮阳板面做成了可旋转的面;很简单,我只需要根据客观情况加入一个旋转角度自变量即可(还记得我们一开始讲的自变量吗?)。
  • 加入自变量以后,我们应该考虑这个自变量是否能和哪些变量联立?因为联立之后就可以减少自变量数量,优化程序。那么我们很容易想到旋转角度和太阳高度角有关系。OK,我们只要做出来他们联立的函数关系即可,比如太阳高度最大90°时遮阳板全部关闭。
  • 根据上边的思路把需要用的电池拉出来,并且串一串
  • 运行这个程序,控制太阳高度角变化查看程序输出结果(遮阳板)是否按照我们假象的情况运动了。我们可能会在临界值的时候发现很多Bug,没关系,慢慢调试即可。

 

OK,通过上边这个例子的讲解,我想大家应该已经发现Grasshopper的建模思路并不能算特别难。当然,很多很难的例子我们还没有讲到;但是我想说的是利用这个“可视化脚本”的“过程”建模软件,反而会让我们建模更加轻松。我们只要有了清晰地思路,不错的数据结构知识,就可以生成模型。同时我们修改其中的操作手法和一些参数,可以更快更方便的修改模型来观察不同形态细微变化结果下哪一个更有说服力或者更能打动人。

 

今天这篇长教程希望大家好好消化一下,不必急着看后边的内容。这篇教程是整个Grasshopper难点之一。切记,循序渐进,磨刀不误砍柴工。祝大家通过今天的学习能够在建模思维上始终清晰!

 

爱你们的小黄人君

DanielJin

 

生成Box逻辑

 

———————————————————————————————————————————————————————

本文所有内容版权均属于作者所有

欢迎您扫描下方二维码关注小黄人君的微信公众账号

二维码新

2 Comments on “05.Grasshopper的建模思维及如何读懂Grasshopper程序

发表评论

邮箱地址不会被公开。 必填项已用*标注