当前课程知识点:Grasshopper参数化设计与建模 > 第四章 Grasshopper数据结构(一) > 4.4 案例:项链 > 4.4.1
返回《Grasshopper参数化设计与建模》慕课在线视频课程列表
返回《Grasshopper参数化设计与建模》慕课在线视频列表
本节是一个案例的学习
我们将以项链的建模为例
演示列表的数据结构
在实际建模中的运用方法
接下来我们再介绍一个案例
通过这个案例大家进一步熟悉
关于List的操作
我们输入pt
注意到在Rhino中我已经画好了两个点
一个是在原点 一个是在01这个点
注意到在Rhino中我已经画好了两个点
一个是在原点 一个是在01这个点
我们用两个point运算器
分别把这个两个点拿过来
我们用两个point运算器
分别把这个两个点拿过来
我们再用slider
创建一个在这两点间可以变化的点
number slider
以及一个xyz construct point
以这个slider的数据作为x坐标
可以看到这个点就能在两点间滑动
我们现在把上面这两个点组合一下
我们希望在这两个点之间
画一个跟这两个点都相切的球体
这个球体将会以这两点的中点作为球心
以两点之间的距离作为半径
这个球体将会以这两点的中点作为球心
以两点之间的距离作为半径
我们把这个中点作出来
我们会用到add 加法
把两个点加在一起
然后再division 除法
用2去除它 就得到了这个中点
这里我们可以用更简洁的方法
用2去除它 就得到了这个中点
这里我们可以用更简洁的方法
就是用公式的方法
这里我们可以用更简洁的方法
就是用公式的方法
在Math下用它来做
输入一个点再输入一个点
然后在公式里输入x+y/2
那么也会得到相同的结果
在这两种中选择一个来操作就可以
有了这个中点以后
下一步求它们两个之间的距离
Distance
这个点和下一个点之间的距离
这个距离我们也要除以2
把距离除上2就是它的半径
接下来我们就可以画这个球体
Sphere
以它为球心以这个为半径
当然另外一边也是同样的操作
我们可以把上面部分的程序复制一下
把其中的一个输入替换掉
然后再把距离这部分也复制一份
把其中一个输入替换掉
然后我们再画一个球体
这样我们就得到了两个球
拖动滑动条
它的大小是可以变化的
这是一个简单的案例
但是如果我们想
在两点之间增加更多的点呢
我们怎么操作呢
这里我们会用到比如说Range
大家已经很熟悉了
如果我不改变参数的话
它会在0到1之间生成10段
一共11个数
这里我们就开始使用List
这个list我们把它组合成xyz
construct point
把它组合成XYZ的坐标
注意在这里我把y值改为1
把它组合成XYZ的坐标
注意在这里我把y值改为1
我把这些点提到一个
跟刚才区别开放在这里 好看一点
看起来清晰一点
有了这些点以后
我们如果在11个点之间作10个球
有了这些点以后
我们如果在11个点之间作10个球
我们就会用到前面学到过的shift
shift list这样一个运算器
我们把11个点给shift list运算器
然后使用它的缺省值
也就是说我们只向后错动一个数
同时在wrap选项中设定为false
那么这样就会把这11个点当中的
第1个到第10个把它拿出来
就是后面10个拿出来
为了采用刚才类似的操作
同时还需要把这11个点的前10个
把它拿出来
同时还需要把这11个点的前10个
把它拿出来
我们这个我们会用到一个sublist
或者叫cull index
就是把一个list里的某一个数据去掉
这里很显然我们会把最后一个数据去掉
就是把一个list里的某一个数据去掉
这里很显然我们会把最后一个数据去掉
我们当然可以在这里
把这个index设成10
那么就会得到前面的10个点
但是有可能会出现这种情况
我们在这里也许会输入15个点
但是有可能会出现这种情况
我们在这里也许会输入15个点
那么这时候用cull list
我们在这儿直接输入10它就不合适了
那么这时候用cull list
我们在这儿直接输入10它就不合适了
因为这个数是一个变化的数
所以在这里我们
因为这个数是一个变化的数
所以在这里我们
一种可能性是我们直接把
把这个15接入到cull list这里
就是去掉
在一个list中去掉一个元素的方式
我们可以用这种方式去掉它
在一个list中去掉一个元素的方式
我们可以用这种方式去掉它
去掉最后一个点
我们也可以用另外一种方式去掉
还是用同样的运算器
但是我们在这儿呢
做一个什么样的操作呢
但是我们在这儿呢
做一个什么样的操作呢
在这里我们给这个list
做一个reverse把它反过来
在这里我们给这个list
做一个reverse把它反过来
然后在A这里把它的index输成零
也就是把它颠倒以后去掉最前面的一个
然后完了以后再做一次颠倒
那么这个结果和这个结果是一样的
大家看到这两个方法
我们做出来结果是一样的
我们把它放在一边这也是一种可能性
大家回去以后可以试一试
我们把它放在一边这也是一种可能性
大家回去以后可以试一试
好 那么我们现在有了这两个list
就可以去求它们的中心点
比如说我们可以借用
前面用过的这个公式
我们把它给了这公式以后我们就可以看到
实际上已经求得了
我们把它给了这公式以后我们就可以看到
实际上已经求得了
这个list里面的这些点
就是两点之间的中点
同样我们也可以去求一个distance是吧
距离 两点的距离
然后把它除以二
我们把这个可以拷贝下来
把这边的连接替换掉
然后sphere
我们看到这样的话我们就在这里
做了15个球
我们可以拖动滑动条
做了15个球
我们可以拖动滑动条
可以形成这样的球体
那么接下来如果大家想如果说
我们想做的是大小不同的球
可不可以呢 其实是可以的
因为只要我们生成了
可不可以呢 其实是可以的
因为只要我们生成了
这个序列上的这些点
就是两个球相切的这个点
那么通过这个逻辑
我们就可以生成任意的这样一种
那么通过这个逻辑
我们就可以生成任意的这样一种
像项链一样的这种效果
我们就把这个程序
因为我们这是一个备选
所以我们把下面这部分复制一下
ctrlc ctrlv然后把它们拿下来
我们在这里把前面的这个运算器的
所有的数据把它替换掉
然后看看能不能得到
一个新的一个序列
用什么呢用random
我们同样用这样一个slider去输入
来生成一个0到1之间的序列的一个数据
我们同样用这样一个slider去输入
来生成一个0到1之间的序列的一个数据
0到1之间的序列的数据
当然这里我需要为了跟这个结果区分开
我把这里的Y值呢给它改成2
那么现在
我们先要现在想要去操作的这个设计
或者说这个grasshopper的程序呢
是在这里
我们如果直接做一个替换
看看会得到一个什么样的结果
是一个看起来好像并没有得到
我们想要的结果
先把这个删了
我们想要的结果
先把这个删了
我们看看这里出了什么样的问题
这里的问题就在于
当我们在这里输入12这个整数的时候
在前面的我们说用
range来生成的数里面
它是一共13个数
range来生成的数里面
它是一共13个数
但如果我们用random这个运算器
我们得到的是12个数
所以在这里
当我们去切掉最后一个数的时候
其实做不了就是这个数是对不上的
因为我们这个list只有12个数据
这个12个数据的编号是从0到11
而我在这里要切掉它的位置12的这个数
这个数是不存在的
而我在这里要切掉它的位置12的这个数
这个数是不存在的
所以这个运算其实并没有真正的起作用
这个数是不存在的
所以这个运算其实并没有真正的起作用
就会导致这边得不到我们想要的结果
那么在这里我们可以做一个事情
就是在A这里
鼠标右键输入一个expression
就是X减1
然后让它完成一个
把输入的数据减掉1的这样一个计算
经过这个计算以后我们就会得到
看到这个结果
当然这个结果看起来并不是
我们想要的一串求的这个结果
这是为什么呢
这是因为在这里的点
我们从这里输出来的这些随机数呢
这是因为在这里的点
我们从这里输出来的这些随机数呢
它是顺序是混乱的
我们从这里输出来的这些随机数呢
它是顺序是混乱的
因为顺序混乱所以我们得到的球呢
就会在这个点的序列就是跳来跳去
所以得到的球呢也会
不是我们想要的这个结果
所以在这儿我们需要加入一个
也很简单加入一个sortlist
所以在这儿我们需要加入一个
也很简单加入一个sortlist
对这个list进行一个排序
也很简单加入一个sortlist
对这个list进行一个排序
然后把经过排序的数呢拿过来
我们看到这样的话就得到了
刚才想要的这种
就是这个球的大小呢是随机的
但是它呢又是一个像项链一样串在一起的
就是这个球的大小呢是随机的
但是它呢又是一个像项链一样串在一起的
这样一个程序的运行结果
当然我们可以增加这个球的数量
我们也可以用一个
slider去改变这里的随机数
随机种子
那么去挑选一个比较好的一个结果
那么做到这里呢其实
我们就可以引入一点新的设计
-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物理模拟--第九章习题
-期末作业: 综合运用
--期末大作业