行业动态

建筑技术丨基于Houdini+VEX语言的程序化建模方法研究元分析

来源:admin  浏览量:  发布时间:2025-05-31 20:01:01

皖中地区有大量独具特色的传统民居,却由于多种因素逐渐消失在大众的视野中,因此需要对其形制特征进行抢救性研究整理。与此同时,数字信息技术的应用已经成为时代主题,传统民居保护也在受其影响与之融合。计算机图形学、可视化、编程等数字化信息技术在传统民居保护方面获得了广泛的应用,有利于传统民居信息的管理,同时既能够减少模型构建工作量,还可以为后续复原与新建改建提供技术支持。

1  相关理论研究

1.1  Houdini+VEX程序化建模优势 

Houdini与市面上常见的三维软件在结构、操作逻辑、使用方式等方面都有很多不同。其工作流程完全基于节点,节点是整个软件操作中最为基本的单位。每一个节点都能够进行数据输入输出及属性保存的操作(图1~图3)。

1.png

图1  Houdini使用窗口(计算机截图)

2.png

图2  Houdini节点网络(计算机截图)

3.png

图3  Houdini节点示意(计算机截图)

利用Houdini+VEX进行程序化建模的优势有以下3点。

(1)建模高效性。利用Houdini+VEX进行程序化建模能够基于建构逻辑实现古建模型快速生成。模型自动生成的建模方法与传统的建模方法相比,工作效率得到了大幅提高。

(2)研究灵活性。将传统建筑中的建筑空间形制与基本构件分离,单独生成基本构件的参数化模型与空间形制模型。并依据建筑细节按一定的规则进行分类,形成不同类型的基本构件。将这些构件单独研究并建立相关构件库,实现对构件库的不断深化与细分,而不影响建筑主体形制。同时,在探究传统建筑中逻辑明确的空间形制时也能够抛开建筑细节对其的干扰,更加深入本源的学术探究。

(3)增加流程容错率。Houdini程序化建模整个工作流程均可以可视化节点网络的方式展示在使用者面前。因此使用者可以随时返回工作流程中任意步骤进行修改而不需重新制作。随时回溯工作流程并加以修正,提高了整个程序化建模过程的容错率。

1.2  传统民居建构特征

(1)模数化的建构特征。与传统大木作相同,皖中传统民居也有着一套规范建筑构件形制的标准。虽然普通民居不会完全按照规制进行建构,但大体上仍然遵循一定的模数关系。模数是在整个古建筑设计中所定好的标准尺度单位,是建筑建造全流程中的调控基础。模数制有助于主事者合理安排人员与建材,减少不必要的浪费行为。

(2)构件位置关系清晰。在整个木构架中,任何构件的位置均能通过与之相关的构件位置推导出来。整个建造过程呈现出一种明确的指向性,具体表现为从前一个工序指向下一个工序。这种清晰的因果关系与计算机程序中单向计算关系是吻合的。

(3)建筑整体形制与构件能够分离。通过分析皖中传统建筑形制特征可以发现,组成建筑的各种构件在不同等级的建筑中基本相同。因此,在皖中传统民居的建模过程中可以将基本构件通过程序化建模方法封装成由某些参数控制的程序化模型。然后将其置入设定好的建筑形制模型中,在减少工作量的同时提高参数化模型的可变性。

1.3  皖中传统民居特征总结

通过阅读相关文献资料可以发现,在相关学者的研究中将皖中传统民居划分为四大类,分别是江淮天井式民居、江淮院落式民居、圩堡式民居及船屋。由于船屋实体建筑几不存世,因此研究重点将放在前3种建筑类型。本研究主要在烔炀古镇、桐城北大街、合肥等地选择保存较为完善且具有显著皖中地域特征的代表性民居进行测绘调查。结合相关文献典籍的梳理,对皖中地区传统民居的总体特征进行归纳。

皖中传统民居形制特征总结主要从空间形制与基本构件特征两方面进行。空间形制需要总结皖中传统民居常见的平面组织形式、屋顶举折的常见数值以及坡屋面组织形式的特征。基本构件特征主要从基础、木构架、墙体、屋顶、装饰装修这五大类进行总结,旨在通过这种具体详细的分析将皖中传统民居的全貌特征剖析展现出来,为后续的程序化建模研究进行理论铺垫。

2  皖中传统民居程序化建模方法研究

2.1  皖中传统民居程序化建模总体思路

利用皖中传统民居的建构特征、平面组织规律、构件间比例关系等数据信息搭建程序框架。通过各种细节变化展现皖中传统民居的空间形制变化、基本构件替换、木构架自动适应空间形制变化等。在编译控制这些变化的代码的同时,需要将决定形制变化的因素设置为控制参数。通过调整控制参数自动生成多样化的皖中传统民居模型。

根据皖中传统建筑构件与整体形制分离特点,在进行皖中传统民居程序化建模方法研究时,可将建筑空间布局形制与基本构件分开考虑。

首先构建一个空间形制可随输入值变化而变化的程序,形成皖中传统民居的基本空间布局形制;生成一个皖中传统民居基本构件数据库,以供后期模型生成时随意调用;最后将提前制作好的基本构件放置到空间形制轮廓模型中。

2.2  皖中传统民居空间形制随机生成方法

将皖中传统民居几种典型平面组织模式拆解成几个体块之间的拼接,并解析其构成规律,发现如果确定关键的6个点的位置即可控制计算机自动生成上述几种组织形式。将堂屋模块的控制点设为坐标圆点,将固定模数尺寸进行加减运算便可得到6个控制点的矢量坐标。创建以上述几种形式命名的整数数组作为存放控制点的数据集。

对所得到的点坐标进行判断,按照相应的判断条件将其存放在不同数组中。在对应点位置放置相应体块就可以生成不同的形制模型。

随机生成皖中传统民居平面组织形式后需进行属性设置。根据体块中每个面法线方向的不同编译代码,为每个面添加屋顶、墙面、底面等不同属性。皖中传统民居空间形制不仅是平面组织,还包括坡屋面。在进行坡屋顶体块建模时,应先确定坡屋面的屋面轮廓。再进一步确定屋脊方向,明确坡屋面的主次、穿插关系。最后按照整理出来的固定举架数值(表1)挤出坡屋面,并进行山墙封面等后续操作)。

表1  屋面举架数值

4.png

2.3  皖中传统民居基本构件程序化模型生成方法

2.3.1  基础构件程序化建模

皖中地区传统民居台阶仅有踏跺、规模等级稍高一点的民居才会有垂带。根据测绘与文献资料梳理可知,踏跺的高(h)宽(a)基本为定值,h约为130~150 mm,a约为260~300 mm,踏跺的长度尺寸完全取决于户门宽度,因此需要将踏跺的长度设置为可变参数。

柱础与其他由某一个参数控制整体形态的构件不同,因为皖中传统民居的柱径大抵相同,所以同样形状柱础的尺寸相差不大。在柱础构件的模型构建中只需要按照其通用标准尺寸进行建模,后期再根据建筑所需,调取不同的柱础形式导入模型即可。

2.3.2  木构件程序化建模

木构件根据其在空间中的状态可分为三类:竖向木构件、横向木构件及斜向木构件。横向木构件中梁、枋、檩与竖向木构件柱都可以看做“线”形构件,利用台阶生成方法即可实现其程序化建模。斜向木构件椽子、望板等还需额外设置方向控制参数,用以调节其在空间中的状态。

在传统建筑中大木构件从不会独立存在,而是以木构架组织形式存在于传统建筑中。因此在探究大木构件的程序化建模时,仅考虑单独的构件参数化建模是不够的,还需要探寻木构架组织形式的程序化建模方法。

木构架程序化建模思路主要可以分为以下四步:立柱→穿枋(架梁)→架檩→铺椽。木构架的程序化建模很大程度上取决于建筑空间布局形制及所采用的木构架组织形式。

2.3.3  墙体构件程序化建模

经过实地测绘调研与资料整理可知,皖中地区砖墙的砌筑方式基本相同。墙根实砌,墙身采用五斗一眠、三斗一眠、两斗一眠等不同的方式砌筑成空斗砖墙,山墙处再采用实砌的方法砌至与内部木构架齐平位置的组合模式。

皖中地区墙体砌筑所用青砖大多比较薄,常用尺寸有20 mm×150 mm×300 mm、30 mm×150 mm×300 mm等,本研究砖块建模以20 mm×150 mm×300 mm为例。

在不同的建筑中砖块尺寸一般是一个固定模数,但是砖块的砌筑逻辑却不尽相同。由此可得,在进行砖墙砌筑部分的程序化建模时想要实现的最终目标应该是通过调节某些参数数值,就可以变换同一建筑上不同砖块砌筑方式。

在设置所需控制参数时也应该从砌筑逻辑上的不同寻找所需参数。通过分段解析墙体的砌筑特征,可以总结出想要实现墙体参数化模型的生成首先需要确定以下几个参数,实现对墙体砌筑方式的参数化。水平向所需砖块数量,以此控制整段砖墙生成长度;墙根实砌砖墙部分层数;空斗砖墙部分砖墙层数,以此控制不同的砌筑方式;空斗砖墙部分迭代次数,以此控制空斗砖墙整体高度。

2.3.4  屋顶构件程序化建模

按照瓦片高度45 mm、长度240 mm、宽度220 mm厚度10 mm的常见尺寸进行瓦片的建模。用三元矩阵与欧拉角控制瓦片在空间中的旋转角度,并将最终设置好的瓦片模型通过Subnet打包好以备调用。将生成椽子的控制曲线复制过来,将瓦片复制到曲线点上,通过调整曲线上所拥有的点的数量控制瓦片布置的疏密程度,再通过调整瓦片的旋转角度使瓦片关系呈现出较为和谐的搭接状态。

筑脊时立砌青瓦的铺砌模式与砖墙砌筑相似,均可以通过for循环实现瓦片的增殖迭代。 

2.3.5  装饰装修构件程序化建模

门窗参数化模型需先构建外框,然后提取其中空部位的尺寸。将中空部分宽度赋值给绦环板、裙板的宽,再依据测绘好的比例数据赋值绦环板、裙板的长,实现受外框长宽尺寸参数控制的门窗框架模型。最后将框内长度减去绦环板、裙板腰串的长度与内框宽度作为窗格的边界,将窗格图案与之适配即可。

2.4  皖中传统民居基本构件置入方法

构件模型置入源于传统建筑中建筑空间形制与构件分离的理论基础。将皖中传统民居形制特征生成器产生出结果看作是一个整体,而基本构件则是在整体框架下能够随意进行调整与置换的可替代性的构件。

通过各类构件相对位置的梳理,可以将各类基本构件置入时所需要的空间基点坐标转化成与“形制生成器”原点坐标有直接数量关系的空间坐标,从而确保在基本构件模型置入时能够随着形制特征模型变化改变其置入位置。

为需要置入的基本构件以及形制模型添加法线属性,基本构件法线方向设置为朝向显示器的方向,形制模型的法线方向则设置为每个面朝外侧的方向。

为将基本构件模型根据基点位置置入到“形制生成器”中,通过控制程序将基本构件法线方向与其置入面法线方向调整一致即可。

3  皖中传统民居程序化模型成果展示

3.1  皖中传统民居程序化模型控制参数导出 

为实现皖中传统民居的可变性与自动生成,采用诸多用于控制形体变化控制参数。因此需要在整个节点网络的最外层结构中添加一个独立于整体节点网络的空节点(null)。并将散落在节点网络中所有的控制参数逐条生成调用代码类似于(ch(". . / width_out/ minsizex")/2)并将其逐条链接到 null 节点中,以便在节点网络外部对皖中传统民居形态进行细节调控。

3.2  皖中传统民居程序化模型生成展示

通过调整空间形制变化参数,可以在软件模型展示窗口即时生成几种不同的传统民居类型。几种不同的空间形制采用了相同的门窗洞口排布逻辑以及相同的基本构件尺寸,通过这些不变的数值使整体形制及基本构件种类变化更加直观。

皖中传统民居程序化模型仅通过空间形制生成图示并不能展示完全,还需要一些模型细节。皖中传统民居程序化模型细节展示主要从以下3个方面进行:木构架、墙面纹理、门窗样式。

本研究成果中木构架能够自动适应空间形制的变化,随着空间形制变化自动选择与之匹配的柱网以及屋架形态。但木构架的变化并不能从模型外观中展现出来,还需要将墙体、屋面构件剥离。

墙面纹理变化主要是指墙根实砌高度和空斗砖墙类别。通过调整墙根高度参数输入值,可以改变砖墙实砌部分的高度。

同样通过改变空斗砖墙类别参数的输入值也可以控制生成的空斗砖墙部分是几斗几眠。皖中传统民居中门窗形制变化丰富,为了展示皖中传统民居门窗变化特征。

本研究的程序化模型中,将门窗构件打包成方便替换的数字资产。调整门窗类型参数的输入值,便可以实现一键替换模型中所有门窗的生成效果。

4  结束语

在研究皖中传统民居形制特征的基础上,探究如何利用可视化的编程语言将建筑形制转化成程序化模型,并进行参数导出。

程序化建模方法主要有三步,首先是总体框架生成,其次是各类基本构件生成,最后是二者的有机结合。

通过解析各类平面组织形制的连接特征,将其分成几个常见的空间模块,生成皖中传统民居空间布局形制。将常见的几种平面组织形制转化成编程语言,用于空间模块的组合。

对生成出的空间模型进行属性添加,以便后续操作。在置入过程中需要设置好相应的基准点与构件方向,最终在模型中精准快速地定位构件。


摘自《建筑技术》2024年3月,宣 蔚, 原佳芮, 王东临