大家好,今天给大家介绍一个基于Python的BIM开发案例,就是如何用泰森多边形把建筑表皮变成动态拼图。这个案例是我们的BIMBase 23期内容,其中用到了Pyp、Numpy和Scipy这些工具。泰森多边形,也叫冯诺伊图,本来是计算几何里用来跑测试的工具,现在成了建筑师创新的灵感来源。它把场地分成很多块多边形,每块多边形到中心点的距离最短。这种自然的最近邻法则让建筑表皮不再是死板的正交网格,而是变得灵动有趣。比如北京的水立方和杭州运河大剧院都能看到这种效果。 在这个案例里,泰森多边形的创建遵循了四条铁律:每个多边形只含一个离散点;内部点到最近离散点的距离最短;边上的点到两边离散点距离相等;边数等于相邻三角形的数量。借助Pyp3d和Scipy这两个工具,用户只需要输入点集和间距就能快速生成高质量多边形网格。 Numpy的随机函数np.random.rand()在这个过程中扮演了重要角色。把原始点集喂给随机数后,泰森多边形就变得不再整齐划一,而是呈现出复杂多样的肌理。设计师不用再费劲手绘扭曲的形状了,软件就能自动生成有随机效果的表皮。 Scipy.Spatial里的Voronoi()函数是生成完美边界的关键。调用这个函数后就能直接得到封闭多边形,速度快、代码简洁还能保证逻辑闭环。用户只需确认点集就能得到干净利落的结果。 Voronoi()返回的是Scipy的专属类型,不能直接给Pyp3d使用。自定义函数get_voronoi_geo()能够把它解析出来:points存储编号;regions记录闭合需求;vertices给出坐标顺序。通过遍历这些表、剔除无效区域并兑换坐标后,平面点就能拉升成三维体了。 最后要注意原始点的数量对效果影响很大。如果点太少就会出现空洞不完美;适当增加点数并裁剪超出范围的顶点就可以得到既美观又贴合建筑逻辑的动态表皮了。 以上就是本期BIMBase 23期的全部内容了!