当前位置:文档之家› VegaPrime实时视景仿真中粒子系统的应用研究

VegaPrime实时视景仿真中粒子系统的应用研究

第22卷第4期

系统仿真学报?V ol. 22 No. 4 2010年4月Journal of System Simulation Apr., 2010

Vega Prime实时视景仿真中粒子系统的应用研究

廖炎平1, 刘莉1, 杜小菁1, 戚泽华1, 白海涛2

(1.北京理工大学宇航学院,北京 100081;2.防化指挥工程学院四系,北京 102205)

摘要:介绍了利用粒子系统方法模拟动态自然景物的基本步骤。应用了Vega Prime实时视景仿

真软件中的粒子系统,通过设置粒子系统的颜色、亮度、透明度、形状、纹理、大小、速度和位置,

逼真的模拟了火焰和烟雾的特效。通过将火焰粒子系统在发射坐标系中的速度转换到场景坐标系

中,实现了火焰随着发射装置的随动。

关键词:粒子系统;视景仿真;Vega Prime;坐标系;坐标转换

中图分类号:TP391.9 文献标识码:A 文章编号:1004-731X (2010) 04-0938-04 Research of Particle System Applied in V ega Prime Real Time Scene Simulation LIAO Yan-ping1, LIU Li1, DU Xiao-jing1, QI Ze-hua1, BAI Hai-tao2

(1. School of Aerospace Engineering, Beijing Institute of Technology, Beijing 100081, China;

2. The 4th Department, Command and Engineering Institute of Chemical Defence, Beijing 102205, China)

Abstract: The basic procedure to simulate dynamic natural objects with particle system method was introduced. The special effect of the flame and smog was simulated perfectly by setting the color, brightness, transparency, shape, texture, size, velocity and position of the particle system in Vega Prime real time scene simulation. The movement of flame with the launching equipment was achieved by transforming the velocity of launching coordinate system to scene coordinate system.

Key words: particle system; scene simulation; Vega Prime; coordinate system; coordinate conversation

引言

Vega Prime是MultiGen-Paradigm公司最新开发的实时视景仿真渲染软件。Vega Prime便于视景仿真应用程序快速准确的开发,是最具有适应性和可扩展性的商业软件。Vega Prime在提供高级仿真功能的同时还具有简单易用的优点,使用户能快速准确地开发出合乎要求的视景仿真应用程序,因而Vega Prime是有效的、快速的视景仿真应用开发工具。

虚拟战场环境中对于不规则物体的一些特效仿真,比如火、烟和云等现象,因其外观形状极不规则,没有光滑的表面,而且极其复杂与随意,并可能随时间而发生变化,因而模拟十分困难。粒子系统是迄今为止被认为模拟不规则模糊物体最为成功的一种图形生成算法。近年来,国内研究者用粒子系统的方法对火焰、烟雾等自然景物进行动态模拟,取得了大量的成果。2001年,王静秋基于粒子系统利用OpenGL技术实现有背景位图的烟火动态模拟[1]。同年,谢隽毅也基于粒子系统也实现了战场火焰的实时模拟[2]。2006年,贾彦国采用改进的高级粒子系统思想建立了粒子系统的四层层次结构,实现了具有较强真实感和实时性的火焰效果[3]。同年,张芹提出了一种新的基于粒子系统的火焰模型,生成了不同精细程度的火焰图形[4]。

精确模拟火焰、烟雾是非常困难的,而Vega Prime中

收稿日期:2008-09-13 修回日期:2008-10-29

作者简介:廖炎平(1985-), 男, 湖南临澧人, 博士生, 研究方向为飞行器总体设计;刘莉(1964-), 女, 辽宁沈阳人, 博士, 教授、博导, 研究方向为飞行器总体设计、飞行器结构设计、飞行器制导与控制。特效(FX)模块的粒子系统(Particle System)功能非常强大,可以用来模拟诸如爆炸、焰火和烟雾等效果。Vega Prime 对于粒子系统提供了两种开发方式:一是使用Vega Prime 的Lynx Prime图形界面设置粒子系统的属性参数;二是使用Vega Prime提供的API函数(VC环境)进行粒子系统的开发。

1 粒子系统

1983年由W.T.Reeves等首次系统地提出了一种用于不规则模糊物体(如火、云、水等)建模的方法。当时Reeves 为电影StarTreKⅡ绘制星系爆炸的场面[5]。由于粒子系统方法具有良好的随机性和动态性,粒子系统已经应用在可视化虚拟环境仿真的各个角度。

1.1 粒子系统的概念

粒子系统就是由大量粒子集合在一起表现模糊物体的计算机模拟系统。其基本思想是把模糊物体看作是众多粒子组成的粒子团,各粒子均有自己的属性,如颜色、形状、大小、透明度、运动速度、运动方向、生存期等。

粒子系统是用基本粒子群来描述物体的属性及其变化,这些基本粒子可以是一个像素,可以是一些简单的绘图图元,它们的集合确定了物体的基本形态。粒子系统不是一个静态的整体,而是随时间的推移处在不断运动中的粒子集合体。其中粒子群的分布结构可以改变,各个粒子的位置可以移动,新的粒子可以不断产生,同时旧的粒子可以“消亡”。也就是说,用粒子系统表示的物体是不确定的,它的外形和

2010年4月 廖炎平, 等:Vega Prime 实时视景仿真中粒子系统的应用研究 Apr., 2010

结构可以复杂多样,形态各异,可以处在一定规律的运动变化中,并且在一定程度上还具有一定的随机性。战场环境中就是采用大量的、具有一定生命和属性的微小粒子图元作为基本元素来描述不规则的模糊物体。在粒子系统中,每一个粒子图元均具有:形状、大小、颜色、透明度、运动速度和运动方向、生命周期等属性,所有这些属性都是时间的函数[6]。

Vega Prime 中粒子系统的实现步骤如下:

1) 分析模拟对象的静态特征和运动规律,建立物理模型,定义粒子初始属性,初始化粒子系统;

2) 产生一定数量的具有初始属性的新粒子;

3) 判断粒子生命周期,删除那些已经超过其生命周期的粒子;

4) 根据粒子的动态对粒子进行变换及改变属性; 5) 绘制并显示由有生命的粒子组成的图形; 6) 粒子系统退出。

其中,步骤2)、3)、4)、5)反复循环就形成粒子系统动态变化的过程。

图1 粒子系统的建模过程

Vega Prime 实时视景仿真软件提供的API 函数(VC 环境)对于粒子系统(Particle System )的绘制可以设置如下选项[7]: 1.1.1 粒子的初始位置

初始位置反应火焰粒子的分布及初始形状,由燃点的位置和大小决定。Vega Prime 中粒子系统的初始位置可以由粒子在场景坐标系中的初始坐标(x,y,z)、粒子系统的在场景中运动的初始方位(h,p,r)以及粒子系统沿场景坐标系的比例来确定。这三个参数分别由setTranslate(),setRotate()和setScale()函数设置。 1.1.2 粒子的产生

Vega Prime 中提供的setMaxNumParticles()函数和setNumParticlesToRelease()函数分别设置初始粒子的最大数量以及每隔一定的时间周期要生成的粒子数量。时间周期的大小由setReleaseInterval()函数决定,新产生的粒子用来弥

补因生命周期到了而被删除的粒子。setSourceDomain()函数和setSourceDomainSize()函数分别改变粒子初始形状和大小。setParticleLifeCycle()函数赋予粒子一定的生命周期。 要在给定场景的某个燃烧区域上产生一定数量的火焰效果,粒子的初始数量很重要。粒子初始数量决定了火焰的密度和大小,数目过小,产生的火焰失真;数目过大,计算及绘制的时间增大,实时性受到影响。用户可以根据所要描述火焰燃烧规模的变化可以设置合适的粒子数量。

图2 粒子系统的缺陷

火焰粒子的生命周期表征了其在屏幕上的停留时间,用帧数表示。速度一定时,它决定了粒子上升的最大高度。

此外,还可以设置粒子的流动类型setFlowType()和速度分布setVelocityDistribution()。 1.1.3 粒子的特性

可以用addSize()函数设置粒子的大小,而setSize- Variatione()函数限制了粒子大小变化的范围。调用addScale- Along-Velocity()函数设置粒子沿速度方向的比例。粒子的颜色分量包括粒子的三原色值(R ,G ,B )和粒子的透明度

(Alpha ),透明度是一个从0变化到1的实数。粒子的颜色很大程度上决定了模拟的结果看起来是否真实,粒子的透明度往往与粒子的生命值相联系,随着粒子生命值的减少,粒子变得越来约透明,粒子透明度直接影响画面的真实感。 应用Vega Prime 粒子系统对火焰或烟雾进行模拟时,用addColor()函数中R (红)、G (绿)、B (蓝)三个变量来描

述不同时刻每个粒子的基本颜色特征。此外还提供setColorVariation()函数限制粒子的颜色变化范围。 1.1.4 粒子的运动

在应用粒子系统进行动态的景物模拟时,每一个粒子均受到环境中各种力的作用,如:重力、风力等,粒子在这些力的作用下运动。

Vega Prime 中可以设置粒子的运动速度、环境风速、随机速度、球形速度以及重力场作用。粒子的运动速度反映了单位时间内粒子位移的大小,进而可以确定任何时刻粒子的空间位置。引入重力场为为了模拟重力的作用,重力场的方向为场景坐标系OY 轴负方向,重力加速度g 的大小可以根据不同的环境而用setGravitationalConstant()函数来设置。在水平方向,火焰粒子的运动受风力影响很大,引入风速就可以模拟火焰跃动现象。实际环境中,风向具有一定的任意性,为了模拟粒子的任意性,引入随机速度的设置addRandom- Velocity()。 1.1.5 粒子的纹理

景物表面存在非常丰富的纹理细节,人们根据这些细节纹理来区别各种具有相同形状的景物,因此景物表面纹理细

2010年4月系统仿真学报 Apr., 2010

节的模拟在真实感图形合成技术中起着非常重要的作用。

对不同的景物进行模拟时,分别用setTextureFile()和setTextureMode()函数调用不同的纹理以及设置粒子纹理的渲染模式。

2 火焰的模拟

火焰燃烧的效果在很多虚拟现实场景中是必不可少的,火焰具有不规则的几何形状,细微的颜色变化,而且具有不确定的动态特性,这种动态变化是极其复杂和混乱的,并受到周围环境的影响,不能精确的描述。火焰所具有的动态性和随机性使其很难用常用的三维建模方法来模拟。当前,研究者基于不同的出发点,提出了一些火焰模拟算法,诸如视觉效果建模、纹理映射、燃烧粒子建模、基于细胞自动机火焰模型、基于扩散过程的火焰模型和粒子系统。其中粒子系统为模拟火焰提供了有力的工具。

应用Vega Prime实时视景仿真中的粒子系统可以实现逼真的火焰模拟:

1) 设置火焰的初始位置。首先在Vega Prime中创建一个新的粒子系统(Partical01),火焰粒子系统的初始位置(x,y,z)处于场景中火焰喷射器的喷口位置,其在场景中的初始运动方向为场景坐标系中OY轴的正方向,沿场景坐标轴的比例为1;

2) 确定产生粒子的数量。本文火焰粒子的最大数量取为9000个,每次释放的粒子数为50个,释放的时间间隔为0.01秒,以及粒子的生存周期为3秒。由于喷射火焰的初始形状为圆形,则设置火焰粒子系统的源区域为圆形区域,且使圆形区域的大小与场景中的火焰喷射器的喷口大小一致。火焰粒子的生存周期是根据运动火焰的最大距离来确定的。

3) 设置粒子的特性。在粒子系统的生存周期内,在不同的时刻,可以设置火焰粒子的大小、沿坐标轴的比例以及粒子的颜色。随着火焰粒子的燃烧,它的尺寸逐渐变小,粒子大小影响火焰模拟的精细程度。

4) 设定粒子的运动场。粒子的速度是实现动态火焰必不可少的因素。在粒子生存周期的不同时刻,根据实际火焰喷射器火焰的运动速度,可以用addVelocity()函数设置粒子的运动速度。为了模拟喷射火焰受战场中环境风速的影响,用addWind()设置环境中的风速。,为了模拟火焰粒子的任意性,粒子的随机速度设置为0.3米每秒。除此之外,还可以设定火焰粒子在场景中也受到重力场的作用。

5) 粒子的绘制。绘制并显示由有生命的粒子组成的火焰效果。

利用粒子系统方法模拟三维场景种的火焰时,通过在Vega Prime中设置粒子系统的颜色、亮度、透明度、形状、纹理、大小、速度、生存期和位置,模拟出逼真的火焰效果如图3所示。

图3 基于粒子系统的运动火焰模拟

Vega Prime实时视景仿真软件中采用欧拉角HPR来描述运动粒子的姿态,为了实现火焰粒子随着发射装置做俯仰(P)和偏航(H)两个方向上随动。粒子系统中粒子的速度从发射装置的坐标系oxyz转换到Vega Prime场景坐标系OXYZ 中。

图4 发射坐标系与场景坐标系间的关系

发射坐标系与场景坐标系间的转换矩阵即是两个初等转换矩阵的乘积。

cos sin0100

sin cos00cos sin

0010sin cos

X H H x

Y H H P P y

Z P P z

?

????????

????????

=?

????????

????????

????????

(1)

假设火焰在发射坐标系中的速度为'

y

V,则火焰在场景坐标系中的速度为:

'

'

'

sin cos

cos cos

sin

x y

y y

z y

V V H P

V V H P

V V P

??

?

??

??

??=

??

??

??

??

????

(2)

VC++程序代码如下:

Partical01->setVelocity(0,vuVec3d(-200*cos(pitch*pi)*sin(heading*pi),200 *cos(pitch*pi)*cos(heading*pi),200*sin(pitch*pi)));

注:pitch表示火焰喷射装置的俯仰角,heading表示火焰喷射装置的方位角。

在火焰模拟过程中,火焰粒子的位置变化是按照一定的运动来实现的,通过设置粒子系统在场景坐标系中的速度,可以实现对运动火焰的模拟。

3 烟雾的模拟

模拟烟的行为,其基础是研究与烟的行为相关的因素。这些因素包括烟的运动速度、烟的温度和风的作用。影响烟的运动的第一因素是烟的速度。当烟以一定速度进入空气时,由于烟与空气的摩擦,烟受到空气的剪切力作用而产生

2010年4月廖炎平, 等:Vega Prime实时视景仿真中粒子系统的应用研究Apr., 2010

旋转变形,使得烟与空气进行混合,产生湍流效果。影响烟的第二个因素是烟的温度。在烟的内部,由于温度高的部分受浮力大,上升速度快,而与之相反,温度低的部分受浮力小,上升速度慢,因此,由于温度的差异,引起烟的内部也会产生剪切作用而扩散。影响烟的运动的第三个因素是风的作用。当烟受到风的吹动时,烟在水平方向以接近风速的速度移动,同时烟受空气浮力作用向上运动[2]。

应用Vega Prime实时视景仿真中粒子系统实现烟雾模拟的具体步骤如下:

1) 设置烟雾的初始位置。首先在Vega Prime中创建另一个新的粒子系统(Partical02),烟雾的初始位置处于场景中弹着点爆炸点位置,烟雾的触发方式通过Vega Prime中提供的炮弹与地面的碰撞检测实现。烟雾粒子系统在场景中的初始运动方向垂直向上,其沿坐标轴的比例为1;

2) 确定产生粒子的数量。在应用粒子系统模拟烟雾时,限制产生粒子的最大数量为20000个、每次释放的粒子数为20个、释放间隔为0.01秒以及粒子的生存周期为5秒。由于自然界中烟雾的初始形状为圆形,则设置粒子系统的源区域为圆形区域,且使圆形区域的大小与场景中的需要的烟雾范围一致。

3) 设置粒子的特性。在粒子系统的生存周期内,在不同的时刻,可以设置火焰粒子的大小变化是由小变大、沿坐标轴的比例以及粒子的颜色。随着烟雾的产生,粒子的尺寸逐渐变大。

4) 设定粒子的运动场。在粒子生存周期的不同时刻,可以设置粒子的运动速度。自然界中的烟雾在无风情况下都是垂直向上的,因此只设置粒子的z方向的速度。同时为了更好的模拟烟雾在场景中的效果,可以设置环境中的风速的大小以及粒子的随机速度。

5) 粒子的绘制。绘制并显示由有生命的粒子组成的烟雾效果。

通过在Vega Prime中设置粒子系统的颜色、形状、纹理、大小、速度和位置,模拟出的烟雾效果如图5所示。

图5 基于粒子系统的动态烟雾模拟

4 结论

Vega Prime全面支持面向对象技术,目前在各类仿真系统中得到广泛的应用。粒子系统是战场环境仿真中对不规则动态对象建模的有效方法之一。本文应用了Vega Prime中的粒子系统,逼真地模拟了火焰和烟雾的效果。并将火焰粒子系统中发射坐标系中的速度转换到场景坐标系中,实现了火焰的随动。

参考文献:

[1] 王静秋, 钱志峰. 基于粒子系统的焰火模拟研究[J]. 南京航空航天

大学学报, 2001, 33(2): 166-170.

[2] 谢隽毅, 张芹, 吴慧中. 一个基于粒子系统的战场火焰模型及其实

现[J]. 系统仿真学报, 2001, 13(5): 596-620.

[3] 贾彦国, 张伟, 唐勇. 基于层次化结构粒子系统的实时火焰模拟[J].

系统仿真学报, 2006, 18(1): 39-41.

[4] 张芹, 吴慧中, 谢隽毅, 等. 基于粒子系统的火焰模型及其生成方

法研究[J]. 计算机辅助设计与图形学学报, 2001, 13(1): 78-82. [5] Reeves W T. Particle System-a technique for modeling a class of

fuzzy object [J]. ACM Computer Graphics (SIGGRAPH’83) (S0730-0310), 1983, 17(3): 359-376.

[6] 郭齐胜, 董志明. 战场环境仿真[M]. 北京: 国防工业出版社, 2005:

156-167.

[7] Multigen-Paradigm Inc. Vega Prime Reference Guide Version 2.0 [Z].

Beijing, China: Multigen-Paradigm Inc., 2005.

[8] 周洁琼. 基于粒子系统的实时火焰模拟技术研究与实现[D]. 湖南

大学硕士学位论文, 2005.

[9] 宇亚卫. 基于粒子系统的三维火焰模拟[D]. 西安科技大学学位论

文, 2006.

[10] 李亚臣, 胡健, 黎远忠, 等. 基于VegaPrime的航天器视景仿真中

的多坐标系问题[J]. 系统仿真学报,2007, 19(3): 575-578.

相关主题
文本预览
相关文档 最新文档