ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

设计形态学与第三自然:算法驱动的形态生成实践与团队踩坑复盘

设计形态学与第三自然:算法驱动的形态生成实践与团队踩坑复盘 我们团队在行业交流里通常这么介绍自己做形态学方法的。说这个词的时候我也不急着掏作品集也不马上解释算法而是先看对方的第一反应。懂行的人会立刻接一句——设计形态学、第三自然不懂的人多半会追问那是做仿生的吗还是做参数化的于是每次都要花十来分钟把这三个词串起来讲一遍。今天这篇干脆把这些年团队在形态学这条路上沉淀下来的认知、工具、流程、翻车教训一次性梳理清楚也算给专注在“设计形态学”与“第三自然”这两个方向上的同行们一份参考。这篇文章不只是概念科普更接近一份团队的实操复盘。你会看到我们怎么把生物形态发生的逻辑转译成设计算法怎么用性能仿真反过来推形态怎么从一堆生成结果里挑出真正能落地的方案以及团队跨学科协作时那些踩出来的细节。不管你是做建筑的、做工业设计的、做交互装置的还是单纯对“形态生成”这个方向感兴趣的学生只要你想理解“形态不是设计出来的而是长出来的”这句话到底怎么落地这篇内容应该都能给你一些启发。1. 我们究竟在做什么把“形态”当成动词来干活1.1 三个关键词到底是什么先用人话讲一遍先说说我们怎么理解这三个词。“设计形态学”不是研究“漂亮的形状”而是研究“形态是如何形成的”。传统设计流程里设计师的脑子里先有一个目标形状然后在软件里一笔一笔把它画出来而在设计形态学的工作语境里形状是规则、环境、约束条件一起作用之后涌现出来的结果。设计师更像一个制定规则的人而不是一个画图的人。“第三自然”这个概念在圈内有几个版本的解释我们团队采用的理解是这样的第一自然是原始荒野完全不受人为干预的自然演化第二自然是人类出于功能需求改造的自然比如农田、水渠、城市公园它们的逻辑核心是“高效、可控”第三自然则是两者之上的一种融合状态是人工系统与自然生成逻辑共同演化的结果。它既不是复刻自然也不是征服自然而是让建筑、产品这些人工物遵循自然界的生成法则去运作。“形态学方法”则是这一切的操作手段。生物学里的形态学研究生物体的形态与结构之间的关系而我们把这种方法论引入设计领域用算法去模拟形态的发生过程。比如植物的分叉规则、细胞的分化过程、鲸鱼皮肤的纹理形成这些并不是为了让设计“长得像生物”而是为了借用形态发生背后的适应逻辑让设计具备更强的性能和环境应变能力。1.2 为什么不叫“仿生设计”或“参数化设计”很多同行会问你说的这些东西不就是仿生设计或者参数化设计换个名字吗必须澄清这里面的差异很大。传统仿生设计大多是“形态模仿”比如把莲花叶子的自清洁效果变成外墙材料的疏水纹理把鸟巢的编织逻辑变成大跨度结构的拓扑本质上还是在找自然形态来做“参照系”。参数化设计则更偏向“用程序控制变量”它强调通过调整参数来生成一系列方案但参数化设计本身并不关心形态的“发生逻辑”它关心的是“可调节性”。同样的一个参数化表皮网格密度可以调、错位角度可以调但这些参数与具体的物理环境、结构受力、材料性能未必有深度耦合。而形态学方法的核心是“过程驱动”。一个形态是否成立要看它背后的生成规则是否合理。比如同样是生成一张立面孔隙纹理常规参数化做法是随手拉一个渐变让孔隙从左上角到右下角慢慢变大我们的做法是先在立面网格上布设反应-扩散方程的浓度场初始值根据风环境、太阳辐射数据来决定种子的位置和扩散系数让孔隙分布作为计算的结果自然涌现出来。形状不是“被调整”出来的而是生成规则与环境数据共同作用下的必然结果。1.3 团队构成设计、编程、工程背景怎么搭班子形态学方法的跨学科属性决定了这个团队一定是混编的。我们小组目前稳定成员是七个人其中有建筑背景的有工业设计出身的有计算机方向转过来做算法开发的还有一个机械工程背景负责制造落地另外两位是生物背景的研究助理负责为项目提供生物学形态知识的支撑。这套班子的协作方式跟普通设计公司很不一样。建筑背景的同事不会像传统事务所那样直接进入造型深化他们的首要任务是“读场地”把气候、光照、流线这些环境信息整理成算法能消费的数据输入编程方向的同事不负责写商业软件而是针对项目需求定制生成逻辑比如把L-system分支结构改写成适合柱网生成的版本或者给多智能体系统接入行人流模拟的接口工程背景的同事也不是最后才介入审核施工图而是在算法生成阶段就提出制造约束比如最小可加工曲率半径、最大可运输构件的尺寸这些参数会作为权重加进优化算法里。坦白说这种团队协作模式在项目前两周往往效率极低因为语言体系完全不一样。建筑师说“这里需要一点韵律感”程序员接收到的是一堆模糊的需求。后来我们摸索出一套解决办法所有讨论必须落到“规则描述”上。每个人提出意见时都要尽可能转化为“某个变量在某种条件下应该怎样变化”的句式。连“韵律感”都可以转译成“缝隙宽度随高度按正弦曲线振荡振幅不超过某个阈值”。这件事的过程和细节我在后面的踩坑部分会专门展开。2. 设计形态学的核心方法从生物形态发生到算法生成2.1 四条最常用的生成路径这些年团队项目里反复用到的生成算法可以归纳成四条路径L-system、反应-扩散方程、元胞自动机和多智能体系统。它们各有各的适用语境不是越复杂越好。L-system也叫L字系统最早由生物学家Aristid Lindenmayer提出用来模拟植物生长中的分支过程。它的核心就是一条重写规则从一个初始符号出发不断用规则替换符号最终生成复杂的树状结构。我们用它来生成建筑中的树状柱网、分叉梁架和楼梯的支撑骨架因为这类结构天然就具有层级分支的特征。反应-扩散方程是更偏“物理化学”的一条路径。它通过两个互相耦合的偏微分方程模拟化学物质在空间中的扩散和反应最终在均匀场里自发形成斑纹、网格、条纹等图案。这就是后来广为人知的图灵斑图。团队用这类算法处理建筑表皮的孔隙分布、室内地面的防滑纹理、景观铺装的边界渐变效果非常自然。元胞自动机的逻辑则是把空间划分成网格每个格子根据自己的状态和邻居的状态按照规则更新。它的神奇之处在于极其简单的局部规则可以涌现出复杂的全局图案。我们通常拿它模拟“生长型空间”比如一个商业综合体的店铺模块根据人流量数据扩张或收缩或者一个公园的人行路径在踩踏压力下逐渐固化成边界。多智能体系统的思路与前三条都不同。它不是从全局规则出发而是让大量独立的“智能体”在空间里移动、留下痕迹、彼此感知最终群体的轨迹聚合成形态。在地面铺装、展览流线、公共空间格局的设计项目里这种算法非常实用因为它能直观呈现出“人流与空间的相互作用”。2.2 形态生成之后的性能反馈不是生成了就完事只靠生成算法得到的形态颜值可能很高但作为设计仍然不完整。形态学方法走到后半程必须接入性能反馈环节否则设计就会沦为纯粹的数学游戏。我们团队在项目里通常会把生成结果放进三个维度的仿真里做验证结构受力、物理环境、制造可行性。结构受力仿真用的是Karamba3D和Abaqus这一类的有限元工具检验的是“这个形态能不能扛得住荷载”。有一次我们用L-system生成了一组树状柱形态很漂亮结果一算有几根分支的应力集中非常严重完全没法直接用。后来方案调整了分支角度和截面变化系数才挤过结构安全线。物理环境仿真包括风环境模拟和日照辐射模拟。风环境我们用Butterfly在Grasshopper里调用OpenFOAM求解器看幕墙表面的风压分布、风速场是否会产生不利的涡流日照辐射则用Ladybug工具组把每个面板的累计辐射量计算出来为后面的参数映射提供数据基础。制造可行性校验往往被很多团队忽略但它恰恰是项目能不能落地的生死线。3D打印有打印角度和悬垂角度的限制CNC加工要控制刀具半径甚至运输途中构件不能超过某一尺寸。我们会把这些工程约束转化为数学条件放进优化的目标函数里生成出来的结果直接就是“能生产”的版本。2.3 团队默认的技术栈与工作管线聊完思路说说我们默认的工具组合。很多人以为做形态学一定要学很多高深软件实际上工具相对固定关键是逻辑打通。整个工作管线大概是这样的Rhino Grasshopper作为主战场和参数化建模环境大部分形态在生成阶段都在这里完成。Python / C#用来写Grasshopper里表达不了的自定义生成逻辑比如复杂的反应-扩散求解器、自定义的L-system重写规则、多智能体系统的邻居判断。Kangaroo处理力学找形。悬垂面、张拉膜结构、自由曲面壳体的初始形状用它做物理模拟非常合适。Karamba3D / Ameba做结构性能验证和拓扑优化。Ameba在拓扑优化上表现很好收敛速度也快。Ladybug / Butterfly环境性能模拟。日照分析用Ladybug足够风环境模拟需要接OpenFOAM的后端。Octopus / Galapagos做多目标遗传优化。当形态的性能指标不只是单一目标的时候用Octopus比Galapagos要靠谱得多。这套流程不是一开始就固定的。早期团队也走过弯路比如拿到一个新想法就直接跳到Rhino里建模型结果一旦算法调整就要全盘重来。后来才总结出标准节奏先明确规则再写生成逻辑再做性能反馈最后才考虑视觉深化。顺序颠倒返工是必然的。3. 一次完整实操给建筑立面生成“通风自适应表皮”3.1 项目缘起与形态学目标这个项目是我们两年前做的一个实验性设计甲方拿了一块办公楼外墙的改造方案来找我们核心诉求是“在不增加能耗的前提下优化室内自然通风效果”。传统做法无非是开窗位置调整、通风井设计、机械送风系统但我们团队一合计这其实是个非常典型的形态学命题能不能让立面表皮根据不同的风场和日照条件自主生成一套孔隙率分布方案于是我们把目标拆解成了三个可计算的小目标。第一在主导风迎风面区域表皮孔隙率要适当加大让更多风能进入室内换气第二在太阳辐射强烈的区域孔隙率要适当调低但同时通过纹理凹凸形成自遮阳降低室内的直接辐射第三立面整体要保持视觉连续性不能出现某一块区域突然密集、另一块区域突然稀疏的割裂感。这三个目标天然形成了一个多目标优化的问题非常适合形态学方法发挥用途。3.2 反应-扩散生成与参数调优的完整实现第一步先把立面离散成网格。整个外墙面积大约是240平方米我们将其划分成400乘200的等距网格数组每个网格单元将来会对应一块铝板上的孔洞密度。第二步植入浓度场。在迎风面区域和太阳辐射高的区域布设“种子点”然后运行Gray-Scott模型也就是反应-扩散方程的一种经典形式。这组方程里有两个关键的动力学参数进料率f和反应速率k它们决定了最终生成的是斑点状、迷宫状还是网状图案。经过反复试算我们采用D_A1.0、D_B0.5f在0.055附近k在0.062附近这套参数产生的迷宫状斑图最适合用来生成连续渐变的立面纹理。方程运行了约2000个迭代步之后浓度场趋于稳定。再把浓度值映射到网格孔隙率上浓度高地段的网格对应孔隙率0.7浓度低的地方对应0.2。这一步得到的是一张孔隙渐变图但它只满足“图案生成”还没有同时满足通风和遮阳的性能目标。第三步进入多目标优化。我们用Octopus对这个系统做遗传算法寻优种群数50迭代120代目标函数由三部分组成风速穿透增益占0.5权重立面日辐射降低量占0.3权重视觉均匀度指标占0.2权重。实际运行中我们还发现一个关键细节初始种子的位置不能完全随机撒而是要根据当地的夏季主导风向数据来布点否则优化结果会出现奇怪的孤立高孔隙区。这个经验是测试了几十个方案之后才总结出来的。3.3 结构验算和制造约束的介入算法优化收敛之后我们得到了两套可行方案。这时候工程背景的同事开始介入把结果导入Karamba3D做龙骨结构校核。这一步果然出问题了孔隙率偏大的区域面板背后受力的龙骨截面被压得很窄部分节点应力比已经接近安全上限。解决方式是在结构模型里对龙骨宽度做了一次拓扑优化重分配。不需要用太复杂的算法就是设定目标体积减少30%以应变能最小化为目标重新计算出关键受力位置的材料分布。最后在孔隙大的区域背后增加了两条斜向加劲肋既不影响立面纹理效果结构安全系数也回到了正常范围。制造约束也在这个阶段同步加入。因为表皮材料是3D打印的铝板节点加CNC铝板面板打印角度超过45度的悬挑部位需要加支撑成本会显著上升。所以我们在优化目标里加了一个“制造代价”惩罚项任何超过45度悬挑角的网格都会被扣分。事实证明最后选择的方案在生产环节几乎没有额外的支撑材料消耗加工成本比未加约束前的初稿低了将近两成。3.4 这项实验最终带来了什么项目最终交付时做了两版成果一版是1比5的实物模型3D打印出来看实际效果另一版是完整的数字反馈报告包括不同风向条件下的通风模拟数据和立面装配分解图。甲方最满意的地方其实不是形态有多特别而是整个立面系统没有额外的活动机械部件就实现了通风调节的功能。从项目复盘的角度看这次实践最成功的地方在于它完整串联了“生成—仿真—优化—制造”全链条。反应-扩散方程负责生成图案遗传算法负责把图案推向性能最优结构仿真负责把形态拽回工程安全线制造约束则保证了它在现实中可以生产出来。这就是形态学方法在团队里的标准曼陀罗。4. 团队踩坑实录与排查方法4.1 仿生“贴皮”与真正的生成设计区别在哪里这是我们项目评审时经常要回答的一个问题。很多学生拿来一个张牙舞爪的有机形态作品兴奋地说自己做了仿生设计但一问生成逻辑无非就是在Rhino里用几个圆滑的曲线工具扭出来的。形态上确实像生物但背后没有任何生成规则的支撑只能算是“生物风格的造型设计”。团队内部有一条不成文的规定设计评审时任何形态特征如果不能向前溯源到某条规则或某个输入数据就会被打回重做。这条规定看着苛刻实则是为了防止设计沦为空中楼阁。一个有生命力的生成式设计每个孔隙、每根分支、每条纹理都应该和场地数据、约束条件、算法参数存在可解释的对应关系。如果你也想自查自己的作品是“贴皮”还是真生成设计可以问自己三个问题这个形态的局部变化是由什么数据驱动的如果换一组环境数据形态会不会发生相应的变化这个形态在少了两条辅助曲线之后还能不能成立4.2 遗传优化出现过拟合怎么判断和解决我们在很多项目里都会用遗传算法做参数寻优但它有一个很隐蔽的坑过拟合。有一段时间我们做的一个地景装置项目优化结果只适用于我们采集的那一组特定气象数据换一个朝向、换一组风向数据整个方案就崩了。排查下来问题出在目标函数设置得太苛刻。优化算法会把所有“便宜”都占尽极好地适配训练数据却没有留出任何容错空间。后来我们在目标函数里加入了“参数敏感性惩罚项”对关键参数施加小幅度扰动如果性能变化太剧烈说明方案过于脆弱系统会自动在适应度评价中扣分。这里也给同行一个实操建议用遗传算法做形态优化时千万不要只看最后的收敛曲线好不好看。损失值降得再低也可能是一匹只熟悉一条赛道的马。一定要做敏感性分析跑几组边界工况看看方案在变化的环境里够不够稳。4.3 形态过复杂导致造价失控怎么提前避免形态学设计的通病是“数字模型很好看落到工厂发现造不起”。一次我们在做公共艺术作品时算法生成的表皮上有几百种不同曲率的双曲面面板每一块都需要单独开模具加工费用直接让甲方脸上的笑容消失了。后来团队专门立了一条规矩生成阶段就写入制造约束而不是等生成完再想办法挽救。具体执行起来就是在优化算法的约束定义里加上三条硬条件——所有面板的最小曲率半径必须大于5厘米面板尺寸不超过600毫米乘600毫米构件种类数量不超过20种。这三条约束一加算法的搜索空间被大幅削减形态的丰富性确实受到一些限制但换来的是生产过程中几乎不需要特殊的非标定制。做形态学不是越复杂越好能控制住复杂度的团队才叫成熟。4.4 常见问题速查表问题现象可能原因排查方法解决思路生成结果局部突变整体不连续反应扩散参数过激或种子分布不当降低f和k的差异加密种子点调低反应速率增加种子的均匀性形态优化结果只能适配单一工况目标函数过拟合训练数据进行敏感性分析观察参数扰动后评价变化在目标函数中加入稳定性惩罚项结构验算时出现大量应力集中生成算法未考虑受力路径用有限元分析定位高应力区叠加拓扑优化重新分配材料加工时悬垂角过大成本暴增制造约束未进入优化目标检查模型的悬垂角分布在优化目标中加入制造代价惩罚项跨专业沟通频繁返工团队术语体系不统一评审时要求意见转译为规则描述建立统一的需求表达模板仿真结果与实体测试差距大仿真边界条件设置过于理想对比实测数据修正边界缩小载荷取值增加安全系数5. 给想入局做形态学方向的人一点参考5.1 想加入这类团队建议先练好这三样第一编程思维是底线。不需要你会写大型软件但Python语言基础一定得扎实尤其要能理解循环、递归、数组这些基本概念因为L-system本质上就是递归反应-扩散方程的数值求解就是循环迭代。很多人被挡在门外的不是设计能力而是看到代码就发怵。第二要建立生物学直觉。形态学方法管着最大的一笔灵感财富就是生物千万年演化总结出来的形态策略。但你不需要成为生物学专家关键是要在“形态”和“功能”之间建立起因果直觉。比如看到蜂巢你要想到它不是装饰纹理而是用最小材料围合最大空间的优化策略看到骨骼内部的海绵状结构你要想到它是在重量和强度之间寻找平衡的结构方案。这个思维转换会直接影响你后续的算法选择。第三工程判断力不能缺。会做炫酷形态的人很多知道什么能造出来、什么造价会爆掉的人很少。建议新手多跑工厂、多看生产流程哪怕只是站在CNC机床旁边看半小时你对“最小转角”“悬垂限制”的理解都会比在软件里摸索半年更有用。5.2 未来几年我觉得值得深耕的方向其中一个方向是生物材料与增材制造的结合。菌丝体、竹编、再生混凝土骨料这类材料与3D打印技术结合后具备“边生长边成型”的特质这本身就是形态学方法最适合发挥的领域。我们团队目前在进行菌丝体隔音墙板的实验菌丝在不同密度约束下会形成差异化的孔隙结构声音吸收系数表现出梯度变化形态直接决定功能很有意思。另一个方向是气候适应型建筑的响应式表皮。不依赖机械设备而是依赖形态本身的自适应变化来控制光、热、风等物理环境。像我们前面做的通风自适应表皮项目就是这一方向的雏形。随着气候数据采集技术和仿真精度的提升这类被动式设计会越来越有市场。第三个值得关注的方向是城市尺度的形态学模拟。把城市看作一个生长中的有机体用地块单元替代细胞用交通流替代物质交换用多智能体和元胞自动机模拟城市蔓延。这不是什么科幻概念很多城市规划研究机构已经在用这套工具做城市增长模拟和韧性评估了。形态学方法的边界远不止建筑和产品。最后说句实在话。我在这行做了这些年最大的体会是设计形态学和第三自然这两个词听着高深落到日常其实都是苦功夫。一边要啃算法原理一边要跑工厂盯加工一边还要陪甲方解释“为什么这个立面长这样”。但当你在仿真软件里看到那组生成出来的形态真的因为数据不同而发生了相应的演化当你站在实体模型前看到纹理、孔隙、光影全部按照预想的方式出现时那种“规则长出了真实”的成就感确实很难在传统设计流程里体验到。如果你也对这条路线动心了不用急着买一堆课程或者啃大部头的算法书。先挑一个身边的项目——哪怕只是一个咖啡桌的桌面纹理——试着用算法生成而非手动绘制来做一遍走通一次“规则导致形态”的完整流程。你会发现从那一刻起你看待设计和自然的眼光就再也回不去了。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进