制图教室新年第一弹:酷炫动态人流疏散图
当当当,各位小伙伴新年好呀。
经过春节期间的修整,在新的一年里,制图教室也将以全新的面貌给小伙伴们带来更多优秀的图纸绘制教程。
那么作为狗年来制图教室的第一期课程,本次教程不同于以往专注于效果图的绘制,而将运用grasshopper结合quelea插件,给大家带来一次与众不同的动态数据演示图的绘制过程。
废话不多说,让我们一起先来看看整个图纸的效果吧~
STEP 1
前期建模
本次图纸是关于一栋香港地区传统住宅建筑人流疏散的动态演示,所以首先我们需要在Rhino中完成基本建筑模型的搭建。但是对于人流疏散的模拟而言,我们并不需要建立这样细致的实体模型。
相反,我们需要的是如下图所示的这种片模,仅仅用一个单面表示楼板和楼梯即可。
对于墙体所在位置在面上留出空隙即可。疏散门处打通。
注意:对于不可用于疏散的门,比如电梯(1)或者设备间(2)的门需要当做墙体处理。
当完成片模之后,我们还需要完成其他疏散有关元素的绘制。
一层出口位置绘制(用点标注)
疏散房间门位置(用点标注)
可能疏散路径(路径需要使用TS打断)
待疏散人群(用点表示)
STEP 2
求最短疏散路径
当完成Rhino中的建模工作后,我们就可以转战grasshopper,筛选出最短疏散路径了,首先将我们绘制的模型按图层拖入GH。
因为我们要判断人员的最短疏散路径,第一步运用 closed point 找到每个人与之最近门的位置,进行连线(因为之前在Rhino中绘制疏散路径的时候并没有考虑到人到门这一段路径的绘制)
将这一段路径和我们在Rhino中绘制的路径合并,将每个人与入口相连,运用shortest walk 求出所有可能路径(没有shortest walk运算器的童鞋可以去网站免费下载,传送门 http://www.food4rhino.com/app/shortest-walk)
根据长度进行排序,选择最短的路径,这就是人流最终各自的疏散路径了。
STEP 3
quelea模拟
进行人流模拟我们主要使用的插件叫做quelea,关于quelea的详细介绍,小伙伴们可以参考知乎链接:https://www.zhihu.com/question/37199749?sort=created,考虑到文章长度,本次教程就不会对所有quelea具体运算器进行详细的讲解了。
quelea最为核心的运算器是system和engine,他们有点类似于kangaroo中的kangaroo physics的地位。Engine的S端链接system,R端链接一个布尔值用于控制开关,因为这两个运算器也需要进行反复迭代运算,因此往往需要连接timer运算器
qs端链接quelea setting,通常情况下链接quelea agent,而agent链接quelea particle.
对于particle和agent我们可以进行详细的参数设置,对于本次案例人流模拟推荐参数如下(quelea很多参数表示的是在timer单位时间中发生的量,比如speed表示就是20ms人走的距离,因此这些值的设置除了与实际模型有关也和timer的值密切相关)
E端为发生器,我们使用点发生器,链接上步中导入的people。
对于发生器,也有很多参数可以设置,比如C端控制粒子是一次性生成还是持续生成,R端控制生成速率,N端控制数量,mv和Mv控制粒子最小和最大初速度。
Environment类似于边界,会限定粒子的运动范围,我们使用polysurface environment 连接上一步导入的建筑。
之后我们需要将system生成的Q端链接deconstruct particle,让产生的quelea物体可以以点的形式在Rhino空间中显示。
当然到此为止,如果我们直接点击Engine的布尔输入端,结果肯定不是我们最终想要的,因为我们还没有进行quelea中最为重要的一部的操作。agent rules的设置。agent rules指的就是对于quelea物体施加的一系列规则,可以类比于kangaroo中的力。考虑到人流疏散的实际情况,我们考虑施加如下规则。
1:限定在疏散路径附近 Follow Path Force
人们在疏散的时候的活动会限定在会疏散路径附近,使用Follow Path Force模拟人的这种活动
2:按路径向外移动 Seek force
人在疏散的时候会按照疏散路线不断向外移动,用seek force模拟人的这种活动。根据每个点在疏散路径上的长度,加上一定的值(比如一米),用来确定下一个寻找点
3:人直接避免碰撞而产生的互相排斥力
人是有一定体积的物体,所以肯定会以人的最小圆柱体直径进行互相排斥,在这里运用Seperate force模拟这种情况,
半径设为R值的0.2倍,0.5m大小,约为成年人的肩宽。
4:避开障碍物的力 contain force
人在疏散的时候会自动的避开墙体等障碍物,通过contain force链接environment来模拟这种效果,en链接我们之前输入的polysurface environment.R端仍然是之前agent半径的倍增值
当这四个规则施加之后,我们基本就可以获得一个较为真实的疏散模拟效果了
GIF演示
但是当所有点到达终点(疏散点)后,因为我们编写的系统没有后续操作,这些迭代产生表示people的点会一直在出口处抖动,对我们的观察产生较大干扰,因此我们需要对我们的程序进行一定程度的优化。
STEP 3
quelea优化
为了避免点在终点处的震荡,我们给这四个规则施加一个判定条件,当点与路径终点的距离大于0.2米(表示还未抵达终点)时,规则作用。而当距离小于0.2米时,规则终止。
同时我们给系统施加第五个规则:arrive force。它的判定条件与其余四个规则相反,距离小于0.2米才作用,故用非门链接。
对生成的点用一个着色的三角形表示,同时运用上一部的距离判定,到达出口时三角形消失。
改变building的显示色彩和透明度。
最后在改变一下Rhino的背景显示模式,当当当,我们的图纸就出来啦。
最后总结下本次教程的绘图重点:
1:前期Rhino中基本元素的绘制:建筑,路径,人,门,出口位置
2:运用shortest walk求出最短疏散路径
3:运用quelea进行人流的模拟
4: 后续对GH程序的优化