当前课程知识点:Grasshopper参数化设计与建模 > 第六章 Grasshopper数据结构(二) > 6.1 Grasshopper树状数据结构(1) > 6.1.1
返回《Grasshopper参数化设计与建模》慕课在线视频课程列表
返回《Grasshopper参数化设计与建模》慕课在线视频列表
6.1节,在这一节
我们将给大家首先讲解
Grasshopper 当中的
复杂数据结构的简析
接下来
讲解如何查看、更改
Grasshopper当中的数据结构
第三点
PathMapper路径映射
与复杂数据流的匹配
同学们好
在新的一章里
我们将给大家介绍
grasshopper
数据结构的第二部分内容
也可以说是高级应用部分的内容
我们知道在grasshopper中
数据结构起到了两个重要的作用
一个是管理数据
也就是说数据是如何分组的
第二个重要的作用是组织程序的流程
在grasshopper这样的
图形化的编程环境当中
程序流程是借用了数据结构的方式
来进行管理的
具体来讲
就是运算器中的数据是如何匹配的
对于grasshopper来讲
掌握数据结构的应用是用好它的关键
因此希望大家能够
认真学习本章的内容
我们在这一章里
将先对grasshopper
数据结构的高级内容进行讲解
之后还会结合一些
在曲面上做参数化表皮的案例
进行讲解
希望大家能够对这部分内容多多练习
掌握好本章的内容
我们看一下这里的两张图
左边的这个程序展示了
我们在前面对于数据结构学习所知道的
就是多个数据可以结合为一个列表
这里是用一个panel来显示一组数据
一个list它的内容
同时我们也可以用这里的
PARAM viewer 这样一个电池
来显示数据的结构
这里是五个数组成的列表
具体的数据显示在panel里
那么对于panel来讲
我们还会在列表的顶上有一个标题
或者说显示的是这个数据组成的列表
它所在的路径叫path
那么相应的在PARAM viewer下面
我们也能够看到显示的数据结构
大家可以注意到
在PARAM viewer下面
它不会具体的去显示这些数据
而是只表示这个数据结构
所以在panel里我们看到这样一个路径
它是由(0,0)两层的数字
来表示的一个两层的数据结构
因此相应的
在PARAM viewer底下
我们能看到是
由两个节点组成的一个
双层的数据结构
而具体的数据呢
我们可以理解
它是装载在这两个节点上的
只是没有做具体的显示而已
当然在panel里面
我们还能看到的就是
每个数据有一个编号
有一个index
这是它的顺序号
那么在右边这个数据结构里
这是一个更复杂的数据结构
它分成了1 2 3 4 5五个路径
每个路径都有相应的编号
五个list
每个list有一个相应的路径
这个路径的编号是
比如说(0,0,0)(0,0,1)
(1,0,0)(1,0,0,0)(1,0,0,1)
所以我们在这里的路径有两种情况
一种是三位的 一种是四位的
所以我们在这里的路径有两种情况
一种是三位的 一种是四位的
因此相应的在PARAM viewer下
我们能看到
因此相应的在PARAM viewer下
我们能看到
有的路径是由三个节点组成的
有的路径是由四个节点组成的
这就是一种对应的关系
相应的这是每一个path下
它的具体的list
这些数据以及数据的编号
如果我们把右边这个复杂的数据结构
它的PARAM viewer
在grasshopper中不断地放大
我们就会看到在这些路径上
会显示一个编号
这个编号实际上是跟
我们在panel里看到的
数据的路径是一一对应的
比如说
三位的数据编号是跟
这边的两个节点对应的
因为它是三位
所以我们看到这条路径上
一共是三个节点
1 2 3
这条路径是三个节点
它的路径编号是标在这条线上
(0,0,0)和(0,0,1)
它们的上一级是(0,0)
具体的数据我们可以理解
是装载在这两个节点上的
这个list和这个list
装载在这两个节点上
那么对于四位的路径呢
它们对应的节点在这里
这是路径的编号
因为是四位的路径
所以一共是四个节点
路径的编号(1,0,0,0)
和(1,0,0,1)在这里
比较有趣的是这个(1,0,0)
这样一个三位的编号
这个路径在哪里呢
这个list对应的点在这里
我们说(1,0,0)
数据装载在这个节点上
我们看到(1,0,0)
和后面这两个路径的前三位
是一致的
所以实际上它们共用了一段路径
这是在grasshopper的界面中
我们显示一下刚才的两个数据结构
对于这个PARAM panel
如果我们zoom in的话
就会看到刚才介绍的
具体的数据路径的编号
那么我们也可以介绍一下
如果是单个数据
比如说
我们在这里鼠标右键Set integer
我们设定一个7
用一个panel来看一下它的具体内容
对于单个数据来讲
当然它的数据结构很简单
那么在这里我们会注意到
一个有趣的差别
是单个数据的时候我们看到
数据的连线是一根实线
如果是多个数据的时候
这条线就变成了双实线
如果是多个数据而且是多个list
或者说是一个复杂的数据结构的时候
这条线不仅是双线而且是虚线
那么在grasshopper里面
这样一种设定
它能够帮助我们在编程的时候
更直观地认识到数据结构的不同
对于编程来讲是非常有帮助的
这样一种显示呢
在grasshopper里面是可以设置的
我们在Display里头
看到这里有Draw Fancy Wires
如果我们把这个选项取消的话
我们看到所有的数据的连线的显示
都是一样的单实线
一般来讲还是建议大家选中
Draw Fancy Wires
对于编程来讲是有帮助的
Param Viewer这个运算器
它在哪里呢?
我们看一下
它在parameter底下这个像树一样的
这样一个电池
如果我们把数据接上来
我们看到了如果直接接上去的话
看到是Param Viewer的
它的另外一种显示方式
也就是说显示具体的路径
和路径里头数据的数量
如果我们双击它
它就会变成一个数据结构的图
同样对于刚才我们显示的
这两个数据结构
我们也可以去双击它
让它呈现出另外一种
以文字的形式来描述数据结构的方式
此外很重要的
我想大家在前面的应用当中
练习当中也都注意到了
如果我们点击鼠标右键
不管是在数据的输入端
还是在数据的输出端
我们在这里都有几个常见的选项
reverse flatten graft和simplify
reverse我们前面已经用过很多次
就是将数据列将list颠倒过来
把它的顺序颠倒过来
下面我们讲讲flattengraft和simplify
这几个选项它的意义是什么
关于flatten
那么这是我们鼠标右键的时候
我们看到的flatten
除了在数据的输入端和输出端
可以用鼠标右键去选择以外
我们也有这样的电池
是专门用来做flatten这个操作的
这是flatten对应的电池
flatten的作用是拍平
或者说抹去原有的数据结构
将所有的数据放到
一个最简单的就是
0的这样一个数据的路径之下
我们看一下
这是一个flatten的例子
如果我们这边有一个数据结构
我们这里的数据写的是字母
第一个list里面是两个X
第二个list里面是两个Y
第三个list里面两个Z
那么它的路径是000
010和020
注意到这这里头3个路径
分别存了6个数据
那么如果经过flatten
就会把所有原来的数据结构都抹掉
然后把所有的数据装在一个list里面
而这个list它的pash
它的路径是0
所以原来的数据结构三层的数据结构
在这里变成了一个单层的数据结构
我们看到这是没有点的只有这有点
这是一个单层的数据结构
所有的数据都装载在这个节点上
用图示来显示的话呢
显示这个数据的层级关系的话
在000我们看到三层的数据结构里头
XX,YY,ZZ分别存放在三个路径底下
经过flatten以后变成了
在一个简单的路径底下
装着6个数据
我们再来解释一下
这个图为什么画成这样
三个数据路径在它的第一位都是0
所以它们共享了最初的这一个数据路径
所以我们把它装在同一个框里头
那么在它的第二位呢
就分成了三个组0 1和2
所以我们把它分成三组
那么在第三层里头呢又都一样了
但这个一样呢是说
在相应的第三个路径底下
没有再做进一步的分层
所以我们在这个路径底下
就只有一个分叉
所以这个数据结构就用这张图来表示
那么我们再看看如果是这样一种情形
如果我们有一个两层的数据结构
但是只有一个list
也就是说数据都在同一个路径底下
那么这个路径是一个两层的编号
经过flatten以后
我们看到这个两层的数据结构
变成了单层的数据结构
00变成了0
这边的图相应的也发生了这样的变化
那么这个数据结构
和它的数据结构是一致的
就是只有一个list
我们再看看如果是一个
非常复杂的数据结构
那么这个数据结构里头
是跟我们刚才
在前面演示的那个复杂数据结构
是非常相似的
00 01这只是多了一个02
那么这样一个数据结构
它有3层的还有4层的
它的编号也有各种变化
那么我们做flatten的时候
一样非常鲁棒地
把里面的所有数据结构都抹平
然后把所有的数据装在一个path
名为路径的一个list里面去
所以不管是什么样的数据结构
经过flatten之后
得到的结果都是一样的
-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物理模拟--第九章习题
-期末作业: 综合运用
--期末大作业