» 建筑小蝈蝈 - //m.stpapt.com 我们塑造了建筑,建筑亦塑造了我们 Fri, 20 Sep 2024 01:15:24 +0000 zh-CN hourly 1 http://wordpress.org/?v=3.8.4 经验 | GH-这样的屋面随机开洞咋做? //m.stpapt.com/archcollege/2018/01/38787.html //m.stpapt.com/archcollege/2018/01/38787.html#comments Thu, 11 Jan 2018 14:10:16 +0000 如何做图中的屋顶上面随机的开洞?

360se_picture (2).webp (54).jpg 

(上图来源于网络)

今天就和大家一起讨论一下这张图

咱们可以先观察观察这张图

360se_picture (2).webp (55).jpg 

其开洞有大有小

360se_picture (2).webp (56).jpg 

开洞的样式是菱形,其开洞形式就是在一组菱形的网格下,对每个菱形网格进行缩放等操作,形成一个个比原来菱形要小的菱形。

下面看具体操作

1.我们就用一块曲面来做这个案例

先在rhino中建一个曲面,再将其拾取到GH当中。

2.然后利用GH里的一个插件 lunchbox。

用其diamond panels运算器将其细分成菱形面(初学者不建议依赖插件懂有这个东西就行了。最初的学习还是以GH自带运算器为主)

360se_picture (2).webp (60).jpg 

(黑色的边线只是显示效果,为了让大家看的更清楚)

3.初始的菱形面做出来了,然后我们要做的是将每个菱形面的边线提取出来,然后缩放。

先提取边线,提取边线这步我比较粗暴。之间将面接给曲线参数,自动就转化成曲线了。当然也可以用brep edges等先提取边线再join。

360se_picture (2).webp (61).jpg 

4.再缩放。

360se_picture (2).webp (62).jpg 

缩放的中心点可以用area运算器得出,但是area运算器比较占运算器资源。

360se_picture (2).webp (63).jpg 

所以polygon ceter运算器就会成为我们不错的选择。

5.找到缩放中心点之后,接下来定的是缩放比例。

360se_picture (2).webp (64).jpg 

还是来看之前的图,比例是随机的,比初始的菱形面小就行。也就是缩放比例是在0-1之间的随机值,随机当然是random运算器了,然后生成一组与曲线数目相同的随机值。

诶,有点意思了。但是还不够,有些曲线缩放后几乎看不见了,这可能是我们想要避免的。

360se_picture (2).webp (67).jpg 

6.这时候当然是再在程序中加入一个graph mapper了,并设置graph type为bezier。

360se_picture (4).gif 

可以很方便地调节出我们觉得合适的大小。

这一步做好之后,我们可以打个组。

360se_picture (2).webp (68).jpg 

后期再调节亦或整理思路的时候都会很方便。

7.这一步做完之后,我们可以先开洞看看效果。将初始的菱形曲线和缩放后的菱形曲线,都接入boundary surface,记得右键flatten拍平。

是不是就成功了

不过这里又有新的问题

我不想每个菱形面都开洞怎么办

ok我们继续

(这里啰嗦一下,如之前缩放后想控制缩放大小,这里控制完大小之后我们又想控制开洞数量,一个程序可能会有多个变量,一个个来解决就行)

继续

8.在缩放后的菱形曲线后(为什么不是缩放前的可以自己尝试一下噢)。接入一个random reduce,再接入boundary surface。

360se_picture (2).webp (72).jpg 

9.就可以控制开洞的数量,以及随机开洞的位置(大小在之前我们写好的程序调)。

ok搞定

    结束了?

然鹅,当我也以为是完了的时候。后来发现还没完,就在我打算发文前一刻,我测试了一下。

360se_picture (2).webp (74).jpg 

用这样的一个面,直接拾取进去,结果只有这么一部分白色的成面了。

360se_picture (2).webp (75).jpg

what!?

扎心了

问题出在boundary surface,它只能成平面,不能成曲面。大意了大意了。

360se_picture (2).webp (76).jpg 

好吧

只能重新成面了

360se_picture (2).webp (77).jpg 

成面其实好成啊,用4点成面工具就可以搞定。那中间的开洞怎么开呢?用缩放后的曲线去修剪吗?

360se_picture (2).webp (78).jpg 

这个我是尝试过的,容易出错容易卡,只能另辟蹊径。

外面的曲线我有了,里面缩放后的曲线我也有了,将他们一一对应缩放不就得了。

因为初始的曲线和缩放后的曲线都是多段线,将它们先炸开,然后在一一对应地放样。

360se_picture (2).webp (81).jpg 

如果因为路径不对应无法放样,可以右键simplify。

然后发现

成啦

360se_picture (2).webp (82).jpg 

bake出去后的效果

360se_picture (2).webp (83).jpg 

这样成面是可以的。不过这时候当然又有新问题。控制开洞大小的那部分是仍然可以继续用的,但是控制开洞数量那部分我们可能要调整下。

360se_picture (2).webp (84).jpg 

如果仍然用random reduce给放样双方相同的变量。

360se_picture (2).webp (85).jpg 

这样好像是可以成功的,但这里有个问题(这句话说了好多遍),就是被random reeduce的曲线,找不回来了。而那里本来是不需要掏洞的位置,所以这里咱们不用random reduce。

我们这里其实就是筛选哪些曲线放样开洞,哪些曲线不参与放样,其实就是true和false的关系,所以这里用dispatch来筛选。

360se_picture (2).webp (86).jpg 

这里就是在0-1之间随机取值,然后四舍五入得到0或者1这两个整数。0和1分别对应的就是false和ture,将得到的布尔值接入dispatch,分别将放样的双方筛选出来(必须接同一组布尔)。

360se_picture (2).webp (87).jpg 

放样和没调节数量之前一样

360se_picture (2).webp (88).jpg 

关键是没有开洞的面可以生成了,通过dispatch的B端输出曲线,将其炸开取顶点,然后四点成面就搞定了。

着色看看效果


  感谢 建筑小蝈蝈 授权分享

欢迎关注他们的微信公众号

微信号:ArchiGG

qrcode (1).bmp

]]>
//m.stpapt.com/archcollege/2018/01/38787.html/feed 0
经验 | GH-窗由景开 //m.stpapt.com/archcollege/2017/12/38223.html //m.stpapt.com/archcollege/2017/12/38223.html#comments Sun, 03 Dec 2017 14:22:48 +0000 之前在Pinterest看到这么一张图

觉得挺有意思的

640.webp.jpg

(图片来自Pinterest)

有植被的地方

百叶平行于视线方向

把景观给敞露出来

其余地方百叶垂直视线方向

有一定的遮挡效果

 

思路的话

可以看到百叶在经过这些红色的线框的地方发生了扭转

640.webp (16).jpg 

百叶扭转过后

将里面的景露了出来

下面我们看具体操作

一、百叶

首先用阵列和loft做出第一面百叶

为什么要将短直线阵列后再放样来做呢

因为我们后面对百叶进行扭转

实际上是对参与放样的直线进行旋转

640.webp (19).jpg 

所以loft只是来看看效果

我们继续操作的对象是line

将第一面百叶往上阵列20份

640.webp (20).jpg 

然后再loft看看效果

我们会发现并没有横向的百叶出现

640.webp (22).jpg 

因为是往上阵列的

所以每一竖排的20根line对应为一组

20根line在组内放样形成了这种奇怪的面

640.webp (23).jpg 

而我们要做的是横向的放样

所以就要将横向的一排43根line归到一组

640.webp (24).jpg 

这时候可以用到flip matrix运算器

将原先的以竖向分43组每组20根line

转变为以横向分20组每组43根line

640.webp (25).jpg 

loft一下效果已经正常

640.webp (26).jpg 

path mapper可以取得同样的效果

不过这里不多说,知道有这么个东西就行

640.webp (27).jpg 

如果你想不用flip matrix也行

之前我说了

之所以竖直的20根line会成为一组,一共49组

是因为每组都是由最下面的那根line阵列上去的

而如果我阵列前把最下面的第一面百叶作为一组

再阵列上去

这样横向的49根line自然就在一组

640.webp (28).jpg 

把之前第一面百叶的49根line打个group即可

阵列完后再ungroup

640.webp (29).jpg 

二、扭转

a.判断

640.webp (30).jpg 

取我们最后得到的line的中点

干扰线框就是我们需要百叶扭转的区域

前面说过

百叶扭转其实就是line的旋转

所以我们这里就要判断line的中点是否在该线框内

在里面,line就旋转

不在,就不旋转

640.webp (31).jpg 

所有line包括其中点都在XZ平面内

所以在线框范围内的中点

X坐标和Z坐标也必然在

线框四角点X坐标和Z坐标的范围内

两头开工

640.webp (32).jpg 

1、explode将干扰线框炸开

2、deconstruct得到点的坐标,bounds取得线框X坐标和Z坐标的区间范围

3、用Includes运算器判断中点X和Z坐标是否在线框X坐标和Z坐标的区间范围内

640.webp (33).jpg 

includes输出的是布尔值

不在区间范围内就是false

再把两个布尔值接给gate and

只有两个布尔值都为ture,gate and输出的才是ture

(高中数学的且,或)

b.筛选

640.webp (34).jpg 

dispatch将线框内的line筛选出来

然后用rotate将它们旋转

640.webp (35).jpg

1、以每根line中点各自成yz平面

2、别忘了rotate的A端右键degree将弧度改成角度制

640.webp (74).jpg 

绿色的是旋转过后的

c、替换回去

将旋转过后line把旋转之前的line替换掉

这样loft出来的“百叶”才有 扭转的效果

640.webp (75).jpg 

本来我想着

1、先用member index将dispatch筛选出来的line在之前组里的序号提取出来

2、再用replace items将旋转过后的line给替换回去

然鹅

这哥们不给我面子

说实话我还没搞懂它为何报错

不过程序还得做啊

总有办法的

于是我找到了它:

640.webp (78).jpg 

sift pattern

光看图标不明白,sift是筛选的意思

没错,它是 sift的老哥

640.webp (79).jpg 

它和dispatch都是用来筛选数据

不同之处在于sift pattern将数据筛选到另外一个端口后还保留着其之前所在的位置

将其位置用null占着

640.webp (80).jpg 

而就在sift pattern旁边就有一个replace nulls

用其可以用指定数据将数据中的null依次替换

可以看到已经替换进去

loft一下看看效果

640.webp (83).jpg

640.webp (84).jpg 

再然后我们可以选中这部分运算器

打个包

再右键改下输入端名字

想多些干扰线框就讲打包运算器复制一下

640.webp (87).jpg 

每一个线框的开和角度可以单独调节

可以加几棵树大概看看效果

640.webp (88).jpg 

今天的案例就到这里

640.webp (89).jpg 

窗由景开,扭转百叶窗

链接:http://pan.baidu.com/s/1miqYwC4 密码:mdst


  感谢 建筑小蝈蝈 授权分享

欢迎关注他们的微信公众号

微信号:ArchiGG

qrcode (1).bmp

]]>
//m.stpapt.com/archcollege/2017/12/38223.html/feed 2
经验 | 营造法式参数化——殿堂式大木作的算法生形研究 //m.stpapt.com/archcollege/2017/11/37833.html //m.stpapt.com/archcollege/2017/11/37833.html#comments Sat, 04 Nov 2017 16:23:07 +0000


640.webp (96).jpg

《营造法式》中规定,将材划分为八等,以材广的十五分之一作为份值,所有构件的尺寸均可以用份值来衡量或者用相关联的构件去计算。每一个补间铺作的间广为125份,若采用单补间则心间广为250份,双补间则为375份,且每一铺作还可以增减25份(但450份的间广仅能适用于心间,且正面次梢间及进深方向的间广不得大于375[3]17);而柱高不逾间之广,且自250份起每25份递增;而檐柱生起的计算要复杂得多,心间两柱不生起,自心间向两边逐步升高5 [3]19(注:《营造法式大木作研究》第19页,“过去曾认为实例生起大于《法式》者较多,那实在是由于将生起的尺寸当作固定不变的数字引起的误解。现在折成材份……”);心间的柱高值则用来计算柱脚的侧脚,心间两柱不侧脚,自心间向两边每柱偏移心间柱高值的千分之十(侧面檐柱则为千分之八,至角则两个方向均偏移)。

 

GH里,可以将补间数编制为一个数据输入器,若为单补间则对外输出250,若为双补间则对外输出375。同时,将补间增减量编制为另一个数据输入器,可以对外选择性地输出250-25这三种数据。以上两个输入器通过一个简单的计算器就可以实现对间广的控制:若为单补间,则间广为250+增减量*2;若为双补间,则间广为375+增减量*3。再将此数据与选择的份值相乘便可以得到开间的准确尺寸。同时,对檐柱进行编号,用公式筛选出需要侧脚及生起的柱头序号,对每个特定序号的柱头分别进行生起,并对其柱脚分别进行侧脚。即使开间进深的间数发生变化,公式也依然可以计算出需要侧脚及生起的柱头,并相应的赋予其侧脚的位移量和生起的高度值。

在铺作分槽层,身内槽铺作出跳总数里外俱匀且与外檐铺作里跳数相等,外檐出跳总数会影响里跳每一跳的长度,外跳长度则不变:出跳总数小于等于三,里外跳长30份;出跳总数大于三,里跳第一跳长28份,第二跳及以上长26 [3]73。故编制出跳生成器时,需对总跳数以及该跳所处的跳数进行判断,来决定该出跳的长究竟是30份、28份还是26份。同时在转角铺作,还需要“以斜长加之”,即不能简单地把栱臂加长到原来的根号二倍,而是将栱的跳臂加长到一定长度,使得跳臂加上一半的跳头、一半的跳心,其总长为原长的根号二倍。如此才可以保证角华栱的跳心与正面、侧面华栱跳心分别对齐。编制程序时仅需要列出一个代数方程,便能得出符合要求的华栱、昂,以及角华栱、角昂。

因本研究尚处基础阶段,对于屋架层仅涉及到基本的梁檩槫的架构,以及根据进深算出基本举高及举折做法,未涉及到攀间的情况,略表遗憾。

(“茶或咖啡”为其公众号之前的名字)


若按照传统解决方式手动地搭建这些构件,一则容易出错,二则一栋建筑对应一个模型,建筑规格稍有不同就必须对模型进行修改、重做。这与《营造法式》的编修理念是相违背的。因为它的出发点,正是通过设计模数化和构件标准化来减少工作量并且尽量减少人的主观因素造成的错误。如今施工技术和生产技术大为进步,可以用编制好的程序进行运算,从而生成模型,避免重复性的手动搭建。

为便于对数据进行分类,参数化模型内部的算法器分为了三类:数据输入器,计算器,生成器。每一个算法器都是由内部的算法电池组成的。在连接完成并调试后,进行封包处理,留出输入端口及输出端口,注明算法器的名称。

 

二、怎么才能让程序可读?

 

 屋架层做的最仓促,有些地方没搞明白,这就叫WIP吧(Work-in-Progress)。没有哪个程序是完美的,都是带着一堆bug上马,然后打补丁,出新版本。只有暴雪游戏一如既往的完美。

 

#阅读别人的代码,总会有一种智商被压制的感觉。

#就好像下围棋,段数差的大了,高手可以一人虐好几个彩笔,彩笔们苦苦思考,读不懂这路数。

#好在,围棋可以复盘,代码可以写注释。

#写注释hin重要!

#自己回头看,有时也怀疑这段代码是不是亲生的。

 

屋架层

 

因屋架层各构件关联甚多,需要整体考虑,所以编制时不便拆分,合并编制。封包的生成器如下图所示。


640.webp.jpg 

檐栿。将前后檐柱的柱头相连就可以得到檐栿的定位线,稍加调整即可生成檐栿。需要注意的是前后两列檐柱的首末柱头不需要生成檐栿,其上要做阳马(即角梁)。左右两列檐柱出去首末柱头,其余与檐栿相搭接生成丁栿。檐栿之上还有其余各栿,只不过命名方式为X椽栿,X为其跨度以所跨椽数计算,如两椽栿(即平梁),四椽栿等。檐栿以上的各栿都需要根据举折的屋面曲线来判断其位置,因为它们要承担所有的槫子。

角梁。凡角梁之长,大角梁自下平槫至下架檐柱头,子角梁随飞檐头外至小连檐下,斜至柱心。如下图所示。

大角梁的上端定位点,为两向下平槫的轴线交点;下端定位点,为角柱头之上,外向45度方向出跳角由昂之上,两向素方轴线交点。

槫。殿堂式的槫,径21份或30份。槫的位置需要根据举折计算,同时槫的长度需要根据屋架形式决定。以下平槫长度为基准,四阿顶自下平槫逐槫加倍缩短,自150份起(依次缩短150份,300份,450份,以此类推);厦两头造则是下平槫以上的所有槫都固定缩短150份。然后进行出际,出际量根据进深数及椽数增多而增多。脊槫还要根据情况增长,这些都可以用公式求出 。如下图所示。


640.webp (46).jpg 

640.webp (47).jpg 

椽。殿堂式的椽,径10份。通过连接槫上等分的点来生成椽,并“令一间当心”,即正立面的中轴线上不能是椽,而必须是两列椽之间的空隙。如下图所示。


640.webp (48).jpg 

檐。椽至下架即加长出檐。(前面这句话的意思是:椽至下架的意思,就是加长出檐,把出檐的端头继续延长。)檐出要根据椽径计算而得。椽径6份,檐出70份;椽径10份,檐出90份。檐椽上还要加方形的飞椽,长度为檐出长度的0.6倍。如下图所示。


640.webp (49).jpg 

蜀柱。殿堂式的蜀柱,径22.5份(一材半),长随举势。底部安置在檐栿以及以上各栿的两端头之上,顶部连接槫。因此它的长度是不确定的,根据举折来计算得出,随进深数的变化而变化。如下图所示。


640.webp (50).jpg 

举折。举折分为两部分,先举后折。举屋之法:前后橑檐枋心距离的三分之一作为举高,是脊槫上皮距橑檐枋背的高度。折屋之法:脊槫上皮连线橑檐枋背的中线,其下一槫向下移动举高的十分之一,然后继续连线橑檐枋背的中线,然后再将其下一槫向下移动举高的十分之一的一半,然后再连线再向下移动以此类推。


640.webp (51).jpg 

640.webp (52).jpg 

参考文献:

[1] 申杰.基于Grasshopper的绿色建筑技术分析方法应用研究[D].广州:华南理工大学.201228~29

[2] 徐卫国.参数化设计与算法生形[J].世界建筑,201106110-111

[3] 陈明达.营造法式大木作研究[M].北京:文物出版社,1981

[4] 李诫著.营造法式[M].浙江人民美术出版社,2013

[5] 刘小虎,冰河,潘浩,戴陈军.《营造法原》参数化——基于算法语言的参数化自生成建筑模型[J].新建筑,20120116-20

[6] 张十庆.古代建筑的尺度构成探析()——唐代建筑的尺度构成及其比较[J].古建园林技术,19910230-33

[7] 张十庆.古代建筑的尺度构成探析()——辽代建筑的尺度构成及其比较[J].古建园林技术,19910342-45

[8] 张十庆.古代建筑的尺度构成探析()——宋代建筑的尺度构成及其比较[J].古建园林技术,19910411-13

[9] 张十庆.古代建筑生产的制度与技术——宋《营造法式》与日本《延喜木工寮式》的比较[J].华中建筑,19920348-52+8

[10] 王其亨.宋《营造法式》石作制度辨析[J].古建园林技术,19930216-23+14

[11] 乔迅翔.《营造法式》功限、料例的形式构成研究[J].自然科学史研究,200704523-536

[12] 张十庆.保国寺大殿的材栔形式及其与《营造法式》的比较[J].中国建筑史论汇刊,20130136-51

[13] 张十庆.《营造法式》材比例的形式与特点——传统数理背景下的古代建筑技术分析[J].建筑史,2013009-14

[14] 乔迅翔.《营造法式》大木作功限研究[A].建筑历史与理论第十辑(首届中国建筑史学全国青年学者优秀学术论文评选获奖论文集)[C].:,200917

[15] 杜启明.宋《营造法式》大木作设计模数论[J].古建园林技术,19990439-47

[16] 张十庆.《营造法式》八棱模式与应县木塔的尺度设计[J].建筑史,2009021-9

[17] 王婉,谢步瀛.古建筑保护中参数化建模及仿真系统的研究.[J].华中科技大学学报(城市科学版)20083121-123+135

[18] 谭洁,汪梦林,王建华.参数化设计在古建筑保护中的应用研究——以清代官式建筑为例.[J].四川建筑科学研究,20103266-268

[19] 郝志桃,李昌华,王东.基于Generative Component的中国古建筑参数化设计.[J].计算机辅助工程,20104102-104

[20] 王茹,孙卫新,张祥.明清古建筑构件参数化信息模型实现技术研究.[J].西安建筑科技大学学报(自然科学版)20134479-486

[21] 刘小虎,冰河,潘浩,戴陈军.《营造法原》参数化——基于算法语言的参数化自生成建筑模型[J].新建筑,2012116-20

[22] 麻鹏,赵卫东.中国古建筑的参数化设计研究[J].重庆科技学院学报(自然科学版)2009694-97

[23] 沈源,常清华.迭代算法:中国古建屋顶曲线的生成机制[J].世界建筑,20139110-115+138

[24] 王贵祥,刘畅,段智钧.中国古代木构建筑比例与尺度研究[M].北京:中国建筑工业出版社.2011

[25] 陈明达.《营造法式》辞解[M].天津:天津大学出版社.2010

[26] 袁烽,Panagiotis Michalatos,张立名,李修然,柴华反转檐椽[J]. 城市环境设计,2014,(Z2):230-231.

[27] 陈睿莹.从模数化到模块化设计[J].艺术与设计(理论)2012(12)128-129

[28] 李天华.殿堂型古建筑木结构试验及力学性能研究[D].长安大学,2010

[29] 张十庆.古代建筑的设计技术及其比较──试论从《营造法式》至《工程做法》建筑设计技术的演变和发展[J].华中建筑,1999(04)92-98

[30] 包瑞清.参数模型构建[EB/OL]http://www.mubentech.com/LessonsDownloadPreviewCompress/GrasshopperpreviewPD-B.pdf,2013.

[31]Santiago Calatrava Valls. Zur Faltbarkeit von Fachwerken [D]. Swiss FederalInstitute of Technology Zurich, 1981.

 



以上内容来自一只瘦笔(ID:penispen1988)

在此我想谈谈自己用过之后的的感想

首先和王曦前辈交流中,他也表明这个研究仍处于基础阶段

后期还需要做很多工作

因为生成的都是实体,运算时间需要几分钟是难免的

还有就是程序集成在一个大的运算器里

改一个参数,整个程序都要重新运行一次

原作者表示后面打算把这个程序分成几部分

每一部分独立运行

那样效率会高很多

 

确实如此

因为有时候我可能只想做一朵斗拱或者只想做柱网那一部分

一个大的程序适应性不高

如果拆分成几个独立的部分

想必适用性会高很多

 

另外

我向前辈反映了一个椽条的问题

插件做出来的椽条是这样的


640.webp (53).jpg 

而从《古建筑测绘》一书中的山东曲阜孔林享殿梁架仰视图可以看出

只有角落处的椽条才是成发散性的

正脊下来的椽条一般是垂直于屋檐的


640.webp (54).jpg 

也就是应该是这样


640.webp (56).jpg 

不过毕竟插件是在基础阶段

几分钟的时间可以给搭一个大概的框架也十分不错了

而且像很多细节已经做得很好

比如斗拱的起跳、是否加昂

比如柱子的收分、生起

再比如屋架的举折关系等等

相信后面会优化得更好更完善

 

放一张bake出去的侧面图:


640.webp (55).jpg


如有兴趣进一步了解者,可查阅原作者在知网的文章:

《营造法式》参数化——殿堂式大木作的算法生形:

http://kns.cnki.net/kcms/detail/detail.aspx?filename=HZJZ201612010&dbcode=CJFD&dbname=CJFD2016&v=&uid=WEEvREcwSlJHSldRa1Fhb09jMjVzQmJoN3F3UWcrL3RNZEVibXBCSmdEMD0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4IQMovwHtwkF4VYPoHbKxJw!!

 

一类殿堂式大木作的算法生形研究:

http://kns.cnki.net/kcms/detail/detail.aspx?filename=1017166449.nh&dbcode=CMFD&dbname=CMFD2017&v=



 感谢 建筑小蝈蝈 授权分享

欢迎关注他们的微信公众号

微信号:ArchiGG

qrcode (2).bmp

]]>
//m.stpapt.com/archcollege/2017/11/37833.html/feed 7