数据类型介绍

上节基础教程,我们讲解了部分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?

关于怎么找到下边圆的中点,我的方法比较笨。我用四个点生了个面然后找的面的中心点。

接下来两点连线

这里有一点很重要的要讲。首先大家作为初学者要养成个好习惯,在最初学习不知道运算器干嘛不知道怎么连接的时候,连陌生运算器前保存一下。一旦连错,死机死循环是正常的。上次一个论坛的朋友说内存32G顶配机器一旦连错还是一样卡死。参数的运算量是非常大的。

第二个要讲的是,当你连错的时候,比如我经常连错(见下图),第一步要做的是把连错的线按着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大神的辅导。

 

 

最后gh文件附上,里面有两个gh,是分别用两种方法做的,有兴趣的同学可以看看差异,用display看看数据分组的差别。

Basic 02

 

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

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

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

二维码新

发表评论

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