请选择 进入手机版 | 继续访问电脑版

Grasshopper快速生成古镇

2019-1-11 09:02
1370
Grasshopper快速生成古镇-1.jpg
如果场地内有大量同类型的建筑,但却不是设计的重点,该怎么建立这些建筑的模型呢?
只拉一个体块,虽然节省了时间,却又显得空白太多,不够深入和扎实。何况面对成百上千的体块,也需要不少时间。
而不论巨细地做出细节,必然耗费大量时间。这样的模型一旦完成,修改和重做就有很高的成本了。
近期的文脉设计,我遇到了这个问题,拿着grasshopper捯饬了好几天,总算是有了应对方法。

在开工之前,我对这个电池有几个期望:
1.不能卡!能用数学解决的问题,绝不用物理解决。算法逻辑一定要简单粗暴,坚决抛弃花里胡哨,自己都看不懂的骚操作。
2.生成的模型要小!非曲的物件全部使用网格,重复的物件使用图块引例。只做表面文章,看不到的东西一概不管。
3.可以方便地修改生成的模型。切记,把握好手动建模和参数化的比例,全参一时爽,调数火葬场。
4.要有正确的贴图方式。几千个方向不同的模型,手动调贴图轴会死人的,这部分一定要在grasshopper里完成。

场地为豫北一小镇,场地沿河,cad大致是这样的
Grasshopper快速生成古镇-2.jpg
小组内最后的讨论结果是:部分地块的破旧建筑,重建或改建。剩下的保持原状,沿街建筑可以作为商铺。
下图就是我可以操作的部分了
Grasshopper快速生成古镇-3.jpg

1.整理场地
将所有 表示建筑的曲线 转换为 封闭的平面曲线 并简化。
根据调研结果,将所有建筑分类:
按照和场地的关系,分为基地内和基地外两类;
按照结构和层数分为五类。(砖混结构和砖木结构,一层二层三层)
将要改为店铺的单独分为一类。
此外,场地内的道路用多段线表示。
以此方法分好图层。
Grasshopper快速生成古镇-4.jpg
2.思路简述
砖混建筑:
1.建筑高度以层数为中心上下浮动,做出屋顶、女儿墙和室内地板。按照和道路的距离 把立面分类(正立面、后立面、其他立面)。输出所有物件,待用。
2.选取前后两个立面开窗,正立面开门。在墙上留洞并偏移出厚度,输出墙体,输出门窗的定位平面。
3.做好门窗,定义为图块,放置到各个定位平面上。

砖木建筑:
1.建筑高度以层数为中心上下浮动,做出屋顶、屋脊、望板和室内地板。按照和道路的距离 把立面分类(正立面、后立面、山墙)。输出所有物件,待用。
2.同砖混建筑
3.做好门窗,定义为图块,放置到各个定位平面上。在屋顶上画上几条平行线代表瓦片。

沿街商铺:
1.同砖木建筑
2.在正立面上做出门板、窗框,柱子和墀头,山墙偏移出厚度并做出侧脊。在合适的位置放置招牌等街景物件,这一步中就以定位平面来代表。
3.手动画出几种招牌,彩旗,导入几种盆栽模型,并一一设为图块。使用上一步的定位平面,经过一番计算,得到这些街景物件的定位平面,放置他们。

基地外的建筑只拉一个体块就好了。
电池图如下:
Grasshopper快速生成古镇-5.jpg
3.补充说明:
1.切换不同的参数组:
每一种建筑的每一个层数都设有一组不同的参数,为了更小更快,我对某一类建筑只使用一套电池组。为了方便切换不同的输入数据,我使用了value list搭配stream filter,如下图:
Grasshopper快速生成古镇-6.jpg
Grasshopper快速生成古镇-7.jpg
这样,只用在这里点击下拉列表,选择不同的值,就能控制 那一组参数输入到后续的电池中。
Grasshopper快速生成古镇-8.jpg
Grasshopper快速生成古镇-9.jpg

2.在grasshopper中放置图块的方法
首先,把想要定义为图块的物件做出来,手动还是参数化都无所谓,因为我这次使用的物件太具象,所以我选择手动制作。
定义图块基准点的时候,要考虑到:图块里的模型和基准点的相对位置,就是放置后的图块和定位平面的相对位置。
Grasshopper快速生成古镇-10.jpg
Grasshopper快速生成古镇-11.jpg
之后,为每一个图块命名,并将它们放在一个不会被打扰到的角落,防止所有引例都被删除时,净化模型导致图块定义丢失。
Grasshopper快速生成古镇-12.jpg
图里全是梗
装上human插件,使用PlaceBlock放置图块。
Grasshopper快速生成古镇-13.jpg
原理:
当输入端bake?为true时,运行一次该电池。
block name是要操作的图块定义的名称。
运行时,对该图块应用“transform”,以确定放置的位置。
“transform”是所有类型变换的集合体,包括旋转、阵列、移动、投影等等。
对于一个图块来说,只要基准点(准确地来说应该是一个平面)的位置确定了,那么整个图块的位置便确定了。如果找到 基准点到定位平面的“transform”,据此可以确定 放置后图块位置。
建立图块时,工作平面为世界top,也就是xy plane,它就是图块的基准平面。定位平面已经有了,使用orient就可以得到“transform”。
Grasshopper快速生成古镇-14.jpg
将 定位平面 和 要在此放置的图块名称 一一对应,并指定放置后的图块的属性,连接一个button,就完成了。
Grasshopper快速生成古镇-15.jpg
右上角电池:CreateAttributes

3.grasshopper中批量更改物件贴图轴
首先,这个物件必须是一个网格。
还要有一条用来定位贴图轴的直线。
以立方体贴图为例:
关键命令是BoxMapping,沿着直线画一个立方体,这个立方体就是贴图轴了。它的大小和方向都将和贴图一致。如下图:
Grasshopper快速生成古镇-16.jpg
把输出的网格bake出来,对其赋予材质。打开该材质的编辑面板,点击贴图
Grasshopper快速生成古镇-17.jpg
改为本地贴图轴通道(默认为1)
Grasshopper快速生成古镇-18.jpg
其他部分都只是一些简单操作的重复。
以下图片均为rhino6.0渲染模式直接导出
Grasshopper快速生成古镇-19.jpg
Grasshopper快速生成古镇-20.jpg
Grasshopper快速生成古镇-21.jpg
Grasshopper快速生成古镇-22.jpg
任何批评建议请在评论区指出。
最后感谢 @蒯鼎 @Jessesn 帮我解决技术难题;感谢我的队友llw、lzx、zzh挑起画图重担,让我有充足的时间搞这个东西;感谢知乎上支持我的各位!

话不多说,直接贴文件链接
链接:https://pan.baidu.com/s/14BFeT9Aeu93hoU_TPHc0Hw 密码:ry3e
需要gh1.0及以上版本
rhino6.0及以上版本
插件meshedit
插件lunchbox
插件human
插件weaverbird
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|翁笔

© 2001-2018 Wengbi.com

返回顶部