当前课程知识点:Grasshopper参数化设计与建模 > 第五章 Nurbs曲线与曲面建模 > 5.4 由点建立曲线 > 5.4
返回《Grasshopper参数化设计与建模》慕课在线视频课程列表
返回《Grasshopper参数化设计与建模》慕课在线视频列表
在这一节我们将给大家介绍
由点来建立NURBS曲线的方法
并且介绍一个案例
就是DNA双螺旋结构的建模
我们说生成一个Nurbs曲线
可以从控制点的输入开始
我们在这里演示一下
Pt point
Set Multiple Point
注意在设置控制点的时候
我们必须要有输入的顺序
所以我们一个一个地来选择这些点
回车
我们现在有了五个点
然后在Curve里面我们使用
Nurbs Curve
在这里输入控制点
就会得到这条曲线
如果我们想生成一个封闭的曲线
我们可以在这里选中Periodic
如果我们想生成一个封闭的曲线
我们可以在这里选中Periodic
就是周期性
把它的布尔值设成True
就会形成一个封闭的曲线
那这个封闭的曲线
现在我们可以更进一步地理解
那这个封闭的曲线
现在我们可以更进一步地理解
这里的周期性到底是什么意思
比如说刚才我们选点的顺序是
0 1 2 3 4
那么到了第四个点的时候
如果我们拖动它的位置
我们会注意到其实这个点的位置
对于曲线形状的影响
已经超过了第0个点
到了0和1这两个点之间
也就是说一个点的影响范围是周期性的
或者我们看看第0个点
实际上它也会对这条曲线
它的左边和右边都产生影响
实际上它也会对这条曲线
它的左边和右边都产生影响
所以这里我们就能更好地理解
为什么我们说把一个曲线首尾相接
要用的关键词是周期性这个词
为什么我们说把一个曲线首尾相接
要用的关键词是周期性这个词
当然如果我们想做的是
经过这些点的一条Curve
我们也可以用这里的
Interpolate Curve
看一下它的名字
Interpolate Curve
同样我们可以在这里选择
它是一个周期性的曲线
移动这个点以后我们看到
它对这条曲线的影响是一种周期性的
当然前面我们也说过可以
这样来连接曲线
我们选择Close
这都是几种不同的生成曲线的方式
如果想要精确地生成一条曲线
我们可以采用
先把这条曲线上的若干个点的位置
用算法求出来
然后再用Interpolate Curve
把它们连接在一起的这种办法
比如说
现在我们在Rhino里面有一个点
我们希望以这个点为圆心
生成一条圆的曲线
我们希望以这个点为圆心
生成一条圆的曲线
那么我们就可以
先在这个圆上面找到一系列的点
然后再把它们连接起来
那么怎么在圆上面找到一系列点呢
用Sine Cosine
然后让这两个值
输入一个跟弧度有关的数据
然后把它们组合成xyz的坐标
应该用Cosine作x
用Sine作y
把原点跟这里新生成的点加在一起
然后在前面我们给它一个序列
让这个序列呢是从0到2π的
所以我们用一个Range
注意这里的Range我们可以
组合它一个Domain
它的起点我们用一个Panel输入0
用Construct Domain
把0和2组合在一起 形成2π
那么我们这样就得到了
看到这里的11个点
这11个点是我们
后面要形成这个圆的编辑点
或者说需要经过的这些点
后面我们就可以用一条
Interpolate Curve
来获得这条圆的线
当然也许这个圆看起来
如果觉得还不够圆的话
我们可以在这里的N
给它增加更多的点
比如说20个点
让这条曲线有更多的点来控制它的形状
这样我们就得到了一个圆
注意当你的图形如果
你在grasshopper里生成的图形
如果找不到了
或者它不在你视线范围的中心的话
你可以在这里鼠标中键
或者它不在你视线范围的中心的话
你可以在这里鼠标中键
然后选择这个zoom
那么它就会
把在grasshopper里生成的图形
聚焦到你的rhino视图的中心上
这样就比较方便
可能有同学会说
这里点的组合
其实是不是原理上应该是向量呢
确实是这样
如果用向量来表示
更符合画圆的基本逻辑
但是向量跟点
在grasshopper里面
但是向量跟点
在grasshopper里面
它的数据结构是非常相像的
它们一定程度上也可以相互替换
我们在这里可以改成xyz的向量
然后把这个点删掉
那么结果是一样的
那么如何调整这个圆的大小呢
它的半径呢
我们可以用设定向量长度的方法
在vector里面有amplitude
我们可以设定这个vector的大小
再把它给这边的
需要叠加的地方
跟原点加在一起
我们就会得到比较大的一个圆
可以调整它的大小
这个时候如果把这样一个slider
把它替换成一系列的数据
比如说用一个series
我们让它生成n个数据
在count 这里输入
然后我们把它替换掉这里的a
就会得到一条渐开线
一条半径越来越大的渐开线
为了不和前面的图重在一起
我们把这个点移动一下
这是我们得到的一条渐开线
同样我们也可以把刚才的圆
变成一条弹簧线
同样我们也可以把刚才的圆
变成一条弹簧线
怎么变成弹簧线呢
这个时候我们的半径是不变的
但是z方向的坐标是变的
这里的结果有点奇怪
这是因为我们把sin和cos搞反了
这里呢实际上sin应该做y坐标
cos应该做x坐标
我们把它调转过来再看一下
这里的结果有点奇怪
这是因为我们生成了
大小不同的很多的移动向量
但是又通过一个
设定向量长度的运算器
把所有的向量长度都设为了1.72
所以这样的结果就不对了
在这里实际上应该做一个替换
直接用这里生成的vector
输入到这边去移动中心点
这样的话我们就得到了一条
弹簧曲线
但这个弹簧曲线现在看起来有点高
所以可以在前面这里加入一个slider
或者小一点
加入一个slider 1.000
我们可以让曲线更紧密一些
另外一个问题是
我们看到最后一个点
看起来有点奇怪
这是为什么呢 是因为
我们在这边用range生成了22个点
而我们在这里用series生成的点呢
只有21个
所以在c这里我们应该给它加1
或者用其他的办法对齐
那么我们在这里呢
实际上希望替换一下
用range来生成这个区间的方式
也把它变成series
同样给它这么多的点
然后用一个1.000来生成它的区间
当然这个区间不能太大
我们要给它调小一点
然后替换掉这里的n
这几个运算器就暂时没有用了
把它拿到一边
这几个运算器就暂时没有用了
把它拿到一边
我们看到这里我们可以
让这条曲线有更多的控制点
让它变得越来越高
变成一个可调的弹簧线
因为用的都是series
所以生成点的数量是一样的
就不会出现刚才最后组合
多出一个的问题
那么下面如果我们想做一个
比如说像DNA的双螺旋结构
其实可以在这个程序的基础上
把这条曲线做一个旋转
把这条曲线做一个旋转
Rotate
把一个geometry输入进来
基于一个点
我们在这里直接用点来做它的坐标
然后让它旋转一个角度
这里是0.5π
我们可以给它输入π
就得到了一个DNA的双螺旋结构
我们把前面的一些预览把它关掉
比如说这个点把它关掉
我们可以调整一下
这个双螺旋结构它的高度
我们可以给它
在这个上面画出很多的连线
那么这个连线呢
可以用什么样的办法来做呢
可以用我们刚才学过的Evaluate
Evaluate Curve的办法
得到第一个curve上的点
当然我们在这里需要
对curve做一个Reparameterize
然后给它一个Range
根据range生成一系列的点
生成一系列的参数
然后来对应得到点
生成一系列的参数
然后来对应得到点
那么这里我们可以输入
slider 得到很多的点
可以少一点
同样我们可以用相同的方法
得到另外一系列的点
然后把两边的点用线连在一起
这样就得到了一个DNA的双螺旋结构
接下来呢
我们想给这样的双螺旋曲线
加上一个方的管子
对中间的这些连线呢
加上一些圆的管子
我们看看这个怎么来做
对于这样的曲线
我们说这两条双螺旋曲线
我们要给它加上方的管子
那么这里会用到一个叫做
Perpendicular Frames
我们把curve接到这上面去
注意这个运算器在Curve底下的
Division底下
我们看到沿着这条曲线
就生成了一系列的局部坐标系
frame
但这个frame的密度还不是很高
所以我们可以给它
我们借用这里的连线的分段数
借用这个数字把它接到n上面
我们借用这里的连线的分段数
借用这个数字把它接到n上面
来增加它的分段数
我们看到这个面就比较多了
那么这个frame实际上是
沿着曲线的一个局部坐标系
那么这个frame实际上是
沿着曲线的一个局部坐标系
我们在这个frame上使用Rectangle
这样一个运算器
我们把frame给它
这样的话就能生成一系列的方形的截面
方形截面的范围呢
我们看到在这里需要用到Domain
我们可以用Construct Domain
然后我们用一个slider
比如说0.20的slider
接到A 接到B
然后在A这里我们输入公式
Expression -x
把它变成它的相反数
然后用它分别作为x和y的输入
那现在我可以把这个frame
把它预览关掉
这样看得清楚一点
好 看起来还是有点大
我们可以再小一点
然后对于得到的这些rectangle
那么我们把它用Loft的方式
最后把它变成一根管子
然后这个预览就可以不看了
包括中间的有很多的点
我们也可以不看它
这样就得到了一个方向的方管子
其实大家也可以直接在这里
把我们得到的另外一条曲线
这里因为预览被关掉了
这条曲线我们也可以把它
按住shift接到C上面去
就这个Perpendicular Frame上面去
我们得到另外一条管子
然后对于这里的这根连线呢
我们可以给它加上一根圆管子
叫Pipe
这个Pipe呢它有一个半径
我们先给它设定一个0.05的
比较小的一个半径
然后把管子给它
好这样的话我们就得到了一个
双螺旋结构的模型
总结以下本节的要点
本节我们将介绍了由点建立NURBS曲线的不同方法
包括Nurbs curve、Interpolate curve、Polyline
接下来我们介绍了
DNA双螺旋结构建模的案例
包括四个步骤
步骤1:使用三角函数和向量构建弹簧曲线
步骤2:使用旋转操作建立双螺旋线
步骤3:使用evaluate操作建立双螺旋之间的连线
步骤4:使用PerpFrame、Rectangle、Loft操作生成方管、圆管
-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物理模拟--第九章习题
-期末作业: 综合运用
--期末大作业