当前课程知识点:Grasshopper参数化设计与建模 >  第四章 Grasshopper数据结构(一) >  4.4 案例:项链 >  4.4.1

返回《Grasshopper参数化设计与建模》慕课在线视频课程列表

4.4.1在线视频

下一节:4.4.2

返回《Grasshopper参数化设计与建模》慕课在线视频列表

4.4.1课程教案、知识点、字幕

本节是一个案例的学习

我们将以项链的建模为例

演示列表的数据结构

在实际建模中的运用方法

接下来我们再介绍一个案例

通过这个案例大家进一步熟悉

关于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去改变这里的随机数

随机种子

那么去挑选一个比较好的一个结果

那么做到这里呢其实

我们就可以引入一点新的设计

Grasshopper参数化设计与建模课程列表:

第一章 参数化设计简介

-1.1 参数化设计简介

--1.1

--模型文件

第二章 Grasshopper简介

-2.1 Grasshopper简介

--2.1

-2.2 Grasshopper界面与基本操作

--2.2

-2.3 Bake与Internalize Data操作

--2.3

-第二章习题--作业

第三章 Grasshopper基本数据类型

-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

-第三章习题--作业

第四章 Grasshopper数据结构(一)

-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数据结构(一)--第四章习题

第五章 Nurbs曲线与曲面建模

-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曲线与曲面建模-- 第五章习题(二)

期中大作业

-期中作业:工艺品设计

--期中作业

第六章 Grasshopper数据结构(二)

-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数据结构(二)--第六章习题

第七章 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建模技巧--第七章习题

第八章 Mesh建模基础

-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建模基础--第八章习题

第九章 Kangaroo物理模拟

-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物理模拟--第九章习题

期末作业

-期末作业: 综合运用

--期末大作业

4.4.1笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。