之前好多小伙伴想让我介绍介绍Dynamo与衍生式设计,奈何最近太忙了,实在没时间弄这些~趁着端午节,今天用一个小案例,先简单让大家对衍生式设计有个初步认识,之后有时间,我再多写几篇关于这方面的文章,好了,接下来进入正题:
一、计算设计
在了解衍生式设计之前,先来了解下什么是计算设计。计算设计不是任何一种你可以应用的算法或现成的过程。相反,我们将其描述为一种方法,设计师通过定义一系列指令、规则和关系,精确地确定实现设计及其结果数据或几何所需的步骤。
这里,最主要的,是这些步骤必须是可计算的,这意味着可以通过计算机来理解和计算这些步骤。
当进行计算设计时,设计师会专注于开发创建设计的程序,而不是设计本身。遍历选项和数据的过程转移到计算机。这节省了时间、金钱和精力,让设计师专注于设计过程的创造力。
二、衍生式设计
区别于计算设计,一般我们认为:衍生式设计是人类和计算机之间的协作设计的过程。在此过程中,设计人员定义设计参数,计算机生成设计方案(备选方案),根据设计人员设定的可量化目标对其进行评估,使用以前的结果和设计人员的反馈改进研究,并根据设计的原始目标对结果进行排名。
这个过程中,涉及了很多的算法,例如遗传算法,后面有时间的话,我们可以深入聊聊这部分内容。
三、举个例子
我们举一个非常简单的例子,来简单试用下Revit2021的衍生式设计功能。
假设平面上有三个点,他们能够围成一个三角形。我们希望,在一定的范围内,让计算机帮我们画出三角形,使得面积与周长的比值最大。
接下来,我们打开Revit2021和Dynamo2.5,现在把三角形做出来。
首先创建三个点,分别用参数控制每个点的XY值:
然后将三个点串联成线,并求周长:
接下来封闭曲线成面,并求面积:
最后计算面积和周长的比值,并用一个watch节点输出结果:
到这里,一个基本的三角形就创建完成了,我们可以调整参数,生成不同的三角形,接下来如何来用这个程序测试衍生式设计呢?
首先,衍生式设计需要有输入和输出,我们需要把控制点XY值得滑块作为输入,最后的watch节点作为输出:
到这里,Dynamo程序就算真正的完成了,接下来就要利用衍生式设计工具了,点击菜单栏衍生式设计按钮,单击导出以用于衍生式设计...
然后在弹出的菜单里设置说明和图标:
点击导出后,会提示导出完成:
接下来点击,衍生式设计菜单下的“创建分析”命令,就会弹出创建分析对话框:
选择我们之前导出的三角形,进入定义分析对话框:
定义分析的时候,首先需要选择分析的方法,工具里内置了四种方法,分别是:Optimize(最优化),Cross Product(跨产品),Randomize(随机化)和 Like This(相似)。
最优化:迭代以实现目标
生成针对您的目标进行优化的设计。Generative Design运行多次设计生成。每个后续生成都基于之前的结果进行进化和改进。
随机化:使用范围内的随机值
使用此方法进行探索,以浏览分析类型可以生成的广泛的可能解决方案样例。
跨产品:在范围内均匀分布值
尝试不同的变量组合。使用等间距值生成指定数量的结果。
相似:探索首选结果的变化
要达成目标,但想要调整设计?查看对选定变量的细微更改如何更改设计。使用此方法可以浏览首选结果的不同变体。
这里我们选择用Randomize(随机化),让程序快速创建多个备选方案,供我们选择。同时勾选所需的变量,这里默认列出之前我们在Dynamo设置的输入。设置生成方案的数量,默认为40个。
之后点击生成,就会自动生成分析结果,并跳转到浏览结果界面:
同时我们可以切换散点图和平行坐标图,以不同的方式查看结果。
到这里,一个基本的衍生式设计流程,我们已经走了一遍,当然,这只是简单的尝试一下这个流程,想要真正的进行衍生式设计,需要更复杂的逻辑,配合Dynamo编写更复杂的程序,来执行衍生式设计。
当然了,有小伙伴肯定会问,节点库里,还有GenerativeDesign节点包,根本没用到啊!没关系,下次有时间,我会专门介绍下,相关的节点有什么用途,其实真正对我们有意义的,只有Data.Gate和Data.Remember两个节点,很有意思,下次我们继续聊~
好了,今天的分享就到这里了,主要是想给大家简单介绍一下衍生式设计的工作流程,当然还需要大家自行尝试,有不对的地方,请指正哈!