2019年深秋,我接到一个南方某二线城市文化中心项目的环境分析委托。甲方是当地城投,要求非常明确:用参数化工具对建筑方案的日照和风环境做量化评估,并给出优化建议。当时我第一反应是——用Ladybug,这是Rhino+Grasshopper生态里做环境分析最成熟的工具链。但说实话,之前我更多是用它做概念阶段的体量推敲,真到施工图级别的分析交付,心里还是有点虚。这个项目前后折腾了六周,踩了不下十个坑,今天就把整个复盘过程拆开来讲,希望能帮你少走弯路。

一、需求拆解:甲方到底要什么?
甲方给的需求文档写得很“官方”,翻译成人话就是三件事:第一,大寒日8:00-16:00,建筑周边活动场地日照时长不低于2小时;第二,夏季主导风向下的室外人行区风速不超过5m/s,冬季风速不超过3m/s;第三,所有分析结果要出彩色云图和量化数据表,能直接放进报规文件。
这里有个关键判断:这不是一个“炫技”项目,而是一个“合规”项目。很多设计师拿到Ladybug就喜欢跑各种炫酷的辐射分析、UTCI热舒适度,但甲方要的是能通过审批的硬指标。所以我当时定下的技术路线是:日照用Ladybug的日照时长分析(Sunlight Hours Analysis),风环境用Butterfly(基于OpenFOAM)做CFD模拟,而不是用Ladybug自带的简单风环境分析。为什么?因为Ladybug自带的风环境模块本质上是基于EnergyPlus的CFD简化算法,精度不够,而Butterfly虽然重,但能给出真正可交付的流场数据。
经验之谈:如果甲方没有明确要求CFD精度,优先用Ladybug自带的风环境分析快速迭代;如果涉及报规或绿建认证,直接上Butterfly,别犹豫。
二、技术选型:为什么是Ladybug+Butterfly?
Ladybug的底层逻辑其实很清晰:它不直接做模拟,而是调用外部引擎。日照分析调用的是Radiance和Daysim,风环境调用的是OpenFOAM,热环境调用的是EnergyPlus。Ladybug本身是个“翻译官”,把Grasshopper的数据流转成这些引擎能读的格式,再把结果可视化回Rhino。
这个架构决定了它的优势:引擎是行业验证过的,精度有保障;但劣势也很明显:数据流转环节多,每个环节都可能出错。我后面踩的坑,八成都是数据流转的问题,而不是算法本身的问题。
具体版本选择上,我用了Ladybug 0.0.68 + Butterfly 0.0.05,Rhino 6 + Grasshopper 1.0。为什么不追新?因为当时Ladybug 1.0(现在叫Ladybug Tools)还在beta阶段,API不稳定,而0.0.68是经过大量项目验证的稳定版。做生产项目,稳定比新功能重要一万倍。
三、日照分析:从模型到云图的完整链路
日照分析的第一步不是打开Ladybug,而是清理Rhino模型。这是我最想强调的一点:Ladybug对模型质量极其敏感。所有曲面必须是NURBS曲面(非网格),法线方向必须统一,不能有自交面,不能有重复面。我当时的模型是从SketchUp导过来的,全是网格,结果第一轮分析直接报错。
解决方案分三步:第一,用Rhino的MeshToNurb命令把网格转成NURBS,但注意这个命令会生成大量碎面,需要手动合并;第二,用Dir命令检查法线方向,确保所有面朝外;第三,用SelDup删除重复面。这三步做完,模型才算“干净”。

接下来是分析参数设置。这里有个关键参数:分析网格密度。网格越密,结果越精细,但计算时间指数级增长。我的经验值是:室外场地分析用0.5m×0.5m网格,建筑立面分析用0.2m×0.2m网格。再密就是浪费,再疏会漏掉局部阴影。
日照时长分析的核心逻辑是:对每个分析网格点,计算它在指定时间段内被太阳直射的累计时长。Ladybug内部会调用Radiance的gencumulativesky生成太阳辐射累积天空模型,然后逐时计算每个点的遮挡状态。这里有个隐藏坑:如果模型里有玻璃幕墙,必须把玻璃的透射率设为0,否则Radiance会认为阳光能穿透玻璃,导致日照时长虚高。我当时就是忘了设这个参数,结果分析出来的日照时长比实际多了1.5小时,差点酿成大错。
最终出图时,我用了Ladybug的Recolor Mesh组件,把日照时长数据映射到网格颜色上,再配合Legend组件生成图例。这里有个小技巧:图例的范围要手动设置,不要用自动范围。因为自动范围会被极端值拉偏,导致大部分区域颜色趋同,看不出差异。
四、风环境分析:Butterfly的深水区
如果说Ladybug日照分析是“浅水区”,那Butterfly风环境分析就是“深水区”。Butterfly的本质是把OpenFOAM的CFD求解器封装进Grasshopper,但OpenFOAM本身是个极其复杂的工具,参数多如牛毛,稍有差池就会发散或报错。
整个流程分四步:几何准备→网格划分→求解设置→结果可视化。每一步都有坑。
几何准备阶段,最大的坑是风洞尺寸。Butterfly要求把建筑模型放进一个“风洞”里,风洞的入口、出口、顶部、两侧都有尺寸要求。我的经验公式是:入口距离建筑迎风面≥5倍建筑高度,出口距离建筑背风面≥10倍建筑高度,顶部距离建筑最高点≥5倍建筑高度,两侧各≥5倍建筑宽度。风洞太小,流场会受边界影响;风洞太大,网格数量爆炸,计算时间不可接受。
网格划分阶段,Butterfly用的是SnappyHexMesh,这是OpenFOAM里最难用的网格工具之一。核心参数是背景网格尺寸和加密等级。我的设置是:背景网格2m,建筑表面加密到0.5m,地面加密到1m。这里有个坑:加密等级每增加一级,网格数量翻倍。我当时贪心,把建筑表面加密到0.25m,结果网格数量直接飙到800万,跑了一整夜还没收敛。
求解设置阶段,关键是湍流模型的选择。Butterfly默认用的是k-ε模型,适合室外大空间风环境模拟。但如果你要分析建筑表面的风压,建议用k-ω SST模型,它对近壁面流动的捕捉更准确。我当时两个都跑了,对比发现k-ω SST在建筑角部的风速预测上比k-ε低了约15%,更接近风洞实验数据。
结果可视化阶段,Butterfly提供了Probe组件,可以提取指定位置的风速、风压数据。但这里有个坑:Probe的位置必须落在网格单元内部,不能落在网格边界上,否则会报错。我当时的做法是先用Construct Point生成一系列点,再用Pull Point把它们吸附到最近的网格中心,这样就不会出错。
避坑指南:Butterfly计算完成后,一定要用ParaView打开原始结果文件检查流场是否合理。如果流场出现明显的“棋盘格”振荡,说明网格质量有问题,需要重新划分。
五、踩坑实录:那些让我熬夜的瞬间
坑一:日照分析结果与规范不符。第一轮分析显示所有场地都满足2小时日照,但甲方请的第三方复核说北侧场地只有1.2小时。排查发现,我的模型漏掉了周边一栋已建成的住宅楼,导致遮挡计算不完整。教训:环境分析必须包含周边既有建筑,哪怕它们不在你的设计范围内。
坑二:Butterfly计算不收敛。连续跑了三次,每次都在第500步左右发散。排查发现是风洞入口风速剖面设置有问题。我用的是均匀风速,但实际大气边界层风速是随高度变化的。改用幂律剖面后,计算稳定收敛。教训:室外风环境模拟必须用大气边界层风速剖面,不能用均匀风速。
坑三:结果数据量太大,Grasshopper卡死。800万网格的结果文件有几十GB,Grasshopper根本读不动。解决方案是:在Butterfly里先做数据降采样,只提取关键区域的数据,再导入Grasshopper可视化。具体做法是用Butterfly的Result Reader组件,设置Stride参数为10,即每10个网格点取一个,数据量直接降到1/1000。
六、交付与复盘:什么样的分析结果才算合格?
最终交付物包括:日照时长云图(大寒日)、夏季/冬季风速云图、风速矢量图、关键点位数据表。甲方反馈说,这是他们收到的第一份“能看懂”的环境分析报告。为什么能看懂?因为我在云图上叠加了建筑轮廓线和场地标注,让非专业人士也能快速定位问题区域。
复盘整个项目,我的核心体会是:Ladybug+Butterfly是一套强大的工具,但它的强大建立在“正确使用”的基础上。如果你只是拖几个组件随便跑跑,结果可能还不如经验判断靠谱。但如果你理解每个参数背后的物理意义,它就能给你提供真正有价值的决策依据。

最后给想深入这个方向的朋友一个学习路径建议:先花一周时间把Ladybug的日照分析跑通,理解Radiance的底层逻辑;再花两周时间啃Butterfly,重点搞懂OpenFOAM的网格划分和湍流模型;最后用三个实际项目练手,每个项目都做完整流程。这个过程大概需要两个月,但绝对值得。
关于火星人教育
如果你对Rhino参数化环境分析、AIGC视觉设计等方向感兴趣,想系统提升实战能力,可以了解一下火星人教育。火星人教育创办24年来,一直专注数字艺术与AIGC实战职业技能培训,开设课程涵盖AI漫剧创作、AIGC视觉设计、UE5游戏特效、室内全屋定制、MAYA三维动画、C4D动态设计、工业设计、NUKE影视后期、摄影摄像实训等方向。北京、深圳双校区开设线下面授班,面向美术生、在校大学生及意向转行的职场人群,以项目化实训教学,夯实专业技能,助力就业与职业提升。咨询电话:010-65918670。








评论(0)