当前课程知识点:Grasshopper参数化设计与建模 > 第七章 Grasshopper建模技巧 > 7.2 案例:望京soho表皮 > 7.2
返回《Grasshopper参数化设计与建模》慕课在线视频课程列表
返回《Grasshopper参数化设计与建模》慕课在线视频列表
在这一节,我们将给大家讲解一个案例
望京SOHO表皮建模演示
同学们好
这一讲我们来为大家介绍
建模技巧部分的实例
望京soho的表皮
望京soho的整体形态
大致可以描述为
三块直立的流线型形体
在其外部轮廓基础上
使用contour
也就是等高线的操作
截取到楼板和幕墙
并在幕墙部分增加一定的
随机图案的变化
我们今天就为大家演示
在grasshopper中
如何使用image sampler
进行望京soho的表皮建模
首先
让我们来观察一下
望京soho表皮的生成逻辑
同扎哈在北京的另一个项目
银河soho一样
望京soho的楼层
是以曲面形体为基础
通过contour
也就是等高线的操作
获得平行的结构
就是使用一系列平行的平面
同实体相交
在相交处形成楼板和幕墙
在此基础上
望京soho还对平行的白色幕墙结构
进行了发展
在平行形体的基础上
增加了随机的宽窄变化
我们可以发现
在宽窄变化上整体有一定的图案
同时又有随机效果的组合
但是其宽度的变化范围
基本上是确定的
因此我们大致能够用类似的参数化逻辑
来在grasshopper环境中进行复现
我们来看一下望京soho的表皮
这个建筑整个巨大的体量
是从一个类似石块的
这样一个
自由曲面的形态上切分出来的
形成了这种长条窗
和条状的白色金属幕墙相交织的形态
那么我们看这个白色的
环形的金属幕墙
它只有宽和窄两种状态
那么总体形成的图案
看起来是有一定的规律
但是也存在一定的随机性
这是望京soho的表皮的基本特征
下面我们就在grasshopper当中
尝试去建一个类似于望京soho
这样的一个表皮的形态
我们已经在rhino里面
做好了一个基本曲面
通过半球的形状进行变形以后
得到一个这样的曲面
对这个曲面我们首先可以做的
就是取它的等高线
contour 就是等高线
我们把surface给它
这里还需要输入其他几个参数
比如point
是从哪里开始的
我们从原点开始
用它的缺省值就可以
direction
是z轴方向没有问题
下面需要给它一个distance
也就是层高
我们假设层高为4.5米
这样我们就得到了
在这个基本体量上切分出的
很多的间隔4.5米的等高线
我们把这些等高线设定一下长度
每条等高线都有不同的长度
那么我们希望能够做的事情是
通过image sampler
然后我们双击
load一张图片
这张图片
是我们前面做好的一个pattern
我们希望把这样一张图片的pattern
把它用到望京soho 的表皮上去
那么我们就需要在每条等高线上
取一定的取样点
然后用这些取样点
去这个图案上找对应的值
所以有了这个长度以后
我们下面可以做一个事
就是division 做除法
对于这个长度给上一个10的距离
然后去切分
这样就能够得到每条曲线
它需要切分成多少段
下面我们divide curve
用这些curve按照我们算出的
需要切分的段数
对它进行一个划分
得到现在这种效果
注意这里大家用divide length
也是可以的
我们在这里直接输入10m
然后输入我们的curve
但是它有一个问题就是
对于除不尽的情况下
如果curve的长度不是10的倍数
除不尽的情况下
会出现一些小的短的线
那么从我们这个案例来讲
我们还是采用这种方式更加合理一些
好 下面我们去
因为我们已经得到了这些切分的curve
我们就可以去找一下
在这里我们把这里得到的曲线
做reparameterize
这样它的参数的范围就变成了从零到一
另一方面
我们也想去获得这些曲线在
高度方向的坐标
我们可以用这样的办法
来获得整个建筑的高度
即bounding box
这是一个非常常用的工具
我们把这个曲面
输入到bounding box里
就会得到一个
对这个曲面进行包络的长方体
接下来我们对这个bounding box
做一个拆解
这个叫deconstruct box
我们就会得到它在x y和z方向的范围
我们对z方向的范围
用一个deconstruct domain
就能得到它的高度范围
那么下面我们对这个范围进行切分
输入division
这里输入4.5米的层高
这里输入总的高度
就会得到我们一共需要切分成33层
我们用这个参数去生成range
把零到一的范围划分成33份
这样就得到了每条曲线
它在0到1范围内相对应的参数
下面要做的事情是把
这里的点沿线的参数
和这里的高度的参数组合在一起
把x y z组合成一个坐标
把t给x方向高度给y方向
注意这里
因为t参数是分布在33条曲线上
所以我们在这里
需要把这个range呢
做一个graft
range得到的这些产品做一个graft
这样就变成了34个路径对34个路径
每个路径为一对多的关系
组合出来这些点呢
我们可以zoom in到这里看一下
在原点的附近我们看到
组合出来的参数的分布是这样的
然后我们用这样的点的分布
去image sampler上面
获取一个色彩的参数
在这里把它的参数输出改成灰度
用panel来看一下这里得到的灰度值
那么实际因为在望京soho的表皮上
我们看到它有一些图案
但是同时也有一些杂乱信息
有一些干扰
所以我们在这里再增加一个
随机的因素进去random
那么生成多少个随机数呢
它应该是在不同的路径上生成
跟这里我们计算所得的每条线上的
切分点数量一致的随机数
所以我们给它这个数量
那么右边就会得到
跟这边数据同构的一些随机数
大家看到49对49
当然这里的随机数
为了让每个随机序列都不一样
如果不做任何处理
大家看看 0.771 0.404
这是第一个序列
它开始0.771 0.404
所以我们回到这边也是0.771对0.404
所以所有的序列都是一样的
所以我们需要在这里输入不同的
seed 就是随机种子
我们通过一个series来生成随机种子
那么这个series我们需要的是
知道有多少条curve
用series来生成相应的随机种子
我们用least length
把这里的curve拿过来
然后做一个flatten
这边做flatten
右边不需要
这样我们就得到了34条线
我们在这里输入count
就会得到从0到33的34个整数
我们把它当做随机种子
这样每个序列
每条线上得到的随机种子不同
它们的效果就会有差别
这边不需要看了
我们现在将这个随机种子
还需要做一个graft
让它们跟这边的每一个序列去做对应
然后我们就可以让2个数加在一起
一个是从image sampler里读出的
图像的数据
一个是随机的种子得到的随机数
对这个数呢
我们说这里的随机数的
它的影响力的大小
我们要做一个界定
所以在这里输入一个0.4的slider
然后把它组合成一个domain
组合成一个从-0.4到+0.4的domain
我们在这里输入expression-x
这样限定了随机数的大小
也可以在这里做调整
得到这边的数以后
我们记得在望京soho立面上
它的金属环形表皮只有两种宽度
所以需要把这里得到的参数二值化
二值化很简单 integer
我们看一下经过二值化以后
是不是就是我们想要的结果
用display
我们在这里做一个flatten
确实是只有0和1两个值
那么是满足我们的要求的
这里的flatten暂时取消
下面根据这个值
我们再去组合出
这个我们说在表皮上的
这些金属条带的宽度
那么这些宽度呢
我们用一个加权的办法
或者说我们先给这样一个
经过二值化得到的0和1呢
给它一个权值
一个slider和multiplication
然后我们也要加上一个基础的数
因为实际上条带的宽度
在参数取0时仍然需要一定的宽度
这个宽度是多少呢
比如说我们认为它是0.3
在后面的算法里可以看到
相当于这个条带宽度的一半
所以把它加在一起
这样就得到了一个条带在局部的宽度
下面去要做的就是
在曲面上找到
每一个金属条带表皮的具体位值
我们对于在曲面上找到的每一个点
我们去构造一个
跟曲面相关的局部坐标系
这样的话我们需要用CP
closest point
用curved closest point
得到它的tangent
用surface的CP closest point
得到normal
实际上在前面已经有了tangent向量
这里就不需要
所以我们把point给它
把surface给它
我们就会得到normal方向
进一步我们通过将tangent
这个要先做evaluate surface
才能得到UV
这里可以双击一下
从这儿分开得到
就是一种应用双击以后
可以加上分叉
把curve数据进行分叉
然后我们做一个cross product
将tangent向量和normal向量
进行一个叉积
就得到了第三个方向的向量
然后去组合生成一个新的坐标系
下面对这样一个
经过cross product得到的vector
去设定它的长度
就相当于沿着这样一个方向
去移动我们原来的点
我们用amplitude设定这个vector
用谁来设定
就是用我们刚才在这边得到的
可以把程序的位置调整一下
然后用add或者用move也可以
我们把这些点
这里我们得到的这些点给它
然后加上另外一个vector
去生成另外一个方向的
向另一个方向移动得到的点
所以这里我们输入一个-x
在maths底下的-x
我们得到另外一个方向的点的位置
下面把这些点联系在一起 连线
interpolate curve
这边也interpolate curve
我们把前面不需要看的
这些都可以先关掉
看起来程序有点问题
我们检查一下这个逻辑在哪里有问题
实际上我们在这里接入的并不是
本来应该接入点的信息
但这里接过来一个tangent向量的信息
所以这是不对的
所以我们从这里的点开始
然后去接入加法
那么这样看起来就比较靠谱
这个点就可以不要了
所以我们就得到了两条
interpolate curve
我们看一下它们的数据结构
每个数据都是分布在不同路径上
我们可以用一个merge
把这两组数据组合在一起
就得到了每一个路径里有两条线
然后下面可以用loft
来生成曲面的环形的表皮效果
但是现在看起来
这个环形表皮的区分度并不高
是因为我们这里乘的系数0.25比较小
我们提高这个系数
看一下最后的这个效果
转一转就会发现这里
这个线并没有连上
没有形成环形的封闭的表皮
所以我们在这里做loft的时候
不是在loft是是在这里做curve的时候
我们就要在这里选中
让它变成periodic
这里也是periodic
最后得到的结果就是这样
当然大家可能会想
我是不是也可以在这样一个
表皮的基础上去增加
内部的玻璃幕墙呢
也是可以的
那么增加玻璃幕墙我们就会用到
最初形成的这些截面线
这些线大概是在楼板的位置上
所以我们可以
让它们做一个offset curve
注意这个现在经过offset之后
它往外走
所以我们要在这里输入一个
0.3的slider
这里加上一个-x
得到内部的一条线
然后我们对它做extrude curve
沿着z轴的方向extrude一个层高
但这里需要加上-x
因为是向下extrude
这样就得到了内部的玻璃幕墙的效果
这个可以让它再加大 到0.4
大家可以根据需要去调整
如果考虑楼板的厚度
这里还可以-x乘上0.8
然后对这个玻璃再做一个
向下移动 move
沿z轴方向向下移动0.5
加上expressionx
前面这些可以不看了
把这个结果拿过来
注意到我们的这个表皮呢
就是它最窄的地方过于狭窄
所以还需要给它做一个调整
让它的基本宽度能够宽一些
加上一些材质的效果以后就得到了
我们这里完成的一个
望京soho的表皮的编程
总结一下这个案例的步骤
首先
我们载入轮廓曲面
使用Contour运算器获得曲面上的等高线
第二步
使用DivideCurve运算器将等高线分段
第三步
将纹理图像输入ImageSampler运算器中
获取灰度数据
第四步
使用灰度数据结合随机扰动
控制等高线上下波动
生成表皮纹理
最后一步
生成内部玻璃幕墙,并调整显示的参数
-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物理模拟--第九章习题
-期末作业: 综合运用
--期末大作业