• 技术文章 >后端开发 >Python教程

    如何用 grasshopper 模拟建筑的人流?

    2016-06-06 16:22:37原创6298
    在北京的设计周看到的,想请教下应该如何实现

    回复内容:

    先说题主的问题看起来不太像是人流模拟
    比较像是空间句法(space syntax)里的可视性(visuality)分析
    =====
    这阵子刚好有修一门课在教类似的东西
    不管是在processing 或是 GH里的python/C#都可以实现
    基本概念是,要活用agent-based system
    以一个大型街头活动来说
    可以区分成

    人/ 食物摊贩/ 饮料摊贩/ 厕所/ 表演舞台

    其中人可以区分成
    a.有明确目标 (我就是要去看表演,我就是要去上厕所)
    b.跟随意闲晃 (厕所上一上,就跑去看表演,再跑去吃食物)

    以Java语言来说
    每一个点,代表一个人,而在创造出这个点的时候
    a群组的人会被灌输随机的一个需求(食物摊贩/ 饮料摊贩/ 厕所/ 表演舞台)
    b群组则是随着时间演进而会改变需求

    同时也要设定在属於人的这个class里面,经过一段时间若需求没有被满足,则会死掉(或者说离场)

    附上一张大概模拟的样子

    你看到那些最小的点就是人群模拟,稍微大一点的是厕所与食物饮料摊贩,最大的是表演舞台
    左上角的几种分别是
    D-Map - 人群死亡的地方会以透明淡灰色标注,越多人死的地方,会越来越白,表示那个地方的流动性最差
    Density - 则是显示了哪个区域最为拥挤
    Counter - 则是显示各摊贩被光顾了几次
    Path - 则是把所有人群走过的路线以点线相连
    Panic - 则是模拟疏散时人群散光的状况,你可以看到人是怎样的散去,大概花了多少时间



    真要解释完整需要花不少篇幅...
    如果有更多人关注等有空再来好好打一篇 @萌萌哒少爷
    有大神提示用GH中quelea 的插件,于是本人进行了试验并且记录了一下试验过程,这是一个坑,还未完结,先占再填。

    本文只是一个砖,各位大神,求请教
    ——————————分割线————————————————
    首先百度quelea 是这样的
    quelea 红嘴奎利亚 是什么生物

    按照GH插件的尿性,他们和它的功能之间必有共性,于是,从维基百科发现这个

    软件介绍

    Agent-Based Design for Grasshopper
    + A new paradigm for 3D modeling utilizing agents.
    + Assign forces and behaviors to systems of agents to create interactions.
    + Utilize any data to drive the system.
    + Easily debug your system by displaying individual force vectors.
    + High performance, parallel algorithms, spatial data-structures.
    + Write your own custom forces, no coding required.
    + Open source framework for others to build custom behaviors.
    + Boid forces: Cohese, Separate, Align, & View.
    + Contain Agents within Brep, Box, Surface, and Polysurface environments.
    + Forces: Path Follow, Attract, Contain, Surface Flow, Seek, Arrive, Avoid Obstacle, Avoid Unaligned Collision, Sense Image, Sense Point, & more to come.
    + Behaviors: Bounce Contain, Kill Contain, Initial Velocity, Eat, Set Velocity, & more to come.


    Future work:

    + Behaviors to drive simulations of people and vehicles.

    + Temporal inputs can change the actions of the system over time.

    从GH官网上摘下来的,反正没怎么看懂,但是最后两句还蛮有意思的,第一条是不是指楼主这个问题。
    下载——省略
    红嘴奎利亚界面

    子目录
    agent rules \ emitters \ environment \ particle rules \ quelea \ utility \ veh...
    然后我下到了软件说明中的案例文件
    我们简化案例文件,删除多余的设置之后就变成下图
    从这个文件中,很容易看出这个文件其实分成几个部分。
    猜测 中间部分应该是计算的核心,不断的将计算组件减少,直到如下图的时候还可以计算。
    据此可以猜测,这个叫做system的运算器应该是核心,所有的设定条件输入到这个system里面,再结合之前的软件界面上的几个类别标题,基本可以了解出一些信息。

    system为运算需求,必须要满足quelea settings\emitters\environment\timmer\quelea 这五个元素,然后我们从菜单栏中找出这五个元素所在的组分析感受一下。
    quelea,
    在这一组中,我们发现了案例文件中使用的4个运算器,如下图

    setting:
    与particle quelea settings 相同小组的还有两个 consturct agent 和 construct vehicle,于是我吧它们拉出来遛一遛,马上发现了同名的部分,基本可以理解为关于红嘴鸟的个个属性设置。


    这个时我瞎设置的玩的,请忽略,但是可以通过这种方法了解各个属性的含义,此处自行了解。

    system 和 engine

    这两个应该是恒连接的吧,目前还没有看到有其他叫做system的接口,为什么不直接整合成一个呢

    deconstruct 与前面三个呼应

    少废话,拉出来遛一遛

    前三个应该是与上文对应的,生产出来的粒子(鸟儿 --这么叫好像怪怪的,突然想起来觉得叫做粒子好像专业些)的各种属性,应该可以与GH自带的display结合出可视化的图,具体的没有研究,结合楼主问题中的案例,应该是用这些component。

    后三个看上去应该也是差不多的,与前面的区别可能主要是在于前面提取属性,后面直接提取元素。这个是下图这样拉出来遛一遛之后觉得的。


    emitter

    翻译过来叫做发射器,也就是说应该是原始发射物的形状(如果我来汉化我觉得应该起名叫做红嘴鸟鸟巢。)

    随便实验了其中一个长方体的鸟巢,鸟儿们应该是从鸟巢表面发射出来的,而且看起来应该是均匀发射(未求证)。

    environment

    与上发射器同理,感觉很好理解,就是鸟儿们飞行的边界。
    其中值得注意的是 ,后面两个,这个给楼主这个案例的模拟提供了可能性。


    如此之后,还剩三组运算器

    agent rules 字面上来讲应该是对粒子的设置吧

    案例文件中并未用到这几个运算器,拉其中出来遛,找了半天才找到接口。

    接上去之后所有的鸟都和图标一样往一起飞了,嗯 很神奇。

    然后又拉出一个来试试

    所有粒子全部网target point飞行。

    然后有一个不太一样的 eat behavior
    嗯这个很奇怪,拉出来也没看懂。
    就剩这一只了,貌似是指其他的全部被吃掉了,目前也没有试出有什么规律,等待大神解毒。

    utility和veh...


    貌似这两个要一起看 deconstruct quelea network

    第一个是要把鸟群变成一个一个的鸟

    quelea network ,没看懂 ,好像让每只鸟变成一个群了,求解读。

    除了

    后三个运算器
    只看出好像图片让粒子属性受到影响,并没有看懂发生了什么。

    未完待续
    下一步将结合楼主的问题进行实验。

    ————————————分割线————————————
    未解决的问题
    1、utility 和veh组运算器
    2、连接方式(楼主的图应该是需要像最高票那样设置然后根据粒子的密度来出的图
    3、这个运算器的套路

    ——————————分割线——————————————
    不知耻的拿出自己的微信公众号,专门用于记录自己的学习轨迹。

    这几天好像突然关注的人变多了,楼主近来比较忙,填坑时间大致会在七月初,同时微信素材也在积累,争取能够周期化
    各位赶紧丢璞玉 有个grasshopper插件叫quelea,不谢
    processing什么的去死吧 GH里面有个插件叫做Kangaroo
    可以做这方面的分析,但不知道具体效果怎么样

    答辩完试试看再来回答 私以为这才是人流模拟吧
    说的那么复杂,不就indexing吗? 求详细回答……也好奇这个怎么做的…… 记得好像有个anylogic professional可以做人流模拟...之前试图用它来做车站人流.. 空间句法吧 可以用processing实现
    用processing 模拟sworm 人流

    如果非要导入gh的话 下个gwal插件(好像叫这个。。)
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:
    上一篇:如何评价 Python 3 打破向后兼容(Backward Compatibility)的决定? 下一篇:主流的垃圾回收机制都有哪些?
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 实例详解Python面向对象的四大特征• 简单学习Python字符和列表(实例详解)• 图文详解怎么用Python绘制动态可视化图表• 介绍六个超好用的Python内置函数• 一起聊聊Python的编码样式
    1/1

    PHP中文网