当前课程知识点:Grasshopper参数化设计与建模 > 第四章 Grasshopper数据结构(一) > 4.3 Dispatch运算器 > 4.3.2
返回《Grasshopper参数化设计与建模》慕课在线视频课程列表
返回《Grasshopper参数化设计与建模》慕课在线视频列表
在这里我们直接用刚才被替换下来
直接用这个silder去做布尔的判断
用这个做大于等于的判断
其实它不是很严谨
为什么呢因为这里我们得到的数据
其实它到底它的大小的分布是什么样的
我们并不清楚
比如我们可以在display底下
我们可以用这样一个运算器叫bargraph
我们来看一下
我们经过刚才的x坐标
和一个随机数相乘以后
得到的数据分布大概是这样的
也就是说最大值是17最小值是0
那么如果是这样的话我们
如果想做的更严谨
这件事情要想
就这里的程序想编的更严谨的话
我们可以用到一个计算器
在math底下
这个运算器叫remap number
remap number意思是说
在这个运算器这里
我们输入一系列的value 就是一个list
然后在source这个地方
我们输入一个范围
在target这个地方输入另一个范围
我们看到这个图标很形象
就是它会把按照source的范围
和target的范围之间的这种对应关系
一种map的关系
把value map到一个target的范围上去
就是做这样一个map
也许现在说起来比较抽象
我们做一下大家就知道了
我们把value从这儿输入进去
也就是刚才我们这个分布的一些数据
然后这儿需要一个source
这个source是说一般我们会输入
value这些值的一个范围
这里我们会用到一个运算器叫bounds
大家看到这个运算器
它的图标是min和max
所以如果我们把这里的
刚才从这里得到的
就是这个随机数跟x坐标相乘的这个数
从这里输入的话
我们看一下它的这个结果是0到17.34
也就是这里的0到17.34
实际上它把这些value
刚才从这里出来的这些值
它的最小值和最大值求出来了
如果我们把最小值和最大值
从这里给它输入进去
那么这个target呢
我们用缺省值是0到1
我们最后得到的这边输出的这些值呢
就变成从0到1 的分布
不信的话大家可以试一下
我们把这个bargragh
这里输出的这个地方拿过来看一下
它的范围确实变成了从0到1
那么经过remap以后我们就知道
这些数据既然是从0到1
我们把它接过来替换掉
这边我就不需要这个数了
而是可以输入一个1.00
我们常用的silder的这种形式
在一个标准的区间上去对它进行筛选
就是这样一个效果
但是大家可能会说
我对这样一个pattern我还不是特别喜欢
那么如果你不喜欢
你可以利用这里随机数的随机种子
任意给它一个整数
就可以改变这里的pattern
也就是说我们在这里生成的随机数
对这些点进行抽签的时候
对这些点进行加权的时候
我们可以得到不同的pattern
大家选中一个自己喜欢的pattern
就可以往下进行
那么OK
我们在这里得到的这些点
后面是一些扩展的内容
我们在这里得到的这些点
后面是一些扩展的内容
其实我们可以对它做一些表现
让它显得比较有趣
比如说我们基于这些点
可以在每个点上画个小方块
这些小方块我们可以在surface底下
使用plane surface
我们把p给这些点
然后它需要输入x y的范围
我们在这里使用一个
我们用什么值来做y的一个范围呢
我们可以
比如说我们设定一个0.5
然后把它组合成一个domain
因为这里我们的x和y
都是需要是一个范围
因为这里我们的x和y
都是需要是一个范围
我们把0.5从两边输入到这个domain
当然它会组合成从0.5到0.5的这样一个范围
跟这里我们需要的
从负数到正数这种方式还不太一样
跟这里我们需要的
从负数到正数这种方式还不太一样
所以我们在A这里输入一个expression
输入一个公式
这个操作大家注意看
输入一个-x
也就是说对于任意从A这里输入的数据
经过一个加上负号乘上-1的操作
那右边就得到了从-0.5到+0.5
然后再把得到的这个结果输入到p
输入到plane surface这个运算器去
会得到现在这样一个结果
把这个点的预览关掉
这个结果可能我们可以加一点其它的效果
比如说这里不一定是0.5
我们其实可以用这里的y值
我们先用一个number
把这个y的数值接下来
我这里重新做一下
那么相当于我们可以做类似的一个操作
就是把这个y的数值
那么相当于我们可以做类似的一个操作
就是把这个y的数值
我们把它压缩到一个范围
比如从0到0.5之间的一个范围
然后让它变成一个我们这个方块的大小
怎么来做这个操作呢
我们把y的输出对它做一个操作
做一个除法的操作
让它除上这个数值
就是这里的y方向一共有多少格
让它除上这个数值
就是这里的y方向一共有多少格
其实也就是它的最大值
经过相除以后
然后再把这个数从这里输入进去
我们看一下它的结果
这个silder我们就可以不要了
我们在这里看到的这个结果
看起来图案比较有趣
但实际上它是出了问题的
我们看到本来希望
我们的这个方形的平面呢
它是跟y轴坐标是有关系的
但是现在我们看到的结果是
好像是一个非常散乱的关系
而且在右上角
有一个颜色非常深的好多层的块
那么这是什么原因呢
实际上这个原因是说
我们在这里大家看到
在这个Plane Surface的运算器这里
变成了黄色
是因为我们的数据的组合上有问题
我们看到在这里
我们一共有96个surface
然后在这里的X有189个
Y也是189个
也就是出现了前面我们说到的多对多
但是数据量又不一至的情况
那么在这种情况之下
那么会由少的这边96根
189个就是xy这里输入的数据的
前面的96个去跟这96个去对应
然后从第97个开始
189个里面的第97个开始
都去跟这个P里面的第96个去做对应
所以就会导致我们的这个图案上
大家看到在这里
会有一个重叠了非常多的
平面的这样一个结果
那么这种结果其实在你们编程的时候
可能会经常会遇到
当你编程不小心
你就会发现当你的数据组合
出现问题的时候
你就会发现当你的数据组合
出现问题的时候
就会在某个地方会聚集很多的这个数据
在某一个点上聚集很多的数据
这个就是我们上次课讲到的
前面讲到的
当多对多数据又不一致的时候这个结果
而这个结果往往是出错的
所以大家看到这种结果的时候
可能要回想一下
看看你的数据上是不是有问题
那我们这个问题到底在哪儿呢
大家看一下
其实问题在于说
我们从这里接过来的这个点
包括这个Y呢
它是所有的刚才在这个平面范围内
整个的这些189个点
它是所有的刚才在这个平面范围内
整个的这些189个点
而在这边接过来的点呢
实际上是经过dispatch以后的点
而在这边接过来的点呢
实际上是经过dispatch以后的点
也就是说只剩下了
我经过划分以后
满足条件要显示出来那些点
这两边的数据量是不一致的
那么为了解决这个问题
我们需要对这里的点
再做一个
从它开始再做重复刚才的操作
重复哪些操作呢
把它分解成xyz的坐标
然后用这个y坐标去替代这边的
大家看这个是从这里的y过来的
所以我们把这个
经过dispatch以后的点的坐标
然后把它替换过来
替换过来以后大家看到
这个结果基本上就看起来就像是
替换过来以后大家看到
这个结果基本上就看起来就像是
我们想要的这样一个结果了
就是没有再出现对应不上的这些问题
没有再出现大小跟y方向坐标
没关系的这种问题
当然这里出现了一个小的
没关系的这种问题
当然这里出现了一个小的
还有一个问题就是这里
看起来它还是黄色
这个运算器还是黄色
说明它还是有一些没有正常工作的
一些警告的信息
说明它还是有一些没有正常工作的
一些警告的信息
那是为什么呢
实际上是因为我们在这里的x和y呢
它有0的情况 有0 to 0的情况
因为y坐标有0的时候
所以得到了很多的0的大小的范围
所以这里的p呢有些是画不出来的
我们看这里有null
那也就是说是空值
为了解决这个问题呢
我们可以在这里的y值上
我们给它做一个小的调整
我们可以在这里输入一个expression
看看行不行
不行那就是我们在这一侧
输入一个expression
让这个输入一个括号
y加上一个0.5吧
然后再除上3
那看到这里出现红色
是为什么呢
是因为其实在输入一个公式的时候
我们注意在expression里面
在新版的grasshopper里面
我们注意在expression里面
在新版的grasshopper里面
这里自变量都应该是x
如果输入y的话它就不认了
虽然这里的变量标的是y
但是这实际上是
虽然这里的变量标的是y
但是这实际上是
就是它变量在外面显示是y
但是实际上在每一个公式里头
都应该用x
不管是从输入端还是从输出端
这样的话我们这个程序看起来
就这个pattern就没有问题了
我们可以对它的数值再做一些调整
比如说除3 不要除3了
除2看好不好
除2的话就会更大一些
那么包括这个加0.5可以加上1
然后再除上3
让它更饱满一些
当然你还可以让这些块呢
再做一个随机的移动
让它有一个translation
这个T呢
我们给它一个微小的振动
这个振动可以是一个随机数
这个随机数是多少个呢
List Length
我们得到了一个随机数
然后这个随机数让它乘上一个π
应该乘上一个2π
所以在这里我输入一个2
虽然这里看不到任何的变化
但是这个N这儿输入的是2
所以这里是2π
那么我们的生成的一个
从0到1之间的数乘上一个2π以后
得到一个0到2π之间的一个随机数
从0到1之间的数乘上一个2π以后
得到一个0到2π之间的一个随机数
那么这个随机数呢我们就可以生成一个
xyz的一个向量
而这个向量的x方向呢是它的cos
这个角度的cos
y方向呢是它的sin值
然后得到一个vector
然后设定一下这个vector它的大小
在vector里面我们看到有设定
vector length
这里用amplitude来设定一个vector的大小
在这儿用一个0.2的一个slider的一个大小
我们把这里的translation给它
可以把原来这个关掉
让它一个随机的振动
然后大家可以去调整一下前面的
随机的pattern
可以调整一下振动的一个幅度
得到不同的pattern
这个就是我们这里要讲的一个案例
好 总结以下本节的要点
我们在这节学习了
dispatch运算器的做用
也就是在设定的某个条件下
对数据进行分流
我们也使用一个
筛选点阵的案例
对dispatch的运用
进行了进一步的说明
-1.1 参数化设计简介
--1.1
--模型文件
-2.1 Grasshopper简介
--2.1
-2.2 Grasshopper界面与基本操作
--2.2
-2.3 Bake与Internalize Data操作
--2.3
-第二章习题--作业
-3.1 Math运算器
--3.1.1
-3.2 点与向量
--3.2.1
--3.2.2
-3.3 Grasshopper曲线运算器
--3.3.1
--3.3.2
-3.4 Grasshopper曲面运算器
--3.4.1
--3.4.2
-3.5 案例:水波
--3.5
-3.6 案例:螺旋曲面
--3.6
-第三章习题--作业
-4.1 Grasshopper数据结构基础
--4.1
-4.2 数据流匹配
--4.2
-4.3 Dispatch运算器
--4.3.1
--4.3.2
-4.4 案例:项链
--4.4.1
--4.4.2
--4.4.3
-第四章 Grasshopper数据结构(一)--第四章习题
-5.1 Nurbs原理简介
--5.1
-5.2 Nurbs建模演示
--5.2
-5.3 Evaluate操作
--5.3
-5.4 由点建立曲线
--5.4
-5.5 Nurbs与向量
--5.5.1
--5.5.2
-5.6 案例:凤凰中心曲线环廊
--5.6.1
--5.6.2
-5.7 案例:鸟巢表皮钢结构
--5.7.1
--5.7.2
-第五章习题(一)--作业
-第五章 Nurbs曲线与曲面建模-- 第五章习题(二)
-期中作业:工艺品设计
--期中作业
-6.1 Grasshopper树状数据结构(1)
--6.1.1
--6.1.2
--6.1.3
-6.2 案例:2016年BIG事务所蛇形画廊
--6.2.1
--6.2.2
-6.3 Grasshopper参数化表皮
--6.3.1
--6.3.2
-6.4 案例:凤凰中心表皮结构
--6.4.1
--6.4.2
-第六章 Grasshopper数据结构(二)--第六章习题
-7.1 Image Sampler
--7.1.1
--7.1.2
-7.2 案例:望京soho表皮
--7.2
-7.3 Vironoi运算器
--7.3
-7.4 Metaball运算器
--7.4
-7.5 参数化设计在大型项目中的应用案例-“红飘带”景观装置
--7.5
--第七章 Grasshopper建模技巧--第七章习题
-8.1 Mesh原理
--8.1
-8.2 SubDivision与银河Soho案例
--8.2
-8.3 地形建模
--8.3
-8.4 面板划分:以银河soho为例
--8.4.1
--8.4.2
-第八章 Mesh建模基础--第八章习题
-9.1 Kangaroo插件简介
--9.1
-9.2 悬链线
--9.2.1
--9.2.2
--9.2.3
--9.2.4
-9.3 张拉膜,充气膜与可受弯面
--9.3.1
--9.3.2
-9.4 CirclePacking
--9.4
-结语
--9.5
-第九章 Kangaroo物理模拟--第九章习题
-期末作业: 综合运用
--期末大作业