大家好,我的《Grasshopper从入门到进阶》课程已经开课了。
有兴趣欢迎关注:https://www.tuozhu123.com/course-54.html
【By DanielJin】由浅入深学Grasshopper BASIC 02 数据类型的介绍
应几个人的要求...强烈要求...开了个群,新手们可以进来讨论了。群号312673316,各位可以先暂停加我QQ好友问问题了...表示这几天已经让加爆了QQ就没停过几乎...欢迎来群上交流,因为女朋友在国外所以我没会约,基本都在群里的!
前言:第一个设计周快要度过完了,第一个设计体育馆快结束了,图画完了很开心,就屁颠屁颠来更新个教程。静静等待13号交图和第二个设计周的开始,同时希望建业周六战胜广东富力,至少客场拿个一分...(绿茵场上我们是敌人,场下是朋友,广东的小伙伴谁看球?)
上节基础教程,我们讲解了部分curve生成的计算器。那么今天我们用最简单的例子来讲解这些运算器的实际运用。同时,我要开始向大家慢慢传授一个基础教程的核心,该核心将会贯穿你的整个以后的GH生涯,即数据结构问题。参数化设计从头到尾都是围绕参数进行的,而其中最重要的和我们的传统思维有区别的地方正是数据结构问题。如同二维空间到三维空间的飞跃是加入了高度z变量,让“拍平(flatten)”的物体有了高度(graft)。如果参数化设计离开了参数,就相当于作为一个男人你从“木”变成了“大”。其重要性不言而喻。
现在开始进入教程。
首先我们用point创造四个点,点的位置比较有讲究,一定不能比我帅不然你一定不会成功-.- 接着我们用上节课讲到的interpolate运算器生成一个曲线。这里有一个知识点,在运算器的D段输入的是维度,曲线的维度通俗可以理解为光滑程度,只有1,2,3三种。1为两点间直线相连,2为曲线相连,3为控制点相连(即曲线不一定在点上,你可以点一千个无规律点即可看出)。我们演示一下。(貌似这点我理解的不对,interpolate不允许even维度就是偶数维度,求解答。这些最基础的细节我很多并没有仔细生成概念) 更新:注意,曲线维度Degree这里我之前的概念是错误的。输入端要求不得输入偶数。输入1,3,5等2n+1的奇数时,会生成相应的2n+4个控制点(包括起始点和终止点)。大家可以用Control Points来验证。 接下来我们用一个move运算器把这个圆圈抬高,move要记得输入方向vector 现在我们可以假设这个曲线是无数点生成的,我们把它旋转一下,虽然形状一样,但是起始坐标点位置已经不同了(我画的这个有点残,转完了就能看出来,因为不是圆形),这样假设是为了后边做准备。 我们把它旋转一下哇 铜锣烧诶!贝壳诶! 下面说一个注意事项,我们要学会看输入端和输出端要求输入的是什么东西。比如现在的旋转很不理想,是因为我们用rotate axis,轴线axis这个词你们都不陌生,默认的axis我们不能用。那么我们就弄个新的axis。 我们想让这个圆在升起后的平面内旋转,有很多方法。比如rotate plane,rotate 123。既然我们爱上了axis,我们就不要喜新厌旧。我们做一个axis。 怎么做呢?我们换种思维,如果我们把下边的圆中心找出来,通过move也升起那么多高度,得到的线是不是就是两个圆的axis? 关于怎么找到下边圆的中点,我的方法比较笨。我用四个点生了个面然后找的面的中心点。 接下来两点连线 这里有一点很重要的要讲。首先大家作为初学者要养成个好习惯,在最初学习不知道运算器干嘛不知道怎么连接的时候,连陌生运算器前保存一下。一旦连错,死机死循环是正常的。上次一个论坛的朋友说内存20G顶配机器一旦连错还是一样卡死。参数的运算量是非常大的。 第二个要讲的是,当你连错的时候,比如我经常连错(见下图),第一步要做的是把连错的线按着ctrl给删除掉,不要直接把对的连上去。我经常出现连错了(比如m2该把中点输出的把a端输出了,然后连错我直接拿c端去连结果因为看着下一个运算器的输入端已经有线输入了,条件反应直接连到了空着的输入端上,特别在点生线的时候很常见你要连很多点所以都是按照1234顺序往下连的,一个有了你自然会连下一个),然后导致自身运算器的不停运算,死循环没有终点智能alt+F4.
接下来我们把这条线当做axis连上去。为什么我们敢连,你把鼠标放到x端口邮件点看一下,菜单里重新设置那里英语写的很清楚让你画一道线而不是让你输入number,integer。作为和我一样的新手我们一定要学会看。后边会不停重复这个思想以告诉你这个思想多重要。 旋转好了,我们来看一下起始点的差距。用的一个point on curve。
接下来我们做一点竖向的连接线。方法很简单,你可以用point on curve设置很多点,上下数值一样即可。然后连接。 为了显示我们的高大上和努力向上学习的精神我们用divide curve。(谁拿肥皂砸我?!) 接下来我们希望这些点相互连线。能否连?会不会每个点都和别的所有点生一个线总共生成N多线?(20个点是20!个线吧?)这时候我要引入最重要的本教程重中之重的东西,树形结构。 (通俗讲就是点被自动分组,20对夫妇你只能抱自己的老婆,抱别人老婆别人老公会打你) 一个新手非常好用的电池 我们可以在s端输入数字大小来看点的序列。 一个颜色一组,分别代表男女。A色1的老婆是B色1,绝不会发生抱错现象。直接连线。这种情况就相当于我们把两条线分别用了divide curve来分割,两个运算器输出的点放到两点生线运算器。 为了更大化的让教程变难,我们用了一个运算器分了两道线,现在运算器输出的点都是在一起的,怎么用两点生线命令生线呢? 我们再介绍一个运算器,Dispatch。可以直接把1个list的点分开成了俩list。然后ab点相连即可。(其实我也是新手我也是用display看了半天数据结构才用的这个)
..........................和我们想的不太一样对吧。我们连上display看下结构。 我们需要的是上下连,而dispatch重新分组已经把我们的数据结构打乱了。
接下来我们把数据类型重新修改一下。用一个新的运算器。 这才是我们想要的结果对吧
每个点互相连线,颜色一样的是一组。
细心的同学可以发现如果我们再拍平或者graft一下连线和数据结构还是不会改变。这就相当于你老婆的妹妹flatten成你小姨子了,或者graft升级成你岳母了,还是和你一家人,别人不能侵犯。当然你也不能抱他们了,但你还是可以在一组数据内连线。这一点处理数据的能力应该是中级教程部分的,我这里简单提一下。有兴趣的可以自行研究。
接下来我们要做的操作很简单,找到线上的点,interpolate生线。 但是直接生线是不能生的,为什么?很简单还是老方法我们看数据结构。原来是一群老爷们儿互不相干,如何生线。 (有人会问点生线而已,这么多点怎么就不能依次连接生线?这就是三维世界和二维空间的不同。两点间必能连成线,但是如果第二点有空间高度即不处于同一水平面内,那么就无法在其中任意一个二维平面生线。这个道理如果你听不懂我换种方法讲,用三维空间和四维空间打比方,如果一个点在我手上,一个点在潘金莲胸......前的痣上,你能摸到吗?能吗?这就是树形数据和咱们日常接触的“数字”即拍平后的数据的差别。) 那么我们要做的就是把它们放在同一时空内,你们也看到我说拍平了。拍平试试。 从0至9数据全对,线连上了。没有闭合是我们没有把布尔设置成true。现在一群老爷们儿都首尾相连了... 同理我们把第二条线也连上。好了,我的手已经可以摸到潘金莲的胸...前的痣了。
接下来的工作就简单了,我们把上边的圆scale一下,这样直上直下不好看。缩小点。不要忘记中点要设置成之前我们位移过用来生axis的顶点。 改变连线让边线连到scale的圆上。 最后pipe 你就可以看到一个骨架了。
他有什么实际意义呢?这是下图的实际运用,网架部分的原型程序就是。感谢在学校我的老师wikii大神的辅导。 最后说一句,那个啥感谢大家的鼓励,大家也都积极传个作业评个分啥的T.T 不要静悄悄就走了不带走一丝云彩...
最后gh文件附上,里面有两个gh,是分别用两种方法做的,有兴趣的同学可以看看差异,用display看看数据分组的差别。 |