当前课程知识点:Grasshopper参数化设计与建模 > 第六章 Grasshopper数据结构(二) > 6.2 案例:2016年BIG事务所蛇形画廊 > 6.2.2
返回《Grasshopper参数化设计与建模》慕课在线视频课程列表
返回《Grasshopper参数化设计与建模》慕课在线视频列表
这样分出来的两组点
它们就可以分别在两个曲面上
去形成我们所需要的方管子
下面我们让这些点
让它去变成一个可以去跟
前后曲面做相交的一根直线
我们可以用射线line
但是这是SDL这种线
这个就是射线
那么它有一个起点
那么这个起点应该是这个线的起点
我们在这里稍微调整一下战略
在这里我们是将点做了一个
分成两组的操作
我们现在是希望能够先生成交线
生成一些射线让它去跟曲面相交
然后再把它们分成前后的两组点
在这里我们得到了一个小的线段
实际上它应该是沿着y的方向
同时我们给它一个比较长的长度
比如说100
100有点大了
给它一个50的长度
长度应该在底下
所以在这里我们就不需要它了
不需要这个连接了
我们有一个50这么长的一个
一系列的射线
然后我们把这些线再往回
就是往回再move一点距离
还是沿y的方向
输入-25 这不行
我们输入25
然后在这里输入公式-x
然后把这里的预览关掉
我们就会得到很多的线
这些线是可以分两个曲面相交的
我们现在把这些线
用dispatch做一个划分
这边划分完了后
就变成了两组线而不是两组点
所以我们又要用curve
我们看一下这是其中一组线
这是其中的另外一组线
现在看起来虽然不是很清晰但是
我们现在可以用这些曲线
分别跟前面生成的两个曲面做交点
我们在这里intersect 里面
去找曲线跟面的交点
那么当然在这里
我们可以把两个曲面同时输入到
这里的surface底下去
然后我们把这边的curve输入过来
这里看起来有点问题
我们处理一下
这里输出的是两个brep
就是由多个曲面组合成的曲面
所以我们先把前面这些预览都关了
然后我们再看一下这个曲面
它确实由两个曲面组合而成的
因为rhino建模精度的原因
它认为用两个曲面组合而成
这样一个面
这样一个brep是更合理的
所以我们这要改变一下
我们使用的相交的计算器
就是用brep和curve去做相交
那么这样这个运算器就可以不要了
我们看到这样得到的结果
就是比较好的一个结果
同样我们也可以让Brep
去和另外一组线去相交
当然现在这两组线
都交到同一个面上了
我们看到这里
又出现了数据结构的问题
好 那么我们怎么来做这个转换呢
在这里的数据结构我们思考一下
其实在这里应该是
有很多条线去跟两个曲面相交
那么我们可以说是一个多对二的关系
我们要把它梳理到
我们熟悉的多对一的关系
才是比较合理的状态
在这里我们可以先把
这两个运算器先把它给禁用了
为什么要禁用呢
因为有可能我们在组合数据关系的时候
会变成很复杂的一个数据组合的关系
有可能运算量会非常之大
会导致Grasshopper
很长时间没有响应好像死机一样
所以在这里把它们先禁用
然后我们把数据结构整理清楚后
再把它们恢复
这里这么多线呢
其实我们并不介意
它的数据结构是什么
所以我们可以在这里先做一个Flatten
经过Flatten以后
这里输入的Curve呢
就是一共1365条Curve
那么我们现在希望这1365条Curve
去跟这里的两根线做一个相交
因为这两根线现在分配在不同路径上
所以这些线会分别跟这两个Brep相交
我们试一下把它启用
启用以后会得到这样的点阵
我们最后得到的点是这样一个关系
那么我们也可以换一个思路
这个思路是说我们可以还是把它禁用
我们也可以在这里
对这些Curve进行一个Graft
当然要先对它做一个Flatten
然后再做Graft
我们得到的数据结构看一下它是
每一根线都分配在一个独立的
list里面有独立的路径
每条线都有一个独立的路径
那么让它去跟这边的
Surface去做相交的时候
可以把Surface本身进行Flatten
让这两个Surface
放在同一个路径底下
这样的话就是
每个路径底下的一条Curve
都会去跟两个曲面做相交
从而得到两个交点
我们启用它
然后看一下这里得到的结果
我接错了 应该看的是这个P
就是这些点
所以我们看到在这边得到的
我们说得到的交点呢会分布在
其实还是每个路径上只有一个交点
但是在数据路径的最后一维
又增加了一个数就是0和1
这个0和1实际上是分别针对
两个曲面得到的交点
我们在这儿看到
Grasshopper在做一些运算的时候
会主动给我们增加数据路径的维度
或者说使数据路径区分更加清晰
那么这也是
在编写Grasshopper的时候
开发人员考虑到大家使用的方便
给大家增加多一个维度的信息
当然这个信息在我们这儿是没有用的
所以我们用一个Path Mapper
然后我们Create NullMapping
把最后一维删掉
我们这里希望得到的是
两个点在同一个路径上
所以得到的是这样一个结果
两个点在同一个路径上
有了这样一个结果以后我们可以说
相当于我们在
这个方向上作了一千多条线
那么这些线跟两个曲面都有交点
这些交点有的在前有的在后
那么它们现在是分布在不同的路径上
就相当于每根直线是一个路径
两个交点分布在这个
路径底下的list里面
下面我们只要对这两个交点
把它的xyz分解开
然后去按照y坐标做一个排序
SORT LIST
我们按照Y坐标去做排序
那么排序的时候呢我们前面讲
排序没有讲到
在排序的这个SORT运算器底下
还有一个A的输入
这个A的输入是说
当我按照K
这里输入的数据去做排序的时候
A这里我还可以输入一组数据
那么这组数据呢
就会被动地按照K
在排序时调整顺序的这种规则
去对A的顺序也做调整
所以
如果我们在这里把点接上去
那么也就是说起到的作用是
把这里A的输入的这些点
按照它的Y坐标
因为它的Y坐标是从这些点来的
按照它的Y坐标进行排序
那么我们得到的结果
我们取LIST ITEM
我们把这里排序得到的点
取它的第0项
就会得到只跟这个面相交的
或者说Y值相对较小的这些交点
同样道理
我们可以对另外一组交点
或者说另外一组穿插的线
做同样的操作
我们在这里做FLATTEN
然后再做GRAFT
把它启用
然后把这些复制一遍
然后注意在这里
我们希望得到的另一组点是在
这边这侧的曲面上
我们在这里把ITEM的
编号从0改成1
这个就是我们想要的一前一后两组点
这两组点是分开的
它是有一个位置上的错动关系
我们把这些不需要看的
运算器的预览关掉
我们看一下
我们再局部看一下
它的关系是错动开的
实际上在这里编程的时候
我们可以其实可以把这里的曲面
把它分成用LIST ITEM
取到它的第0个和第1个
这里改成1
取到第0个和第1 个
那么让这两个曲面
分别去跟这里的两组曲线做交点
那么就不需要用到这些复杂的
数据结构的运算了
当然在这里我们是想用这个案例
来给大家讲解一下
关于数据结构的一些应用
所以也算给大家一个练习
我们有了这些点以后
就可以用它们去画钢管的方形截面
这个截面呢
我们需要先
CONSTRUCT 一个FRAME
一个局部坐标系
CONSTRUCT PLAIN
那么它的原点呢
我们现在可以把这两组数据列
把这两组数据MERGE在一起
这个时候已经不需要考虑它们的区别了
现在我可以去基于它的原点
然后根据它的X和Y
这个X现在我们就用X方向
Y呢用Z方向
就会得到这样一些方向的局部坐标系
然后我们在CURVE底下
使用RECTANGLE
就是在平面上生成一个
RECTANGLE的方式
给它这些点
然后呢去设定它的X坐标
我们说让它的X坐标
看一下这个空间关系
这个我们可以先不看
把它预览关掉
所以这个时候的X坐标可是说它是
SET DOMAIN
从-0.4到0
然后Y坐标也是一样
-0.4到0
然后把它的预览打开
就得到了很多方框
然后我们再对这些方框
做一个EXTRUDE
EXTRUDE CURVE
让它的DIRECTION沿Y方向
稍等一下 程序有点反应慢
这样就生成了很多方形截面的管子
我们可以把前面的一些预览都关掉
这时候曲面也不需要看了
我们就会看到得到了
这样一个交错关系的方管子
那最后我们呢需要给这个方管子
一个具体的长度
这个长度其实它是不同的
因为实际上它们距离中心线越远的
那么这个管子呢会越长
距离这个中心线比较近的呢
这个管子就会比较短
我们现在来对这样一个操作
对这样一个性质做一个编程
所以在这里对于每一个点来讲
都会有不同的长度
我们要从这里输入不同的长度
比如说
我们是不是可以
对于刚才得到的这些点的坐标
分解出它的XYZ的大小
然后根据Y的长度来生成一个
它的这个方管的长度呢
当然这里我们看到其实是有效果的
那么这个方管但是它太长了
那么我们的grasshopper在
当然大家看到
grasshopper在运行的时候
突然它的界面消失了
那么这个时候你可以
就像我刚才做的
在顶上的这个位置呢双击一下
那么就会找回grasshopper的界面
好 那么这个时候这个运算器变红了
它为什么会变红呢
是因为我们有些点实际上它就正好在
这个X轴上所以我们分解开
得到的Y的长度是0
那么就无法做这个extrude的操作
所以就出错了
那么实际上在蛇形画廊的设计里头
这样的每一个盒子都有最小长度
所以我们也给它一个最小的长度
比如说还是0.4
然后让它在这里跟Y的坐标相加
去替换一下
就会得到
这边的运算器就会正常运转了
不会出现红色
那么我们说最边缘的这些盒子
也有一个厚度
那么当然现在这个长度呢
这个方管的长度呢还是有点太长
所以我们可以在这里
给它一个multiplication 乘法
给它乘以一个系数
然后再去做相加
那么看起来就更合理一些了
当然大家也可以
这样我们还是
找回grasshopper的界面
然后把它调到0.2
也许是更像
这个BIG的一个设计的一种参数
好 那么这个案例我们就基本做完了
我们把前面不需要看的
这些预览都把它关掉
好 这里还是有点问题大家看到
这个问题是说
我们在做extrude的时候呢
那么在-Y的这个方向
Y小于零的这个方向呢
那么它的extrude的一个长度呢
是一个负值
这个负值如果跟
我们的0.4去相加的时候呢
它就有可能从负变正
所以有一些盒子的大小就
它的长度就会很奇怪
我们在这呢
做一个absolute value
在math底下有绝对值的操作
绝对值的运算
Absolute
看一下它在什么地方
在这里那么我们这个
把它的长度取一个绝对值
然后再输入过来
大家看这样就不会有问题了
这样的设计就是程序的运转结果
就是一个比较理想的状态
总结一下这个案例的步骤,首先
输入轮廓线
并进行处理
形成曲面形态
第二点,使用Series、Dispatch
生成两组点阵
作为生成矩形形体的基础
第三点
使用点阵生成直线
与轮廓曲面相交
第四点
使用PathMapper、Sort
处理点阵的数据结构
最后一点
以分布在曲面上的点阵为基础
生成矩形,挤出形体,并进一步调整
-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物理模拟--第九章习题
-期末作业: 综合运用
--期末大作业