NCF参数化建筑论坛

标题: 关于Cluster制作的一些经验分享 [打印本页]

作者: skywoolf    时间: 2014-10-28 20:05
标题: 关于Cluster制作的一些经验分享
最早想写这个是在去年的年底,手里一个项目遇到一些问题,需要搬出来以前玩的一些东西。打开的时候,面对没日没夜赶出来的一套面目全非的参数模型,发现自己已经很难回忆当时的数据关系了,最后只能重新整理。相信这种情况很多朋友也遇到过,Grasshopper的建模与传统建模不同,它的成果不是用眼睛找就可以即时得到反馈的东西,我们需要回忆那些大量的数据流从哪里来的、到哪里去了,每次回忆都是一段苦涩的精神之旅。一句话,脑抽的时候写出来的东西,自己回头再看是很难看懂的,所以那个时候就意识到了Cluster的重要性。这里不是强调一劳永逸,因为gh的更新换代会出现很多bug。这里想说明的是一种思维的整合和梳理。任何一串好的逻辑都需要一个完整的、闭合的、流畅的数据流通道,这要求我们不是建完一个结果就结束,而是要在此基础上形成一个可调可变的模型控制体系。它不是模型本身,更是点线面的构建关系,这也是我一直所谓的grasshopper渡过了初级普及教程之后,在中级阶段我们应该研习的东西。

我个人觉得gh的Cluster可以大致分为工具类、算法类和插件类三大种。接下来我简单说说个人对这三大类Cluster(以下简写Cer)的理解。

首先,我们先来看看第一种工具类Cer:
工具类的Cer和gh的运算器一样,每个Cer都需要有一个明确的功能,我们对一个运算器的认识很少关注其内在算法,而是关心我们如何给它关联输入输出的数据,使它运作起来。这就要求我们的Cer在功能明确的基础上要有很好的适应性(1),而不能只在特殊的情况下才能用。那么什么是适应性,我来问几个问题:
1,你的Cer输入端支持那些类型数据列表的输入?很多时候我们只会考虑到单个数据和多个数据的输入,而没有考虑树形数据的输入。直白说,如果一个Cer处理不了树形数据,那它基本上就违背gh的数据操作体系了。所以这类Cer的编写要求我们要看清楚每组数据流从进到出的来龙去脉,这和建一个普通的参数模型是完全不同。
2,你的Cer里有没有Flatten出现?Flatten是数据结构杀手,如果一个Cer里存在哪怕一个Flatten就意味着这个Cer只能用于整个参数逻辑的初始或是末端。为什么?可以想象一下,无论我们之前展开怎么的树形数据结构,在通过这个Flatten的时候都会给掐死。整个数据结构就这么简单粗暴的废掉了,这种情况当然不是我们希望看到的,所以如果可以,把Flatten从你的思维体系里拿掉,事情就会有意思很多了。
如果以上两个问题我们都能处理的很好,那么这个Cer至少我们说是具有适应性的。通常我们可以通过Simplify+PathMapper组合解决一些数据路径名不匹配的问题,但是这个也不是万能的,需要具体问题具体分析,比如有时候Cer不一定运算器越少越好,粗糙的单线数据流有时候更难出bug(因为内部数据结构简单)。所以这里再强调一个概念优化(2)不一定就是运算器少的意思,关键是要减小数据流对电脑计算的负荷。优化的工作是将A-->B-->C-->D这样的模式直接简化成A-->D,或者是去掉A-->B-->A这样的模式等等。优化之后的算法轻便了,bug也就更少,换而言之又提高了Cer的适应性。

所以个人觉得,不要给工具类Cer加载过多的能力,而是让它去本本分分的完成自己特定的一项工作最为理想。这样的Cer也会很容易的和其他的原运算器成为朋友。它们再一起配合能千变万化才有意思。

当然还有一类插件类Cer和插件类似,它们大多借助语言编程运算器来拓展gh的业务边缘,而这些其实已经就是插件了。这类Cer要么带着同类运算器一起玩,要么一人能独挡一面。它们只要奏效就可以,就不用和其他的在一起参合了。

最后我们再来看看算法类Cer:之所以这样命名是因为这种Cer其实是一套完整算法,它可以满足我们日常设计工作的一些建模使命,我个人相对偏爱这种Cer的编写,每弄出来一个,我会觉得以后这类的事情不用亲自去搞了,只要交给它们就好。我相信没有人会希望重复繁琐而苦逼的工作,所以算法类的Cer其实是用来给建模的设计师们减负的。以建地形为例,以前需要一个人建一天,如今可以一键搞定,这是为什么我们要将自己成熟的算法编写成Cer的原因。当然我们也不用把事情想的太理想,一套算法下来哪那么容易没有bug,遇到bug了Cer又不是自己写的,那就疯了……所以我强调尽量的要将算法类Cer简化(3)。只求能用,不求尽善尽美。这个玩过一段时间gh的人都知道,要求越多,生成条件越苛刻,适应性也越差。最重要的其实还是能辅助设计就可以,能给建模工作减负就是好样的。

补充一点,其实在整理算法类Cer的时候,我们可以真正的拿出时间回头审视我们的逻辑和数据。这个过程对玩gh的人而言太重要了。温故而知新,说的就是这里了。

ps:对于在未来gh的更新将导致的Cer失效问题,我不担心,这种可能性是必然存在。因为Cer的制作和分享是一种良好的习惯,只有好习惯的养成才是一劳永逸的。

还是非常感谢倡议一提出就能有怎么多新老朋友赶来支持!我们共同努力,愿NCF可以成为一个更好的可以分享设计思维过程的平台!


作者: pdq1977    时间: 2014-10-28 20:57
终于做上 沙发 了,强力支持
作者: 月之眼    时间: 2014-10-28 20:57
顶一个
作者: zero0822    时间: 2014-10-28 23:11
更新大变样的话还是很吃不消的
作者: Wewe    时间: 2014-10-29 09:13
顶sky大哥、、、顶顶顶
作者: freewind    时间: 2014-10-29 09:24
严重同意~思路不断的整理优化是很必要的
作者: 羽生    时间: 2014-10-29 12:09
zero0822 发表于 2014-10-28 23:11
更新大变样的话还是很吃不消的

要是有自动替换更新就好了。
作者: cythywz    时间: 2014-10-30 19:55
又要恶补好多东西了
作者: goodcx    时间: 2014-10-30 22:55
顶!!!!
作者: 柒⑩︶譕所蓶    时间: 2014-11-1 10:48
谢谢楼主分享  新人学习了
作者: You你俄⑨快樂    时间: 2015-11-18 21:37
新人一只,恶学中,,,,
作者: 横穿马路    时间: 2016-6-30 03:20
顶一个 学习一下
作者: wordspace    时间: 2016-10-11 23:40
谢谢楼主的建议和分享
作者: lidalin666    时间: 2018-4-17 11:52
谢谢楼主分享
作者: Gingo    时间: 2020-2-12 10:16
更新大变样的话还是很吃不消的




欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/) Powered by Discuz! X3.2