APP下载

虚拟飞行场景中事故特效的实时仿真

2016-11-30王新翔肖文磊

图学学报 2016年2期
关键词:真实感碰撞检测实时性

王新翔, 赵 罡, 肖文磊

(1. 北京航空航天大学大型飞机高级人才培训班,北京 100083;2. 北京航空航天大学机械工程及自动化学院,北京 100083)

虚拟飞行场景中事故特效的实时仿真

王新翔1, 赵罡2, 肖文磊2

(1. 北京航空航天大学大型飞机高级人才培训班,北京 100083;2. 北京航空航天大学机械工程及自动化学院,北京 100083)

针对飞机的虚拟飞行仿真中,飞行事故仿真的真实感不强的问题,基于粒子系统,结合动力学模型,实时渲染了爆炸、火焰、烟雾等飞行事故常见特效。使用四边形粒子代替传统点粒子,结合纹理映射技术和融合技术,将真实感较强的纹理贴图与背景的帧缓存按照预设的融合因子进行深度融合,提高了特效的真实感和实时性。通过粒子系统碰撞检测的方法,模拟烟雾在飞机机舱内扩散,与舱壁发生碰撞的效果。搭建出模拟飞行的虚拟现实仿真系统,实现真实感和沉浸感都很强的飞机爆炸、起火和冒烟等事故场景实时仿真。

虚拟现实;事故特效;粒子系统;碰撞检测;实时仿真

在虚拟飞行仿真中,飞行事故的仿真是尤为重要的一部分,特别是在面向飞行员、机务和乘务人员的培训中,真实感强的事故场景仿真可以为培训带来更好的沉浸感,提高培训的效率和效果。然而,在多数的飞行仿真中,飞行事故的真实感并不是很强,其重要的原因是事故场景中的爆炸、火焰、烟雾等特效的渲染效果不够真实[1-2],缺少与环境真实交互的物理效果仿真[3]。因此,爆炸、火焰、烟雾等特效的仿真对于提高虚拟飞行事故场景的真实感至关重要。但这些特效具有不规则的外形和运动的随机性,很难通过欧几里得几何学对其进行精确建模,因此,模糊物体的可视化仿真也一直是虚拟现实仿真中的一个难点[4]。目前,国内外对于模糊物体的仿真主要有2种方法:①基于粒子系统的方法,这种方法由美国的 Reeves[5]提出,1983年,Reeves[5]通过粒子系统来模拟火焰等模糊物体。粒子系统方法在粒子数量不太大的状态下实时性好,但是真实感并不是很理想,不过通过GPU支持可以在很大程度上提升仿真的实时性很真实感[6]。②基于物理模型的方法,1984年,Kajiya和 Von Herzen[7]将流体力学模型引入计算机图形学,并直接绘制了云;2002年,斯坦福大学的Nguyen等[8]用Navier-Stocks方程组求解了火焰的运动。这种方法仿真的效果真实感很强,但是由于计算量大且实时性差,很难用于实时仿真。

本文主要采用了基于粒子系统的方法,引入粒子运动的动力学模型,并结合纹理映射和背景融合技术,仿真出真实感强和实时性都比较好的爆炸、火焰和烟雾特效。并采用粒子与环境障碍物碰撞检测的方法,实时模拟烟雾扩散和与环境交互的过程。利用OpenSceneGraph[9]作为图形渲染引擎,实现了真实感较强的飞机虚拟飞行中发动机爆炸、机舱起火和烟雾蔓延等事故场景仿真。

1 粒子系统和动力学建模

1.1 粒子系统原理

(1) 粒子系统属性。粒子系统的基本思想就是众多聚集在一起的带有各自属性的粒子,通过粒子属性随时间的变化来模拟不规则的模糊物体。通常粒子系统包括以下属性:

外观属性:如颜色、形状、大小和透明度等;

运动学属性:如速度、加速度和位置等;

其他属性:如生命周期。

(2) 粒子系统实现过程。粒子系统的活动主要经历3个阶段:即产生、活动和消亡,粒子在这3个阶段具体经历的过程有:①初始化粒子系统;②粒子运动的动力学计算;③粒子属性更新;④生成新的粒子,删除已经“死亡”的粒子;⑤绘制更新后的粒子。其中,过程②~⑤的循环就形成了粒子。

系统模拟物体的动态变化。所有的粒子都是由粒子系统发射器进行发射,发射器发射的粒子均带有初始的属性。

1.2粒子系统的动力学分析

在流体特效仿真中,通常假设爆炸、火焰、烟雾等特效为不可压缩的无粘性流体[10]。分析其粒子的动力学模型,只需考虑作用在粒子上的重力、风力和热浮力。

首先,粒子受到的重力为:

其中,m为单个粒子的质量,g为重力加速度。

其次,粒子在空气中可能受到风力作用,风力为Fw,根据风速风压公式[11]可以得到每个粒子受到的风力为:

其中,p为空气压强,v为风的速度,s为风力对粒子的作用面积。

同时,由于爆炸、起火冒烟等会导致空气的热运动加剧,从而使粒子受到热浮力的作用[12],热浮力为:

其中,ρ为空气的密度,g为重力加速度,vp为粒子的体积。

因此,粒子运动过程中所受到的合力为:

根据牛顿第二定律,粒子运动的加速度:

因此,粒子在任意时刻运动的速度可表示为:

其中,V0为粒子发射时的初速度。

同样的,粒子在任意时刻的位置可表示为:

其中,p0为粒子发射时的初始位置。

1.3建立特效的粒子系统

(1) 火焰的粒子系统模型。火焰燃烧的形态模糊复杂,因此,单一的粒子系统难以仿真出真实的火焰效果。为了提高火焰燃烧的真实性,采用多粒子系统来表示火焰模型,即由多个火焰发射器发射火焰粒子。假设火焰的燃烧位置为:P0=(px, py, pz),燃烧半径为r,为火焰设置5个粒子发射器,其位置可由以下公式进行计算:

其中,rand( )为-1.0~1.0的随机数, P3~P5与P2同理,选择发射器的形状为球形,就可在火焰燃烧位置附近形成多个粒子发射系统。根据式(5)对火焰粒子的运动进行分析。火焰的内焰,温度相对较高,因此所受的热浮力相对较大,初速度也相对较大,位于中心的发射器发射粒子的数量和生命值最大,位于边缘的相对较小,位于中心的发射器发射粒子的生命周期大于位于边缘的粒子。任意时刻粒子的速度和位置可由式(6)、(7)计算得到。

(2) 烟雾的粒子系统模型。火焰燃烧会伴随着大量烟雾产生,烟雾的效果与火焰类似,但是烟雾在粒子运动速度上相对火焰较慢,而且烟雾生成的位置是在相对燃烧点偏高的位置。因此设定烟雾粒子发射器的位置:

选择烟雾发射器的形状为球形,其半径为 r。根据式(5)对烟雾粒子进行运动分析,类似于火焰,烟雾粒子同样是内部温度较高,受到的热浮力较大,受到的加速度大,上升速度快,边缘的粒子受到的热浮力较小,上升速度慢。同时,由于温度差异,烟雾的内部会产生剪切的作用而发生扩散的效果。同样,烟雾粒子每一时刻的速度和位置可以由式(6)、(7)计算得到。

(3) 爆炸的粒子系统模型。爆炸是可燃物在极短时间内剧烈燃烧,产生大量的火焰、烟雾和灰烬的过程。

因此,在本文研究中,将爆炸的粒子系统模型分为4层,分别为:爆炸核、燃烧层、烟雾层和灰烬层,各层的相对位置如图1所示。

图1 爆炸的粒子系统模型

爆炸核为爆炸的中心,并没有具体的发射器。燃烧层主要以剧烈燃烧的火焰特效为主,烟雾层是燃烧后产生的烟雾特效,在火焰层的外围,灰烬层并不是在爆炸的最外层,而是由爆炸核的中心向四周迅速扩散的灰烬粒子组成。因此,需要分别对燃烧层、烟雾层和灰烬层建立相应的粒子系统模型。各层粒子的发射器都是由爆炸核作为发射器中心,因此,各个发射器的中心均为:

燃烧层作为最内部的一层,其发射器半径设为rE(rE为爆炸核的半径),烟雾层的半径设为1.5 rE,灰烬层模拟的是粒子向外喷射的效果,其半径设为rE,均选择为球形发射器。

在对爆炸特效进行动力学分析时,其所受的重力和风力方向是固定不变的。爆炸的粒子是以一点为圆心向四面八方进行发射,因此,每个粒子受到的热浮力方向均为其初速度的方向,依然可由式(6)、(7)计算出每一帧粒子的速度和位置。

2 纹理映射和融合技术

2.1纹理映射技术

纹理映射技术的应用对提高特效的真实感有着重要的作用。本文研究中使用四边形的粒子代替传统的点粒子,对四边形粒子映射真实的特效纹理图片,既可以大大地提升特效的真实感,又可以减少粒子的数量,从而提高仿真的实时性。

以火焰特效的纹理为例,如图2所示。为了提高真实感,每种特效提供了4种纹理,对所有粒子系统的粒子随机映射这4种纹理中的1种,纹理一般为2n2n×像素的图片。

图2 火焰特效的纹理贴图

2.2纹理融合

如果只为特效粒子进行纹理映射还无法满足渲染的真实感效果,就需要将纹理与粒子的颜色、背景颜色进行透明度融合,这样才能将带有纹理的粒子与背景自然融合,如图3所示。

图3 纹理融合示意图

本文采用的融合算法如下:

(1) 纹理中的黑色区域与背景颜色进行融合,融合因子为1α,融合后的颜色为:

(2) 纹理中的白色区域与粒子颜色进行融合,融合因子为2α,融合后的颜色为:

其中,α1和α2的取值范围为0~1,根据融合效果对α1和α2的值进行调整,本文研究中,α1=0.9和α2=0.8时,具有较好的效果。

3 粒子系统的碰撞检测

在火焰燃烧、烟雾扩散等过程中,都会与周围环境中的物体发生“碰撞”。如不考虑碰撞现象,火焰、烟雾就会“穿透”物体,无法仿真真实的烟雾扩散的物理效果。因此,对特效的粒子进行碰撞检测,实现火焰、烟雾与周围环境的交互,这是实现特效真实感尤为重要的部分。

3.1碰撞检测算法

本文的碰撞检测算法只考虑粒子与环境之间的碰撞,并未考虑粒子之间的碰撞。设四边形粒子的边长为a,因此在进行碰撞检测时获取的粒子的位置坐标为四边形的几何中心坐标,在计算粒子与障碍物是否接触时,判断粒子中心与障碍物的距离,则发生碰撞,碰撞过程如图4所示。粒子以速度V在点P处发生碰撞,根据反射定律,可得:

由于碰撞过程为非完全弹性碰撞,且有一定的能量损失,因此系数k的取值范围为0~1。

图4 粒子与障碍物碰撞示意图

粒子系统碰撞检测的流程如图5所示。

图5 粒子系统碰撞检测流程图

3.2烟雾扩散的实现

飞机机舱内起火后烟雾在机舱内扩散的现象,只有考虑火焰、烟雾与机舱壁的碰撞检测,才能保证烟雾不会穿过机舱,仿真出真实的烟雾在机舱内扩散的效果。

可设定烟雾碰撞检测的几何对象为飞机机舱内壁、舱门和行李架的外壁,由于座椅数量众多,考虑到碰撞检测的计算量对仿真实时性的影响,因此,无需将座椅作为碰撞检测的对象。由于现实中的烟雾具有粘性,碰撞过程中,所发生的碰撞类型为非完全弹性碰撞,且伴随有能量的损失。能量损失系数根据仿真测试,当式(15)中的 k=0.8时,碰撞的效果最为真实。

采用这种方法可以实时的模拟烟雾在机舱内扩散,与基于物理模型的方法不同,其需要预先设定好烟雾粒子的运动轨迹,这种基于粒子碰撞检测的方法实现烟雾扩散是一种实时的物理效果。

4 仿真结果分析

仿真的硬件平台为PC (Intel Core2 Quad CPU Q9500@2.83 GHz;4 GB RAM;ATI Radeon4350 512 MB),软件环境包括OpenSceneGraph三维图形渲染引擎、SPARK粒子系统库、Visual Studio 2010等。

如图 6、7所示,用本文方法渲染出的火焰、烟雾和爆炸效果的动态生成过程,可看出几种特效都具有比较真实的渲染效果。

图6 火焰、烟雾动态渲染效果

图7 爆炸过程动态渲染效果

如图8(a)所示,未使用纹理映射的火焰、烟雾效果。如图8(b)所示,只设定烟雾、火焰粒子发射初速度,没有对粒子的运动进行动力学驱动,粒子一直保持初速度运动。通过与图6中效果进行比较,可以明显看出纹理映射和动力学建模对特效性能的提升效果。

图8 火焰、烟雾的简单特效

如图 9所示,为 OpenSceneGraph提供的osgParticle粒子系统模拟的火焰、烟雾和爆炸效果,通过对图 6、7中效果进行对比可看出,本文所研究的特效效果真实感更强。

图9 OpenSceneGraph的粒子系统特效

在虚拟飞行仿真中,将特效用于飞行事故场景仿真,模拟飞机发动机爆炸如图 10所示,机舱起火、冒烟,以及基于碰撞检测方法仿真烟雾在机舱内扩散蔓延等效果如图 11所示,提高了飞机事故场景的真实感。

图10 发动机爆炸起火的事故仿真

图11 烟雾在机舱内扩散的事故仿真

特效的实时性效果主要通过粒子数量和渲染帧速率体现。因此,为了测试本文特效的实时性,向场景中加入不同数量的特效效果,通过获取场景中存在粒子的个数和场景实时渲染的帧速率对特效的实时性进行分析。以火焰和烟雾特效为例,具体渲染帧速率见表1。

表1 不同粒子数下实时渲染帧速率对比

根据表1分析可知,在场景中加入20个火焰烟雾特效后,渲染帧率才有明显的下降。由于人眼的分辨能力上限为30 fps,所以在加入35个火焰、烟雾效果以下都可以保证场景良好的实时性。因此,采用本文方法渲染的特效实时性效果比较理想。

本文采用的方法与OpenSceneGraph集成的粒子系统osgParticle渲染进行对比,特效的粒子数目情况见表2。

表2 特效的粒子数目对比

根据表2数据可知,本文采用的方法在实现特效效果的粒子数量上相对较少,因此,运行效率相对较高。

在图 11中,火焰、烟雾粒子与飞机机舱发生碰撞检测的事故场景仿真中,实时渲染帧率也可以达到49.57 fps,同样具有良好的实时性。

5 结 论

本文所研究的火焰、烟雾、爆炸等特效由于引入了粒子动力学驱动、碰撞检测等物理模型,使得特效效果在物理属性上更为真实,与一般的特效仿真相比,更为接近现实中真实的效果。同时,恰当的纹理贴图的应用使得仿真粒子数量大幅度减少,提高了特效渲染效率,且增强了视觉的真实感。在特效的进一步研究中,应更多地考虑到特效的物理性质,为粒子系统的运动和碰撞检测建立更为细致的动力学模型,从而实现更为逼真的效果。

同时,将特效应用于虚拟飞行仿真系统中的事故场景,场景具有很强的真实感和良好的实时性,可大大提高虚拟飞行仿真的沉浸感。作为虚拟培训系统,可以为飞行员、机务和乘务人员提供很好的培训效果。

[1] Zhang L, Jiang H Z, Li H R. PC based high quality and low cost flight simulator [C]//Automation and Logistics, 2007 IEEE International Conference on. New York: IEEE Press, 2007.

[2] 梁伟, 刘群, 吴渝. 飞机尾翼空中失火的场景模拟[J]. 计算机工程与应用, 2010, 46(9): 163-165.

[3] Zhuo N W, Rao Y B. Real time dense smoke simulation based particle system [C]//Intelligent Information Technology Application Workshops. New York: IEEE Press, 2008: 809-813.

[4] 张茂军. 虚拟现实系统[M]. 北京: 科学出版社, 2001: 2.

[5] Reeves W T. Particle systems-a technique for modeling a class of fuzzy objects [J]. ACM Transactions on Graphics, 1983, 2(2): 359-376.

[6] 陈显军, 李心颖, 湛永松. GPU支持下基于粒子系统编辑器的特效技术研究[J]. 图学学报, 2011, 32(6): 77-81.

[7] Kajiya J T, Von Herzen B P. Ray tracing volume densities [J]. ACM Siggraph Computer Graphics, 1984, 18(5): 165-174.

[8] Nguyen D Q, Fedkiw R, Jensen H W. Physically based modeling and animation of fire [J]. ACM Transactions on Graphics, 2002, 21(3): 721-728.

[9] 肖鹏, 刘更代, 徐明亮. OpenSceneGraph三维渲染引擎编程指南[M]. 北京: 清华大学出版社, 2010: 2-3.

[10] 孟强龙. 烟雾的物理模型及其模拟[D]. 合肥: 安徽大学, 2010.

[11] 杨宇科. 一种风场作用下粒子系统火焰的动态模拟[J].计算机应用与软件, 2013, 30(1): 132-135.

[12] 柳有权, 王文成, 吴恩华. 快速真实地生成树的自然摇曳[J]. 计算机学报, 2005, 28(7): 1185-1191.

Real-Time Simulation of Accident Effects in Virtual Flight Scene

Wang Xinxiang1,Zhao Gang2,Xiao Wenlei2

(1. Large Aircraft Advanced Training Center, Beihang University, Beijing 100083, China; 2. School of Mechanical Engineering and Automation, Beihang University, Beijing 100083, China)

In order to enhance the sense of reality in accident scenes of flight simulation, a method based on particle system and combined with dynamical model is adopted for rendering special effects, including fire, smoke, explosion, and so on. The traditional point particles are replaced by the quadrilateral ones. The texture mapping method is presented for the particle system. Each quadrilateral particle is mapped with the texture of real effect, and the textures are blended with the background according to a given alpha value. As a result, the special effects have an improved sense of reality and a good real-time performance. The method of particles’ collision detection is applied to simulate the smoke spreading and collision with the aircraft’s cabin. Finally, a virtual system of flight accident simulation is implemented, which is able to simulate the fire and smoke phenomenon happened inside the cabin and the explosion happened on the engine with a strong sense of reality.

virtual reality; accident effect; particle system; collision detection; real-time simulation

TP 391

10.11996/JG.j.2095-302X.2016020243

A

2095-302X(2016)02-0243-06

2015-07-08;定稿日期:2015-10-23

王新翔(1989–),男,河北承德人,硕士研究生。主要研究方向为虚拟现实技术。E-mail:flywinning@sina.com

肖文磊(1984–),男,江西井冈山人,讲师,博士。主要研究方向为虚拟现实技术、数控系统。E-mail:xiaowenlei@buaa.edu.cn

猜你喜欢

真实感碰撞检测实时性
基于动力学补偿的机器人电机力矩误差碰撞检测
全新预测碰撞检测系统
基于BIM的铁路信号室外设备布置与碰撞检测方法
回归真实感
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
细推物理重体验 表现人物贵专精
BIM技术下的某办公楼项目管线碰撞检测
南丰蜜桔造型
一种车载Profibus总线系统的实时性分析