基于Unity 3D的被困人员逃生路径系统研究与设计

2022-08-26 09:54吴奔鑫韩成浩
关键词:脚本重构数据库

吴奔鑫,韩成浩

(吉林建筑大学 电气与计算机学院,长春 130018)

随着中国经济社会的全面高速发展以及整体综合国家实力的日益增强,中国城镇化工程的脚步也越来越快,高层大厦也越来越多,而随之带来的安全隐患也与日俱增。其中,火灾防空难度也不断加大[1-5],消防安全形式面临严峻挑战。在科技如此发达的现代社会,火灾安全问题一直是政府和群众密切关心的问题。早先的“人防”方式的消防管理模式已经不适用于现代市场经济高速发展的社会[6-8],因此应急管理部曾在全市大中型高层建筑的自动灭火综合管理大会上强调:要依托于大数据、物联网、云计算等最新科技,提高城市火灾防控技术管理水平。本文依托于Unity 3D强大的物理引擎,真实还原火灾情景,并对被困人员进行准确定位模拟,从而提升火灾救援的效率。也大大降低了因大量火灾烟雾导致摄像头失灵,导致消防救援人员不能及时发现并找到被困人员的问题。同时也为”智慧型“消防的建设提供了有效的指导和参考。

当突发事故发生时,对建筑物内人员的定位尤为重要,现有的消防系统多采用有线传输的方式,成本高且线路易老化,当火灾发生时,电源设备、监控设备等都会受到影响,给消防员救援带来了困难。目前,市场上的部分无线传输方式,如蓝牙模块,抗干扰能力较弱,通信覆盖范围较小,而无线WIFI,则需离线采样,且精度较不稳定,UWB模块则成本高昂,费用也高昂[9]。综合对比之下Zigbee有抗干扰能力强、传输速率快等优势。本文在基于Zigbee室内定位的基础上,将收集到的被困人员的位置信息存储至数据库,再通过Unity 3D读取数据库内的相关数据从而在上位机上呈现出被困人员的位置。方便消防人员进行救援[10]。

1 系统开发平台

1.1 Unity 3D开发平台

Unity 3D又叫Unity,是由Unity Technologies有限公司研发的集合三维视频游戏、建筑三维可视化、实时三维绘图等多种类型,并具备互动功能的平台。本文选取的是2019版本的Unity,C#编程开发软件选取的是Visual studio 2019,数据库软件选取的是MYSQL8.0版本,数据库可视化软件选取的是Navicate软件。这里尤其要注意软件的版本问题,因为不同版本的软件,后期制作使用上可能出现兼容性问题。

1.2 3D Max开发平台

3D Studio Max,其研发公司为日本的Discreet有限公司(后来被Autodesk有限公司并购),是基于PC操作系统的的三维动画图像渲染软件,前身为在DOS操作系统上的3D Studio系统应用软件,通常也被称为3D Max或者3DS MAX。3DS Max具有相当好的性能价格比,它所带来的超强功能已经大大超越了其本身相对低廉的售价,制造成本大大降低,同时其对于硬件系统的需求也很低,普通电脑也足以支撑学习需求。

2 被困人员路径重构系统设计

被困人员的路径重构过程涉及被困人员的定位信息、生命体征、所处地理环境等关键信息,其中,捕获被困人员的定位信息尤为重要,但由于建筑物内发生大火时,会断开供电,进而影响视频监测系统,无法及时精确捕捉到被困人员的位置信号,所以,对被困人员的位置信息进行采集和整合就显得尤为重要。本次设计在RSSI定位的基础上,利用Zigbee网络传输数据至数据库中,再用上位机Unity3D软件将数据读取出来,完成被困人员位置的展示。方便救援人员救援,提高救援效率和减少不必要的财产损失。被困人员路径重构系统设计框图如图1所示。

图1 被困人员路径重构系统设计框图

3 系统开发流程

3.1 建筑物模型的建立

数据收集也是被困人员路径重构的重要环节之一,尤其是对被困人员位置信息的收集工作,要在现场收集与实际建筑的图象或照片、地形和道路相应的长度、建筑的高度等有关的数据。随后绘制建筑的设计图,将其引入3DS Max中进行建模,将构建好的模型导入到Unity 3D中,以完成脚本开发、设计数据库等工作,从而达到人机交互的目的。

3.1.1 模型导入

在3DS Max内首先完成简单建筑物模型的搭建,然后单击文件选项卡,选择导出,为模型命名后选择.FBX格式,点击保存,最后,将模型拖拽到Unity 3D中的Assets中即可,如图2所示。

图2 3DS Max模型导入Unity 3D后的模型

3.2 Unity 3D与数据库的连接

3.2.1 Unity 3D与数据库的连接

第一步,要建立一个Unity 3D项目,可将其命名为MYSQL Unity Test,并在Assets下建立Plugins文档。并将全部4个dull文件(如图3所示)拖拽到此文件夹下,并新建C#脚本文档,在Nevicate中新建连接,连接名为MYSQL,并检测是否完成,打开连接后,新建数据库,数据库名称为Scores,字符数据集为utf8,重新开启数据库后,在Scores数据库中新建数据表studentscores,新建几个字段,id(主键)、x、y、z,并输入对应数据。

图3 Unity 3D与数据库连接的相关插件

3.2.2 Unity 3D与数据库连接成功画面

将编辑好的脚本挂到Unity 3D中的摄像机上,出现如图4所示结果则为连接成功。

图4 Unity 3D与数据库连接成功的界面展示

3.2.3 Unity 3D读取xml文件

在实际使用中,由于被困人员位置数据信息太过丰富,所以,为方便地保存和管理位置数据,本文将数据库中的人员位置数据信息保存为xml文件,如图5所示,将xml文件放在Unity 3D项目Assets里面,使用代码让Unity 3D读取xml文件中的数据内容。

图5 数据库内的数据导成xml文件

3.3 角色动作的设计

在Unity 3D中,目标人物所自发的行为是依靠脚本来实现的,而脚本的参与是通过编写相关代码实现的。在Unity 3D软件中,可以首先选择3D object中的Caspsule创作一个3D物体,物体名称可称呼为“峨嵋刺”,修改Inspectors的Trans⁃form属性,使人物可以移动到地面上正确的地方(也可以在scene里面通过按住左键点击拖动物体的x、y、z箭头来调整位置,以实现旋转相应的角度,达到控制视角的合适效果),创建的人物模型如图6所示。

图6 Unity 3D中创建的人物模型

4 消防路径重构系统的模拟分析

4.1 消防路径重构系统实现过程

本文在Unity 3D读取xml文件的代码作了一个改进,让其自动在相应读取的点上创建“空物体”。然后在工程中,建立两个脚本“Move”和“Waypoints”。打开脚本进行编辑,在“Move”脚本上编辑代码,本脚本关键使用“Look At”朝向目标,然后“Move Towards”再移动至目标点。脚本编译正确,再回到Unity 3D界面,“Waypoints”脚本赋给空物体,“Move”脚本赋给人物“峨嵋刺”。另外,脚本的执行顺序也要做一个规划(如图7所示):先让Unity 3D读取xml文件,进而创建“空物体”,再执行“Waypoints”脚本,寻找相应路径,最后执行“Move”脚本,让人移动至目标点,这样就可以实现Unity 3D自动读取xml文件中的数据,并且人物也会运动至相应的坐标点上了。

图7 脚本的执行顺序

4.2 模拟分析

通过Zigbee无线传感技术获取被困人员的坐标点,发送至数据库内,Unity 3D可以通过数据库获取坐标信息,并将信息通过代码等操作呈现出来,从而具体呈现被困人员的位置数据。如图8、图9中罗列的是被困人员分别位于不同位置时,Unity 3D捕获的情况。

图8 位置1

图9 位置2

4.3 最短路径优化算法的实现

4.3.1 影响路径分析的因子

本文利用建立的三维环境,对最优路径分析结果产生影响的因子形成相关的网络数据集。最后,完成对三维中最短路径的求取与可视化,在最优路径分析的整个流程中,不同的影响因子产生最优路径的结果也是不同的。影响结果分析的主要因素有:(1)高层建筑的基本参数特征,包括了楼层高度、空间布局以及结构设计等;(2)灾难状态以及所在位置、蔓延速度、针对周边事物产生的危害;(3)建筑物当中的人员情况,包括分布特征、数量以及年龄等因素。可以选择一些典型的因子当成路径权值参数,然后纳入内部疏散网络属性表里,使之实现对不同的情景,进行针对性的动态分析。

(1)建筑物内通道的长和宽

对受困人员产生影响的主要因素之一是疏散通道的长度。即通道越长,其疏散时间就越长。

(2)人流密度

人流密度指的是单位面积当中所分布着的人员数量情况,计算公式为:

式中,n代表的是待疏散人流量;f代表的是水平投影面积,单位m2;d代表的是垂直距离,单位m;w代表的是垂直厚度,单位m;b代表的是通道有效宽度,单位m。

(3)疏散速度

具体指的是撤离人员在撤离的时候单位时间所需要走过的路径长。一般人在应急撤离的情况下,如在p≥0.92时,步行速率可使用下列公式来表示:

其中,v0为学生群体正常行走的速度。

4.3.2 路径优选算法的实现

在本文当中使用的算法核心在于最优路线选择,基于Dijkstra算法能够求解到一个节点至另外节点之间的最短路径,其最明显的特征在于以开始点作为中心延伸到外层,一直到抵达终点为止。Dijkstra算法原理是指从一个点开始,采用贪心算法的策略,计算这个点到其余各点的最短路径。文章通过对Dijkstra算法做出相应的改进与优化,使其不仅能够计算出被困人员所在位置到疏散地的最短路径,还可以根据实际需要对障碍物进行动态添加与躲避,并输出统计分析结果。

第一步:输入已经构建完成的疏散网络G(E,V),起火点位置O,疏散路径W(从建筑物内部的房间到疏散地Ej的最优路径),建筑物内部房间的集合Qi=(i=0,1,2,…,n),疏散地的集合Ej(j=0,1,2,…,n),已疏散总人数F=∅,人流量FDJ=∅,各路径对应疏散耗费集合CIJ=∅,疏散总体耗费BC=∅。

第二步:求解出距离受灾点最近的房间Qk(K∈i),判定其中有无人员。若是有人则进入到第三步,若是无人则直接进入到第六步。

第三步:通过Dijkstra算法评估从QK到各个出口EJ耗费的最短路程CKJ,以计算结果T=min{CKJ|K∈i},得到BC=BC⋃T,同时估计房间内的人员数量Nk,得到F=F⋃Fk,FDj=F⋃FDj

第四步:求解出以灾点作为中心形成的圆形缓冲区,同时将其列为疏散障碍添加至分析图层里面。

第五步:由高到低依次获取房间,并判断房间内是否有人,若是存在则继续执行,不然则需重复本步骤。

第六步:通过Dijkstra算法确定由Qi(i≠k)至各出口Ej之间耗费最低路程CiJ,其中若是有障碍物,则路径需要绕开,同时保证结果T=min{Cij∣i≠k},据此能够获取到BC=BC∪T,然后求解出房间Qi当中遇困人员数量Ni,由此获取到F=F∪Fi,FDj=F∪FDj。

第七步:针对第五步与第六步进行重复,直至全部房间被困者皆成功疏散。

第八步:输出疏散总耗费BC、已疏散总人数F、接纳人数FDj。

最短路径优化算法的仿真结果如图10、图11所示。

图10 仿真结果1

图11 仿真结果2

5 结论

本文研究的是基于Unity 3D的路径重构系统设计,文章通过采集人员位置数据,通过Zigbee网络传输至上位机中存储,并利用相关代码实现Unity 3D从数据库中调用数据,进而在上位机中形象的展示被困人员的具体方位,及其具体路径,方便救援人员对其进行救援。本文打破了传统的定位模式中只定位、不直观的问题,通过Unity 3D自身具有的强大展示能力,形象直观的展示被困人员的位置,进而提升定位效果,使其更形象、更直观。

猜你喜欢
脚本重构数据库
青少年劳动教育实施的认知与策略重构
“双减”能否重构教育生态?
长城叙事的重构
自动推送与网站匹配的脚本
用四维的理念重构当代诗歌
数据库
数据库
数据库
数据库
举一反三新编