可视化编程语言下的计算式设计插件——Dynamo初探

2015-01-27 10:19王松
福建建筑 2015年11期
关键词:编程语言塔楼插件

王松

(华侨大学建筑学院 福建厦门 361021)

可视化编程语言下的计算式设计插件
——Dynamo初探

王松

(华侨大学建筑学院 福建厦门 361021)

当今国内的BIM发展势头良好,很多优秀的BIM设计平台被引入建筑设计及其管理的进程当中,Dynamo作为其中的一员,目前还没有被国内大部分设计工作者所熟知。本文对Dynamo插件采用的计算式设计和可视化编程语言进行了简单的介绍,通过三个案例对其应用加以说明,并对其前景进行了一定的展望。

计算式设计;可视化编程语言;Dynamo

E-mail:1092790626@qq.com

BIM在建筑设计设计和管理上的优势毋庸置疑,近年来,我国对BIM的重视程度不断提高,很多设计院都开始采用BIM技术指导设计。BIM软件众多,例如Revit,ArchiCAD等,其中Revit在高校和设计院的普及率比较广泛,在建筑设计、水暖电工程设计、结构设计上相较于其他软件能力突出,交流便捷。Revit也拥有众多插件,例如速博插件,橄榄山插件等,但一直缺少一种让设计师直面程序设计的插件,Dynamo的出现打破了这种局面,通过计算式设计和可视化编程语言,设计师可以在Dynamo简洁的界面中随心所欲的编写逻辑算法,解决设计难题;算法也可以保存为指定文件,方便反复使用与修改。

1 计算式设计和可视化编程语言

1.1 计算式设计(Computational Design)

计算式设计,是指利用计算机强大的运算能力来解决设计问题,通过自动化、脚本编写、模拟计算和参数化等各种技术来生成设计解决方案。近年来,随着计算机科学技术的不断发展,计算式设计也越来越多的被引入建筑设计,并对其产生深远的影响。许多设计任务都已经开始尝试使用新的计算技术,帮助设计师优化设计流程,生成创新型的设计选项。计算技术用途广泛,例如可以将复杂冗长的生产过程自动化起来,或者运用编程语言编写依据输入条件自动生成三维形体的应用程序[1]。

1.2 可视化编程语言(Visual Programm ing Language)

“可视化编程语言”即是让设计师在图形化的操作界面下创建程序。通过掌握一定的编程逻辑知识,针对某一问题,设置一套循序渐进的步骤方法,在软件中连接预定义的功能模块,轻松创建自己的算法和工具,通过输入、处理和输出的基本逻辑解决该问题。设计师不必从头编写复杂的程序代码,就可以享受计算式设计带来的方便与快捷[2]。

2 计算式设计插件——Dynamo

2.1 Dynamo简介

Dynamo是一个运行在Autodesk Revit和Vasari上的开源插件,在0.7以后的版本中也可以独立运行,并在0.8以后的版本中集合了中文语言包。通过基于结点的可视化编程界面,Dynamo可以让用户自由创建计算式设计模型或者其它自动化处理过程。用户可以使用完善的数据处理,关联性结构和几何控制功能。这些功能在基于传统CAD界面的软件中是很难做到的。更重要的是,Dynamo让设计师可以在BIM环境(Revit平台)中充分发挥计算式设计能力。设计师完全可以自定义Revit中各种建筑构件的创建与修改流程。Dynamo是开源的,允许设计师对插件内部的程序进行修改,并在Dynamo论坛上提供建议。

图1 Dynamo界面

Dynamo提供了与Autodesk Revit和Vasari的全新交互思路。设计师可以创建完整的几何体生成—定位—可视化流程。可视化编程界面很大程度上扩展了使用BIM驱动设计迭代的方式方法。作为插件,Dynamo可以运行在Revit2013及以后的各版本之上,还有Vasari Beta 3。Dynamo在独立运行时,除Revit相关的结点无法使用外,其它功能都可正常使用。同时Dynamo也正在尝试集成到其它平台上。目前已经出现了基于Rhino平台的Rhynamo插件,该插件也在不断完善中。

2.2 Dynamo和Grasshopper的比较

由于操作界面和操作方法的相似性,Dynamo常常被许多人用来和Grasshopper比较,被称作“Revit上的Grasshopper”。这种说法看似正确,但其实是对Rhino和Revit两种平台的误解。

Grasshopper作为基于Rhino平台的插件,有着丰富的拓展工具,可以帮助设计者通过参数化手段处理复杂几何形体,大大加强了Rhino对形体的处理能力。经过几年的发展,Grasshopper在这方面的功能日渐成熟,作为当今参数化设计软件中最广为人知的插件,Grasshopper有着较为成熟的数据结构和广泛的用户,而且许多优秀的外置运算器可以被集成其中,如Kangraoo,Geco等等。而Dynamo想跟Grasshopper做到类似程度,还需要很长的软件开发时间,因为创建自由几何形体并不是Revit的强项。Revit的出色之处在于管理建筑信息,我们知道,Revit中的模型不仅具有3D造型,也带有丰富的数据信息,在Dynamo出现之前,还没有一款插件可以支持Revit以可视化的方式管理这些信息模型。Dynamo的出现,填补了这一空白。使得信息模型的管理更加灵活。

3 Dynamo结合Revit的应用

以下通过几个案例展示Dynamo利用计算式设计方法在revit平台下处理建筑信息的能力。

3.1 座椅排布

对于建筑设计中相同元素(门、窗、桌椅等)基于某一规律的排布问题,虽然难度不大,但有时修改起来非常费时。例如阶梯式座椅排布问题,在水平投影面积固定的一片区域,如何排布阶梯式的座椅,一般的CAD软件难以胜任,单用Revit本身处理起来也比较麻烦,在利用Dynamo结合Revit,就能很好的解决这个问题。

操作实例拟在一个水平投影为4m×6m的区域内布置一组行列间距均为0.8m,高度间距为0.5m的座椅组。在操作过程中,可以将每个座椅抽象为一个点,而每个点在Dynamo的坐标系中,都含有坐标信息X、Y、Z,这个坐标信息和Revit中的坐标信息是相对应的。换言之,Revit中的座椅排布可以转化为Dynamo中的点阵排布,依照这种转化思路,我们就可以在Dynamo中思考该问题的解决办法,我们用水平投影的总宽度(W)除以宽度方向的间距(Dw),得到一个数值k,用运算器Math.Floor将该数值取整为Kw(k不一定为整数),我们便得出了宽度方向上点的数量(Revit中座椅的数量),而Dw即为宽度方向上相邻两点之间的距离(Revit中相邻两列座椅的水平距离)。这时用运算器Number Sequence将数值带入,start为起始数值,这个数值可以依据Revit中座椅阵列的位置调整,amount=Kw,step=Dw,于是我们得到一组等差数列,即宽度方向上座椅的排布。同理,我们可以得到长度方向上座椅的排布,amount=Kd,step=Dd。(图3)将两个方向的点阵纳入运算器Point.ByCoordinates中,运用叉积运算方法,得到了一组二维数组,即我们需要的座椅在水平方向上的排列方式。至于座椅高度方向上的H值,即每行座椅的高度,可以利用H/Dd(即阶梯角度的正切值)将长度方向的数值转换为高度值。

图2 计算思路

图3 Dynamo计算得出的结果

为了使运算界面更加简洁,如果这类计算具有很强的实用性,我们可以将中间的计算算式打包成一个自定义节点(Custom Node)并赋予节点名称和端口名称(图4)设计师只需改变输入端的数据,便可由计算机计算生成不同的结果。(图5)从这个简单的案例中可以发现计算式设计的优势所在:在可视化平台上搭建逻辑算式,约束元素排布,在保证灵活性的前提下,使得设计的可控性更强,这正是设计师一贯追求的方法。

3.2 建筑形体构建

第一个案操作实例通过将建筑构件的排布转化为点的排布,将建筑构件的管理转化为对点的管理,解决了座椅的排布问题。不难看出,管理控制点是一种很好的转化思维,以此类推,我们也可以管理Revit中的线或面,从而创建非常规的形体。在梦露大厦形体的模拟当中,Dynamo只利用了Revit概念体量中的两条焦点相同,焦距不同的椭圆线,便创造出了扭转的塔楼形体,且形体可以依照输入端的数据加以控制。

图5 不同赋值下的座椅排布

内圈的椭圆线a用于生成塔楼形体。从梦露大厦的形体可以得知,塔楼形体分为四个部分:上,下两段的扭转角度较小,而中间两段的扭转角度较大,故形体建模也分为四个部分的数据分别输入,每个部分的层数和旋转角度均有不同。

首先将椭圆线a按照Z轴的方向向上复制,数目和间距分别为层数和层高,这时我们得到的是一个没有旋转的一组曲线,然后利用Dynamo中的Geometry.Rotate这个节点进行旋转,该节点的输入端有三个端口,分别为geometry(几何)、basePlane(基面)和degrees(角度)。在基面输入端输入Plane.XY,即确定了形体的基面方向(水平面),geometry端口输入刚刚得到的曲线组,degrees端口输入角度数据。角度数据的处理,运用了一个自定义节点,该节点将四个部分的曲线旋转数据组合成一个数组(list),传递给degrees输入端,至于每个部分的曲线旋转数据又被分为三个部分,起始角度,旋转角度(由层数×每层旋转角度得到)和终止角度组成,第一部分的终止角度被输入到第二部分的起始角度端口,以此类推,得到了四组旋转角度数据,最后将这四组数据组合为一组数据,便得到了塔楼扭转的所有角度数据。由Geometry.Rotate节点生成了旋转的椭圆线组,将这组曲线输入到PolySurface.Byloft的节点中(该节点由将不同高度层的曲线转化为光滑曲面),最终得到了扭转的塔楼形体(图6)。

塔楼挑檐板的生成逻辑与塔楼形体类似,利用Curve.ExtrudeAsSolid节点分别将外圈的椭圆线b和内圈椭圆线a沿Z方向挤出相同的厚度,随即得到两个实体(Solid),将两实体进行布尔运算,得到挑檐板实体,然后依照相同的逻辑沿Z轴方向向上旋转,便生成了旋转的挑檐板实体(图7)。

这种方法看似复杂,但只要掌握了一定的逻辑思路,构建这样的形体并不困难,况且形体建成后,可以随意修改,层数,层高,角度均可以控制,相较于单纯运用Revit的反复建模修改,Dynamo再次体现出其便捷性与高效性。

3.3 纽约现代艺术博物馆PS1年轻建筑师方案“hy-fi”

图6 塔楼形体的生成

图7 塔楼挑檐板的生成及塔楼最终成果

在由The living设计的纽约现代艺术博物馆PS1年轻建筑师方案“hy-fi”中,结合了先进的生物技术,建筑完全由玉米茎和特质根结构材料制作的有机砖组成,并且完全不耗费任何能量,也没有任何碳排放。在建筑的建造过程中,曲面砖墙的交错砌筑方式是一个难点,针对这个难点,Dynamo允许设计师通过试验的办法进行模拟并得到多个方案,(图8,图9)经过人为筛选,最后得出了搭接方式较为合理的砌筑方式。从中我们可以看出,Dynamo对实际项目中建筑的建造方法也具有一定的指导性。

3.4 小结

图8 Dynam o模拟“hy-fi”曲面砖墙建造

图9“hy-fi”建成实体

结合以上三个案例,可以看出Dynamo对设计师的设计思维和逻辑有着较高的要求,而软件本身的操作并不复杂,在连接各个计算功能模块的同时,设计师的设计思路不知不觉跃然“纸”上,这对正确思路的培养十分有益,在这点上Dynamo和Grasshopper具有同样的优势,虽然造型手段尚不够丰富,但Dynamo的独特优势在于有着强大的Revit平台进行支撑,不仅可以帮助设计师在建模上有所突破,更重要的是,在建造和管理方面,Dynamo可以将模型中的信息依照一定逻辑重组,在最终的方案成果中,所有的原始信息都会被完整的保留下来。相较于Grasshopper复杂的形体模式处理,这些功能则更加实用,更加适合生产生活的需要。

4 与编程结合下的Dynamo的发展前景

计算式设计的基础是脚本的编写,为了让设计师省去学习编程的时间,像Grasshopper,Dynamo之类的插件通过编写预定义功能节点的方式,让设计师“拼装”程序,以满足自身需要。但是节点可视化编程本身的特点,静态的数据处理方式一定程度上限制了编程语言对数据结构处理的能力,这也是Grasshopper,Dynamo之类插件不断更新的原因。在这方面,利用Python等计算机语言可以更加自由的处理数据,弥补软件的不足。一些设计师甚至直接用计算机语言编写程序,通过逻辑思维,用最简洁的办法具有针对性的解决设计难题,避免了由于节点运算能力的不足导致思维不得不走“弯路”。

随着计算机、材料、制造业等相关产业技术在建筑领域的不断发展,近年来出现了可以打印建筑构件甚至小型房屋的3D打印技术,极大的提高了生产效率和建筑的适应性以及可变性。这在技术上是一个质的飞跃,也会极大影响到建筑设计思维:由于3D打印采用数控技术,而不再是人工砌筑,若想操控3D打印机,使之按照设计师的思维方式按步骤合理的打印建筑,必要的编程知识是不可或缺的。如果设计师懂得编程,不但可以丰富自身的设计手段,更可以有效的操控机械实现设计建造,避免了设计师与施工方的理解差异,交流不畅等导致的遗憾。

利用Dynamo的开源性,设计师可以更改预定义功能节点中出现的错误,不断优化这个平台。当然,基于商业的目的,Dynamo研发团队也推出了Dynamo Studio,这是一款界面更加优化,功能更加全面,性能更加稳定的软件平台,通过收取一定费用来支持软件的研发和网站的维护。但该研发团队也指出,Dynamo这款插件将继续保持开源性并向用户提供免费下载和使用。这种软件开发模式允许开发者和用户之间平等交流,也使得软件的更新速度几乎达到了日日更新。Dynamo研发团队种种友好的“举动”也使许多设计师和爱好者加入到Dynamo的研发当中。

5 结语

基于Revit平台的计算式设计插件Dynamo,自身具备了如下的特点:

(1)作为BIM软件平台上的插件,方便管理模型及其信息,且具有一定的造型能力。

(2)可以脱离Revit平台独立运行,具有一定的独立性。

(3)软件始终保持开源,更新速度快,免费为设计师提供服务。

(4)拥有和其他同类软件交互的语言接口(Python)。

(5)最新版本已经支持中文。

Dynamo的上述特点,使得其在同类软件中有着无可比拟的优势,虽然在软件开发上尚不成熟,但它无疑瞄准了正确的方向。当今国内的BIM发展势头良好,很多优秀的BIM设计平台被引入建筑设计及其管理的进程当中,Dynamo作为其中的一员,目前还没有被国内大部分设计工作者所熟知。本文对Dynamo插件的原理进行了简单的介绍,通过两个操作案例和一个实际案例对其应用加以说明,并对其前景进行了一定的展望。在国外,Dynamo的应用已经不止于建筑,在桥梁,制造等产业,它的功效已经被越来越多的人所认同。相信在不久的将来,Dynamo插件可以更加完善,能够被国内更多的设计师所了解并在实践中加以运用,辅助设计师生成更多优秀的作品。

图片来源:

图8,图9来自极客建筑论坛,其余均为作者自绘

[1]“初识DYNAMO”系列之一——可视化编程利器(http:// www.archgeek.org/2014/09/basicinfor/)

[2]The Dynamo Primer(http://dynamoprimer.com/)

Com putational algorithm design p lug-in in Visual programm ing language——an initial research of Dynamo

WANGSong
(School of Architecture,Huaqiao University,Xiamen 361021)

Nowadays the BIM(Building Information Modeling)sees a promising future.and Many BIM design platforms have been applicated in Architecture,Building and Construction management,yet Dynamo,however,as one of which,remains a new acquaintance to mostof the designers in China.This thesis consists in introducing briefly this plug-in using three pratical cases and providing its outlook.

Computational;Design;Visual Programming Language;Dynamo

TU201.4

A

1004-6135(2015)11-0105-06

本文为华侨大学研究生创新基金资助项目(华大研[2014]6号)

王松(1989.7- ),男。

2015-09-03

王 松(1989.7- ),男,硕士,主要从事建筑设计及其理论方面的研究。

猜你喜欢
编程语言塔楼插件
压力-体积转换在CFC编程语言中的实现解析
自编插件完善App Inventor与乐高机器人通信
Java编程语言的特点与应用
厄瓜多尔“向日葵”住宅塔楼
浅谈不同编程语言对计算机软件开发的影响
鹿特丹The Sax塔楼
荷兰Looping住宅塔楼
基于jQUerY的自定义插件开发
面向对象Web开发编程语言的的评估方法
万象和项目超高层塔楼结构设计