论文部分内容阅读
摘要:基于Unity引擎实现对池火辐射热以及消防员所受辐射热伤害可视化。首先Unity对油池火模拟,再编写UnityShaderLab的光圈算法,实现辐射热安全距离可视化,结合RPG游戏架构实现基于Unity引擎的扑救演练严肃游戏开发,该课题对油池火灾的扑救演练及消防员辐射热保护有具有较高的理論及现实研究意义。
关键词:Unity3D;池火热辐射;Shader光圈算法;虚拟现实
Unity3D引擎由于其对二次开发友好便捷的支持,使其在娱乐游戏领域独占鳌头,尤其是RPG类游戏(角色扮演类游戏),现如今越来越多的严肃类游戏与三维仿真[3]也基于它来开发。油池火灾在火灾中占较大的比例,强烈的火焰辐射热是造成油罐间火灾蔓延的直接原因或间接原因,造成了许多人员伤亡和财产损失,更给消防官兵在消防救援过程中带来重重困难,至今油池火的扑救与演练仍是世界性难题。本课题将Unity3D引擎与RPG游戏架构设计和油池火辐射热有机结合起来作模型研究及虚拟现实技术实现。
1基于Unity3D的池火热辐射虚拟现实
1.1池火热辐射相关理论
假定某直径为D储量L的原油储罐,遭雷击引起敞口式油池火灾稳定燃烧,其的火焰辐射热,可采用文献[2]公式计算,目标所受辐射热,可采用点源模型计算,结合手册里池火热辐射人员烧伤半径和设备设施破坏距离计算标准[1-2],我们可以计算出具体的辐射热人员烧伤半径以及设备破坏距离,见下表。
池火热辐射人员烧伤半径和设备设施破坏距离
1.2Unity开发技术及实现
1.2.1光圈算法
我们利用Unity3D的着色器功能,使用ShaderLab着色语言,调用OpengGL管线渲染,实时绘制一系列光圈,进而对辐射热半径(伤害/破坏距离阈值)可视化仿真。光圈的算法的关键Shader代码如下:
uv=(2.0*uv)1.0;
floatBeamWidth=(0.7+0.5*cos(uv.x*10.0*tau*0.15*clamp(floor(5.0+10.0*cos(IGlobalTime)),0.0,10.0)))*abs(1.0/(30.0*uv.y));
vec3HorBeam=vec3(BeamWidth,BeamWidth,BeamWidth);
vec4Gl_FragColor=vec4(((HorBeam)*HorColour),1.0);
returnGl_FragColor;
式子中:
abs(1.0/(30.0*uv.y)),在shader中,如果color的值为负数,则认为是0,不显示该颜色。uv变量中uv.y表示点到原点(也是油池火点源模型中心点)的距离,值的范围为[0,R],R=R1、R2、R3;2)uv=(2.0*uv)1.0;先把uv缩小到原来的1/2,然后向外移动1单位。uv.y的值为[1/2,∞];由于负值color不被显示;3)1.0/(30.0*uv.y);缩小到原来的1/30,并做个倒数;4)abs(1.0/(30.0*uv.y));然后做个绝对值,效果下文末图1,背景色和光圈颜色我们可以根据需要补充代码继续修改。
1.2.2Unity引擎实现
根据前面根据需求假定的仿真数据,进行模型搭建,主要包括储罐区场景模型和消防员人物模型,分别运用3DsMax2017及Maya2014三维建模软件对仿真单位进行1:1的模型构建,导出.fbx格式文件,再导入Unity3D引擎,然后对场景进行构建,调节摄像机、灯光等属性。为起火油罐添加火焰粒子特效,模拟油池火稳定燃烧产生辐射热,图2为辐射热仿真效果图,红色区内表示死亡半径内,紫色为重伤阈值线,绿色为轻伤阈值线。画面里的人物为扮演角色消防员,位于轻伤距离内,左上角的绿血条显示其生命值。
2仿真效果及结束语
本文基于Unity3D的池火辐射热虚拟现实模型进行研究,以RPG游戏架构开发了消防员视角下对池火扑救时所受辐射热的虚拟现实系统;提供了油池火辐射热的虚拟现实模型的基本思路,可用于安全距离下油池火扑救虚拟演练,使扑救演练与虚拟现实技术结合,为传统的油池火安全距离理论和数值模拟发展到三维模拟提供了理论及应用层的参考,也可以对扑救战术演练提供评估指标。
参考文献:
[1]李丽霞,张礼敬,孟亦飞,等.池火灾热辐射下的最小安全距离.中国安全科学学报,2004.14(03).
[2]庄磊,陈国庆,孙志友,等.大型油罐火灾的热辐射危害特性.中国安全科学学报,2008,08(04).
[3]Computergameenginesfordevelopingfirstperson.virtualenvironments.DavidTrenholmeandShamusP.Smith.VirtualReality,2012(12):181187.
作者简介:杜梦文,男,沈阳航空航天大学研究生院,硕士,研究方向:信息化安全技术。
关键词:Unity3D;池火热辐射;Shader光圈算法;虚拟现实
Unity3D引擎由于其对二次开发友好便捷的支持,使其在娱乐游戏领域独占鳌头,尤其是RPG类游戏(角色扮演类游戏),现如今越来越多的严肃类游戏与三维仿真[3]也基于它来开发。油池火灾在火灾中占较大的比例,强烈的火焰辐射热是造成油罐间火灾蔓延的直接原因或间接原因,造成了许多人员伤亡和财产损失,更给消防官兵在消防救援过程中带来重重困难,至今油池火的扑救与演练仍是世界性难题。本课题将Unity3D引擎与RPG游戏架构设计和油池火辐射热有机结合起来作模型研究及虚拟现实技术实现。
1基于Unity3D的池火热辐射虚拟现实
1.1池火热辐射相关理论
假定某直径为D储量L的原油储罐,遭雷击引起敞口式油池火灾稳定燃烧,其的火焰辐射热,可采用文献[2]公式计算,目标所受辐射热,可采用点源模型计算,结合手册里池火热辐射人员烧伤半径和设备设施破坏距离计算标准[1-2],我们可以计算出具体的辐射热人员烧伤半径以及设备破坏距离,见下表。
池火热辐射人员烧伤半径和设备设施破坏距离
1.2Unity开发技术及实现
1.2.1光圈算法
我们利用Unity3D的着色器功能,使用ShaderLab着色语言,调用OpengGL管线渲染,实时绘制一系列光圈,进而对辐射热半径(伤害/破坏距离阈值)可视化仿真。光圈的算法的关键Shader代码如下:
uv=(2.0*uv)1.0;
floatBeamWidth=(0.7+0.5*cos(uv.x*10.0*tau*0.15*clamp(floor(5.0+10.0*cos(IGlobalTime)),0.0,10.0)))*abs(1.0/(30.0*uv.y));
vec3HorBeam=vec3(BeamWidth,BeamWidth,BeamWidth);
vec4Gl_FragColor=vec4(((HorBeam)*HorColour),1.0);
returnGl_FragColor;
式子中:
abs(1.0/(30.0*uv.y)),在shader中,如果color的值为负数,则认为是0,不显示该颜色。uv变量中uv.y表示点到原点(也是油池火点源模型中心点)的距离,值的范围为[0,R],R=R1、R2、R3;2)uv=(2.0*uv)1.0;先把uv缩小到原来的1/2,然后向外移动1单位。uv.y的值为[1/2,∞];由于负值color不被显示;3)1.0/(30.0*uv.y);缩小到原来的1/30,并做个倒数;4)abs(1.0/(30.0*uv.y));然后做个绝对值,效果下文末图1,背景色和光圈颜色我们可以根据需要补充代码继续修改。
1.2.2Unity引擎实现
根据前面根据需求假定的仿真数据,进行模型搭建,主要包括储罐区场景模型和消防员人物模型,分别运用3DsMax2017及Maya2014三维建模软件对仿真单位进行1:1的模型构建,导出.fbx格式文件,再导入Unity3D引擎,然后对场景进行构建,调节摄像机、灯光等属性。为起火油罐添加火焰粒子特效,模拟油池火稳定燃烧产生辐射热,图2为辐射热仿真效果图,红色区内表示死亡半径内,紫色为重伤阈值线,绿色为轻伤阈值线。画面里的人物为扮演角色消防员,位于轻伤距离内,左上角的绿血条显示其生命值。
2仿真效果及结束语
本文基于Unity3D的池火辐射热虚拟现实模型进行研究,以RPG游戏架构开发了消防员视角下对池火扑救时所受辐射热的虚拟现实系统;提供了油池火辐射热的虚拟现实模型的基本思路,可用于安全距离下油池火扑救虚拟演练,使扑救演练与虚拟现实技术结合,为传统的油池火安全距离理论和数值模拟发展到三维模拟提供了理论及应用层的参考,也可以对扑救战术演练提供评估指标。
参考文献:
[1]李丽霞,张礼敬,孟亦飞,等.池火灾热辐射下的最小安全距离.中国安全科学学报,2004.14(03).
[2]庄磊,陈国庆,孙志友,等.大型油罐火灾的热辐射危害特性.中国安全科学学报,2008,08(04).
[3]Computergameenginesfordevelopingfirstperson.virtualenvironments.DavidTrenholmeandShamusP.Smith.VirtualReality,2012(12):181187.
作者简介:杜梦文,男,沈阳航空航天大学研究生院,硕士,研究方向:信息化安全技术。