当前课程知识点:Grasshopper参数化设计与建模 > 第五章 Nurbs曲线与曲面建模 > 5.7 案例:鸟巢表皮钢结构 > 5.7.2
返回《Grasshopper参数化设计与建模》慕课在线视频课程列表
返回《Grasshopper参数化设计与建模》慕课在线视频列表
那么现在我们用
面和面相交的这种方式呢
是比较适合我们这个案例的
下面我们首先要对
要生成这个相交曲面的话
我们首先要对我们得到的这些
在平面上的这些线呢要做一个延伸
因为大家注意到鸟巢它是
它是这种下面小上面大的这种曲面
所以我们如果要跟整个曲面要相交的话
那么这条线要做一个延伸才可以
我们用scale去延伸每一条曲线
这条曲线
然后它要有一个延伸的一个基准点
这个基准点在实际上就在这个它的A点
或者说它的起点
然后给它一个factor
1.2 1.2应该够
我们看到经过延伸以后
我们从顶视图上来看一下
这些线就跟整个曲面都会
在各个方向都会有相交
同样我们对这样一组曲线也做一个延伸
因为它的起点也是一样的
所以就直接得到了这样的结果
下面我们要做的事情是
把这些曲线在z方向做一个挤出
surface底下我们有extrude 挤出
那么基本的曲线以及它的deraction
沿Z方向
我们给它一个一百的高度
这样就挤出了很多的曲面
这些曲面呢会去跟鸟巢的
基本曲面去做相交
那么这里我们从输入
这是我们输入的基本曲面
在输入这边的截面
所以我们就得到了很多的这个截面线
现在有很多的东西我们都可以不看了
把它们都关掉
这就是我们得到的鸟巢的一个基本的曲线
在得到这些基本的钢结构的曲线以后
下一步要做的事情就是
怎么给这些曲线加上一些方的管子
我们试一下直接加的方式行不行
比如说这里得到的曲线
我们先找到curve fram
然后在这个frame上我们去做curve
做截面线
用这个rectangle
然后得到这些截面
方向是不对的
如果我们对这个截面
对frame的基本方向做一个拆解
然后重新组合成另外的frame
原点还是一样的
看一下它的
X方向还是一样的
Y方向用Z
或者这样换一下 看起来比较好
那么就得到了跟线垂直的frame
我们把这个frame接到基本曲面上去
我们就得到了很多的截面的方框
这个方框我们可以定义一下它的大小
就是XY 的大小
根据鸟巢的尺度呢都是1.2
或者说是0.6的尺度
这个0.6是怎么来的呢
我们要组合成一个domain
实际上鸟巢的钢柱都是一米二乘一米二
所以我们用组合domain的方法
这里设一个-X 得到从-6到+6
然后给X给Y
然后我们把这样一些方形截面
把它用sweep1组合在一起
这个地方需要一个rail
这条rail就是我们的曲线
这边的这个截面线就是section line
大家看一下这时候我们就得到了
一个钢结构的形态
但是看起来并不太好
首先这个钢结构会出现扭转的问题
其次在很多的地方
按理说钢结构表面的方向应该跟
最原始的曲面的方向是一致的是平行的
但是现在它有些扭转
说明我们直接用曲线的一些参数去做
钢结构的时候
会出现一些问题
需要想别的办法
那这个别的办法是什么呢
就是我们要考虑到这个曲面
主曲面对钢结构方向的
方管子方向的影响
因此我们在这里要把这个曲面的信息
也拿过来来确定这个钢管的方向
我们在这里输入一个surface
把这个数据做一个接力
这样的话我们在做计算的时候
grasshopper程序会看起来会清晰一点
它本质上不会有一个大的差别
我们把它其实这个地方也可以替换掉
因为是同样的
我们用了这个surface以后
大家注意到
其实我们可以在这把这部分删掉
我们有了这些曲线以后
我们把它暂时先断开连接
有这些曲线以后我们可以evaluate
通过evaluate curve的方式
输入一系列的参数
那么在这可以对所有的参数做一个
reparametrize
在这边根据我们的需要输入
比如20个点
点密一些
得到了一系列的点和在这些点上的切线方向
那么为了要在这个线上
生成一系列的截面
而这个截面呢是刚才我们说
既考虑了这个线的延展方向
也要考虑曲面的方向
我们在这里需要用到曲面的法线方向
这里就会用到一个叫做closest point的
叫CP closest point
closest point在
grasshopper里面
是一个非常非常重要的概念
这个呢是跟rhino这样一种
曲线曲面建模的数学模型相关的
当然我们现在先不要把这个事情
考虑那么细
我们看到在grasshopper里面
我们有非常非常多的closest point
这些在我们后面的建模当中都会非常常用
现在我们用一个叫做
surface closest point
它会求一个最近点 什么样的最近点呢
我们给它一个点 任意的给一个点
然后再给一个surface
那么这个时候呢就会求出来
在这个surface这个曲面上
那么这个点在曲面上离它最近的那个点
或者说也可以理解为这个点
在这个曲面上的垂足点
垂足点也就是它的最近点
那么大家说
唉 这个我们为什么要用这种方式呢
因为实际上我们知道这些线
它是用曲面相交的方式得到的
所以这个线肯定在这个曲面上
而我们又把这
在这个曲线上求得了这一系列的点
所以我们能够保证这些点
都在这个曲面上
这时候我为什么还要去求它的最近点
这个点不就是它自己吗
确实是这样
但是closest point给我们
输出的除了这个点以外
还输出了它的UV坐标
这个点在这个曲面上的UV坐标
那么有了这个UV坐标以后
下面我们就可以去做一个
evaluate evaluate surface
我们前面用过一点
但是没有仔细去看它的内容
evaluate surface
当我们把surface给它
把这边新的点
新得到的这些点都给了UV坐标
那么我们就会得到个normal
就是说它的在这些点位上的法线方向
在这些点位上的曲面的法线方向
我们可以display一下这些法线方向
那么现在看起来是这个不太清晰
我们可以把一些预览把它们关掉
再看看
这是在每一个点位上都会有一个曲面的
法线方向
好 我们把这些法线方向现在就可以
重新组合出一个给它用的一个Frame
那么这个fRAMe
这个O呢就是我们的原始的这个点
这个点我们可以从这来从这来从这都可以
我们还是用最初的这个信息
那么它的X是什么呢
我们知道它的X是
这里还不能直接用
不能直接用就是因为
我们需要的是一个垂直于
这条线的一个frame
那么这个时候呢这个frame呢要求它的
一个方向是我们得到的法线方向 没错
另外一个方向呢应该是
一个这条曲线的切线和曲面的法线方向
作叉积以后得到的侧向的
这个方向的一个向量
我们用cross product
那么这里我们输入
一个是它的切线方向
曲线的切线方向
一个是曲面的法线方向
然后就得到了输出的这个V
这个V呢是它的
我们可以看一下这个V是什么
那么它就是一个沿着曲面
或者我们说
是跟曲线的切线方向相垂直
的这样一个向量
我们把这个向量呢接到X上面去
那这样呢我们就得到了
一系列的Frame或者说局部坐标系
同时前面这个信息也接着用上
那么我们在这里得到了一系列的方框
然后把这些方框呢用一个rail
用这些curve做rail
然后做13:23
就会得到我们想要的这个钢结构的
钢管的这个模型
我们在这儿呢可以选中它我们看一下
它跟这个曲面的关系呢就是平行的
这个表面跟曲面的关系就是平行的
然后也不会有扭转的问题
那么做到这样的效果
是因为我们既使用了曲线的方向的信息
也使用了曲面的方向的信息
所以才能够得到这样的效果
那么我们对这个程序再做一个简单的整理
注意到实际上在鸟巢里头我们说
内圈的这个曲线它也应该是有一根
钢结构把所有的构件连接在一起
所以我们在这里把程序整理一下
也就是说我们应该有一个curve的运算器
把这边的曲线以及这边得到的我们说
内圈的这条线能够把它们俩结合在一起
然后要做一个reparametenize
把它准备好
跟这边的结构是一样的
这儿还要做一个
这里的数据结构稍微有点复杂
还是这样说我们会在后面的
关于数据结构的介绍里头做更深入的说明
大家在这只要跟着我来做就好
我们在这做了flatten
把所有数据flatten以后
在右边再做一个graft
这两不能同时做的话
我们就在这做一个flatten
然后后面加入一个graft的运算器
然后有了这个结果以后
把从这里输出的
这些数据的连接都把它替换掉
这变红了
注意到其实我们在这里输入的那个曲线
它看起来不是在这个曲面的边缘
而是在底下投影的这条曲线
所以我们找一下
我们接过来的这个数据
它是从哪里来经过投影的数据
所以实际上应该是在投影之前的这个数据
所以我们用一个list item
但是我们从这里找到
能得到的就应该是一个看一下预览
那么它就应该是
这个曲面边缘的这条曲线
好 我们把它在这里接进去
然后再把底下的数
按住shift把它们一起都接进来
现在看起来这个程序还是有问题
好 那么检查了一下
这个问题是什么呢
是因为我们在这里最后加进去的这条curve
就是这个曲面边缘的这条curve
最顶上开洞这个地方的这条curve
它是一个periodic curve
是一个周期性的封闭的曲线
所以我们在这边做的一系列的操作
那么实际上会导致
因为我们这里用的是range的方式
那么就会导致在这个曲线在转了一圈以后
在最后这个点上
那么或者说它的起点和终点都在这里的话
那么这里会有两个矩形
两个矩形都重叠在一起
那么这个时候呢
它就不知道该如何做操作了
但实际上对于如果不是封闭的曲线的话
那么它两端是必须得有
这个section curve
这样才能够很好地得到这个结果
那么所以呢看起来我们不得不对
这种封闭的曲线和开放的曲线
用不同的编程策略来实现
那么这呢我们就需要做的事情是
把这里的程序
把这边的这个程序整个都复制一份
把它挪到上面去
或者挪到下面来吧
然后对程序进行调整
这里的我们说在组合之前的这个curve呢
我们就可以直接的给上面这部分的程序
然后让它正常的运转
然后对于我们说这里输入过来的
另外一个curve
我们用一个curve运算器把它接过来
然后在下面
它需要能够输入到这里的curve
以及这里的rail
那么这里的curve看起来它还有一点问题
那么是因为在这儿呢我们是需要
对它做一个reparameterize
那看到这边的结果它变红了
是因为我们需要对它做一个特别的操作
就是删掉其中重叠的那一个截面的矩形
我们用原来我们用过的方法
就是用cull index
那么在这里把我们的
所有的section curve全都从这里输入
然后去掉它的第零个
设定它的第零个
然后接到section line上面去
那么最后得到的结果
就是我们需要的这样一个结果
那么我们对这个程序的layout
稍微做一个整理
好 那么这个程序经过整理以后
我们看到它的这个逻辑关系会清晰一些
在这里我们把
我们输入的这个curve分成了两个分支
一个是在上面走的这些个截面线
另外一个是这个边缘的这条封闭的曲线
那么让它们经过了不同的过程
其实这个过程最重要的区别就是在这里
对于这种封闭曲线我们要把它
其中的第一个或者最后一个截面
要把它去掉
这样才能顺利地做出sweep的结果
那么当然在这儿
我们也可以另外一个思路
我们是可以把这些curve
先把它们都拿到一起来
比如说这边的这条curve
就是这条边缘的curve
和我们这边求得的这些交线
先把它们都组合在一起
做一个flatten
然后再做graft
在做graft以后
得到这边的49条曲线
但这49条曲线我们可以测试一下
有一个叫做closed
这是一个判断的用来做判断的一个运算器
把curve给它
它会来判断说到底哪些曲线它是封闭的
哪些曲线不是封闭的
也就是说我们这里正好要在上下两边要去
有不同的这个处理
你看到第零条曲线它是true
也就是实际上就是我们这个
这个环形的这个钢梁
那么有了这个以后呢
我们就可以用到前面的dispatch
用dispatch的运算器
把这个curve
在这边经过graft以后
得到的这个curve拿过来
然后把这边的pattern给它
那么对于这种closed curve
那么我们就让它接到下面去
然后对于这种不是closed curve
我们就把它接到上面去
这个是我们用到的这个曲面的信息
可以把它摆在一边
把这个程序也是对它进行一个整理
那么这样的话呢我们就不必担心说
我们在这个做这个表皮的时候
如果遇到了比如说是封闭曲线
但是我们没有意识到它是一条封闭曲线
导致程序出错的这种可能性
但是大家在去看这个鸟巢的时候呢
看真实的鸟巢的时候会发现
其实鸟巢里头的钢结构
比我们现在做的这个模型要复杂很多
那么其实我们在这里建模的逻辑
是希望能够实现鸟巢里面
主要受力的钢结构的建模
但是鸟巢为了实现它这种
杂乱的或者说看不出规律的这种立面的效果
表皮的效果呢
它增加了很多其他方向的这个钢结构
而这些钢结构呢不一定起很重要的结构作用
但是它在视觉上是为了要跟
这样的主要的钢结构混在一起
产生这种混乱的自由的
或者说没有规律的效果
那么为了实现这样的效果呢
我们是可以再去做一些
我在这里已经做了几个
做一些平面
这个可以说是比较乱的这些平面
然后让这些平面呢
去跟我们的这个基本的这个
鸟巢的形态的主曲面去做相交
所以我们可以在这里surface
set multiple surface
我们把这些surface是把它选中
在这里模型里我们就可以不去看它了
那么把这些surface呢
然后我们用intersect
两个surface去相交的办法
得到这些交线
来看到这些交线
然后我们把这些交线呢
现在就比较简单
我们可以把它一起都汇聚到
这个运算器上去
现在把它们都关了 预览都关掉
那么在这儿我们还缺一步
就是对这个交线做reparametenize
那么就会得到一些个
其他的线钢结构的这个线
当然现在还不够
所以呢我们把这个作为一个练习
大家可以基于我们这个程序
然后再增加更多这种交线
就是或者说这种截面这种平面
然后去生成更多的交线
得到一个更加混乱和没有规律的
更像鸟巢的一个结果
这个作为我们的一个练习
总结一下本节案例的步骤
首先输入曲面轮廓
通过Divide Curve
Shift List、Extrude
面相交等一系列 操作
获取表面钢结构基本形态
第二步
通过曲面法向量
曲线切向量的积
获得钢结构方管的截面
并生成方形截面钢结构形体
第三步
使用Dispatch运算器
区分闭合曲线与非闭合曲线
并分别进行钢结构的生成
最后,我们还有一个课下的练习
就是在课上演示的基础上
添加新的斜向钢结构
-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物理模拟--第九章习题
-期末作业: 综合运用
--期末大作业