个人中心 我的学堂 我的旅行 退出账号

巧用mesh做表皮:一个案例让你的Rhino和GH健步如飞

LAC丨ArchStudio LAC丨ArchStudio

作者:洪宸/著 十五/编
原文链接

随着Rhino和Grasshopper的普及,软件已经渐渐不再成为约束建筑师思维的因素,但是相信很多小伙伴在对于Rhino和Grasshopper的掌握逐渐加深的过程中,经常可能遇到下面这种情况:对于一个模型明明知道怎么建,但是却因为模型过于复杂,数据过多而导致在实际电脑建模过程中因为卡顿时间过长而完全无法实现。

640.webp.jpg 

本次教程给大家介绍一个简单的山水表皮制作案例,来看看如何优化你的GH运算。小伙伴在会建模拉电池的基础上,对于GH的优化有一定的了解和掌握,一定会更有效率,这也是本次教程希望大家可以学习到的内容。

STEP 1

基本建模

对于下面这个窗帘的模型,相信很多对于grasshopper掌握比较深入的童鞋都可以很轻松的建出来。

640.webp (16).jpg 

但为了照顾一些刚刚学习GH的小伙伴,让我们先花一点时间来回顾一下建模的主要过程:

0.gif

首先,我们先绘制两组点,用以生成基础面的上下边缘线,在这里我们的建模逻辑还是遵守大家所习惯的点成线,线成面。

大家可以通过对于graph map的调节(这里选择的是sin函数),自行控制曲线的形状,可以通过对于domain区间的设置控制窗帘的长度。

然后,我们只需要将上边缘的点沿Z方向抬升~

640.webp (19).jpg 

再把上边缘和下边缘的点成组连线:

640.webp (20).jpg 

数据拍平之后放样就生成了曲面,这样就完成我们的第一步了。

640.webp (21).jpg 

接下来我们就需要在基础面上开洞了。将基础面重参(rebuild调整UV数目,使曲面uv参数分布大致均匀)之后,我们运用lunchbox进行开洞处理:

640.webp (22).jpg 

大家可以注意下这里对于surface的UV细分值已经达到了500*60,并且运算器的计算时间已经达到了550ms,大家应该可以感觉到些许的卡顿了,尚在可以接受的范围内。

但是当完成这一步,进行后续操作的时候,大家就可以感觉到正确的建模逻辑和优化手段对于GH的影响是有多么巨大。

STEP 2

不同建模逻辑与优化

我采用大部分童鞋会使用的方法,也就是传统的点成线,线成面的方法。首先用喜闻乐见的area运算器提取每个面的中心(个人非常不推荐这个运算器,具体原因后续会说明)。

640.webp (23).jpg 

大家可以看到,area的运算时间已经达到9.6s了。

640.webp (24).jpg 

然后对于每个面进行不同程度的缩放,这里咱们就使用image sampler运算器通过图像灰度结合remap运算器来控制缩放值。

接下来,相信百分之九十九的童鞋会做的一步是把原有的面和缩放后的面graft后merge,然后直接loft成面。从建模上来说,这样完全没有问题,标准的线成面步骤。

640.webp (27).jpg 

但是当我们点击运行的时候,我们可以看到loft运算器的运算时间已经达到难以忍受的33.5s,但是更加难以接受的是如果你将这个loft后的面bake到Rhino之中的话,即使是一个简单的缩放命令,都会让你的Rhino卡顿长达几十分钟,更别说附材质和渲染了。也就是说,虽然我们成功在grasshopper中建出了这么一个模型,却完全无法进行后续的使用。那么该肿么办呢???

640.webp (28).jpg 

这就要求我们,必须对原有的程序进行优化了。具体怎么优化呢?主要有两种方式,第一种方式是局部运算器的优化。

grasshopper中,有很多的运算器都可以实现相同的效果,但是他们之间的速度却有很大差异。比如提取面的中心,很多人会使用area电池进行生成,但是通过evaluate surface电池同样可以实现相同的效果。

640.webp (29).jpg 

对比之前运用area的9.6s,我们仅仅使用100多ms就实现了中心点(即面的质心)的提取。大大节约了运算量和运算时间,这也是之前我提到不推荐使用area的原因。

第二种方式则是对建模逻辑、方式的优化了。之前也说过,大家都很熟悉点成线,线成面的nurbs建模方式。但是在Grasshopper建模过程中,还有另外一种更为高效的建模方式:那就是通过顶点,运用mesh直接成面。由于在Rhino中mesh包含的信息量远小于nurbs面,因此通过这种建模方式建出的模型,占用更少的计算资源,bake出来后可以非常方便地在Rhino进行后续地修改。

那么就让我们看看,在GH中到底怎么通过mesh建模吧!首先让我们回到缩放后merge那一步。

640.webp (30).jpg 

这个时候,不同于之前的之前loft,我们先通过explode提取每组线的顶点,通过trim tree讲两条要成面线的顶点放到一个组里面,再通过cull duplicate去除重复的点(此处再次强调数据结构的重要性)。

然后就到了我们生成mesh的步骤了,其实在Grasshopper中生成mesh十分简单,我们只需要一个运算器:construct mesh。这个运算器我们需要考虑的主要也就是两个输入端,V输入顶点, F输入顶点链接的顺序。

640.webp (31).jpg 

V端的点就是我们cull duplicate之后的顶点,但是F端的输入值就比较考验小伙伴们对于数据结构的理解了,为了大家方便观察,我通过tree branch 将众多顶点中的一组提取出来,再借助point list展示一下它的顶点顺序。(tree branch+point list 对于初学者掌握数据结构帮助非常大,同学们要经常记得使用了。)

640.webp (32).jpg 

这个时候我们可以清楚的看到每个组里面有六个点,编号分别是012345,并且顺序是从外到内逆时针的。我们通过mesh生成大部分面都是四点成面,所以对于这个面我们可以将它拆解为三个mesh部分:面0143、面1254、面2035。

640.webp (33).jpg 

(面0143)

640.webp (34).jpg 

1254)

640.webp (35).jpg 

2035)

然后将这三个mesh合并为一个mesh。

640.webp (74).jpg 

因为之前cull duplicate之后的数据结构为树形数据,我们只要将tree branch这一步略过,直接连接point即可。

640.webp (75).jpg 

大家可以惊喜的发现,成面的时间变为了1.2s(之前为33.5S),近30倍速度的提升!相信可以让小伙伴们非常直观的了解到GH中mesh的强大。

640.webp (76).jpg 

并且bake出来之后在rhino中大家可以随意转动变化,而不会有卡顿。

0 (1).gif 

最后的渲染就非常的轻松愉快了,加一个无限地面作为基面,加一个矩形灯打光:

640.webp (77).jpg 

给地面一个木板材质,窗帘一个织物材质,都是官方自带材质。

点击渲染,咱们的窗帘就出现了。

640.webp (80).jpg 

PS:

1、对于grasshopper而言,数据结构是重中之重,特别是对于mesh建模。

2、如果部分运算器小伙伴不知道在哪里的话,可以后台下载打包电池,按住ctrl+alt 点击运算器就可以看到他们的位置了。

链接:https://pan.baidu.com/s/1dFOxvaT 密码:p7rx


  感谢 LAC丨ArchStudio 授权分享

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

微信号:lacstudio

qrcode (3).bmp

0条评论
LAC丨ArchStudio LAC丨ArchStudio

作者:洪宸/著 十五/编
原文链接

media@archcollege.com
建筑学院来稿须知 关闭
感谢您的关注与支持!我们非常欢迎各类投稿。
几点简单的来稿须知,望您耐心读完。
来稿要求如下:

● 作品类稿件

1、高清项目实景照片/效果图/模型照片/手绘草图
2、高清技术图纸,如:分析图/主要平立剖/总平面/关键节点详图
(图片要求:无水印,格式为JPG,图片分辨率72,宽度大于1200像素)
3、详实的设计说明800字左右(word格式)
4、真实准确的基本项目信息
5、如有项目视频,请提供高清项目视频
6、贵司的LOGO、官网相关信息。(用于注明文章出处及作者)

● 其他稿件

1、配图清晰且无水印图片
2、内容有趣有料,文字流畅通顺。
3、作者姓名,若有公号请提供公号名称及LOGO
我们的编辑将在收到稿件后的3个工作日内审稿并与您取得联系,如果没有刊载也会在3个工作日内您答复。
投稿邮箱:tougao@archcollege.com
如有其他疑问请加微信: jzxy-yz
建筑学院 建筑学院

建筑学院APP

为建筑师而打造的精品应用

点击下载
close
社交账号登录
close
close
close
欢迎加入【建筑学院】
快去完善你的个人信息吧!
完善资料
等下完善
close