铜仁市论坛

首页 » 分类 » 问答 » 鞋类丨产品设计中的Grasshopper
TUhjnbcbe - 2020/11/29 18:02:00
北京看白癜风哪里医院最专业 http://pf.39.net/bdfyy/tslf/
(详情请戳上面图片链接↑↑↑)之前讲了如何让柱状网格产生粗细变化,这篇讲讲如何实现题图中的这种单根粗细的变化这个做起来的思路跟之前是一致的,就是用每个线段的中点作为干扰点,然后让线段上离中点越近的点半径越小。之所以要单独讲一讲就是因为,在实际操作中,会涉及到数据结构的问题。为了方便理解,我们先来做一根线的粗细变化,这里需要用到的新电池是取中点(CurveMiddle),用法很简单,只有一个输入和输出,把线接进去,输出中点。如果不想取中点,可以用PointonCurve电池,这个电池将线段按0-1划分,0.5就是中点,通过滑块取出线上任意位置的点这两个电池都在curve下的Analysis下接下来我要将这个线段等分出点,然后算出这些点到中点的距离,然后把这个距离值对应到柱体的半径上,跟上一篇完全一样,这里就不演示了,直接上电池图,想学好GH的建议不看电池图自己做一下,这样进步比较快建议自己尝试做一下,再对照电池图这时发现这个变化不是很自然,直来直去的,这是因为这些点到中点的距离变化是线性的,要想产生平顺的变化,就需要用到GraphMapper这个电池GraphMapper在Params下的Input里这个电池的功能就是可以把一组数据通过计算,形成非线性的方式的重新分布,这个电池对于初学者来说理解起来有点抽象,我们来实际操作一下,首先将之前的数值接进来,再将输出端接到R值上目前并没有什么效果,因为我们还没有设定非线性的方式,这时在GraphMapper上点击右键,在Graphtypes里选择Bezier,也就是著名的贝塞尔曲线。

简单理解,这个电池实际上就是把一组数据带入一个曲线的公式,然后将数据在曲线对应点上的数据输出出来这时我们看到粗细发生了一些变化,但并不是我们想要的效果,好像只有中间一小段发生了变化,其他部分没有变,这个原因是GraphMapper的范围设定是在0-1之间的,而我们的半径范围是大概0.8到1.9,超出1的部分就按1算了因此,我们需要重新设定范围,把距离那组数先对应到0-1(remap的默认范围就是0-1)之间,然后再从0-1对应成想要的半径之间,具体做法不细讲了,电池如下,也是建议大家自己先尝试一下

当然你也可以双击graphmapper电池进去手动设定范围,但一方面我们的半径随时可能调整,每调整一次都进去设定一次范围太麻烦了;另一方面将范围设定在0-1在GH中是一个很通用的做法,很多电池默认都是0-1,这个好处学得深入之后逐渐就能体会到双击graphmapper电池,就能对范围进行设定,把范围设定得和半径范围一致,也能得到同样的效果现在,单根线的变化搞定了,很多根线要怎么做呢?这里就要用到数据结构了因为之前我们的粗细变化是所有点一起变化,所以都是把数据砍平(Flatten)之后做的,但现在,这个变化只针对一条线段,每个线段的变化是独立的,这里就需要通过结构的数据来实现这里我就针对这个案例来对数据对应的规则抛砖引玉一下。我们先把之前的结构线拿出来,砍平(Flatten)之后,取出这些线的中点,等分线,这时发现两个数据结构不同了,一个是空心实线,一个是空心虚线之前讲过,等分点之所以是虚线,是因为GH自动将一个线段里的等分点分成了一个组,在之前的案例里,这种分组是不需要的,所以我们直接Flatten了,但现在这个分组就有用了,因为现在我们就是要每组的等分点分别和每个中点算出距离,所以这个结构需要保留。但中点则没有这个结构,如果直接对应会出现什么结果呢?我们先来看一个例子,比如做这两组数做加法运算,GH里数据对应的原则是一一对应,如果两组数据长度和结构一致,那么就会一一对应算出结果而当两组数据不一样多的时候,GH默认是长对应(也有电池可以设置成其他对应规则),也就是长的那组多出来的数据就会和短的那种最后一个数重复对应,这样保证算出来的数据长度和长的那组保持一致。长短不同的两组数据,当无法一一对应的时候,多出来的数据就会和短数据组的最后一个数据对应而当两组数据的有结构之后,对应规则也是一样的,先结构之间长对应,然后数据之间再长对应,比如下图中,左边的结构比右边少一组,那么多出来的那一组就会和短的最后一组重复对应,组分好之后,组里的数据再按照长对应的规则一一对应。这个部分是GH十分核心的概念,一定要理解透彻,关于数据结构的详细介绍,推荐看看D大的这篇文章:SimonChen:Grasshopper中的数据控制

zhuanlan.zhihu.

1
查看完整版本: 鞋类丨产品设计中的Grasshopper