基于粒子系统的雨景模拟改进算法研究

时间:2022-08-20 11:28:33

基于粒子系统的雨景模拟改进算法研究

摘要:针对传统粒子系统技术生成虚拟场景速度太慢无法满足仿真系统实时性要求的缺点,在介绍粒子系统传统算法的基础上,以模拟自然界降雨过程为例,提出了基于粒子系统的雨景模拟改进算法,并最终取得了较为逼真的降雨过程视觉效果。该模型方法简单实用,可很方便地嵌入到现有的各种动画系统中。

关键词:计算机仿真;粒子系统;雨景模拟;实时生成

中图分类号:TP312文献标识码:A文章编号:1672-7800(2012)012-0046-03

0引言

随着计算机图形学理论和图形硬件的飞速发展,自然景物的生成与模拟已经成为计算机图形学研究的热门课题之一。尤其是对如雨、雪等动态自然景物的模拟更是极具挑战性,这是由于在现实世界中的自然景物具有极其丰富的表面纹理细节和不规则的表面外形,它们的逻辑结构很难表达,若对在微机条件下的场景实时生成采用传统的计算机图形学方法来造型,再对场景进行实施渲染,巨大的计算量将成为图形生成显示难以逾越的瓶颈。因此,如何才能实时有效地模拟各种自然景物过程并提高虚拟场景的逼真性就成了计算机图形学研究的一个重要内容。

本文从视景仿真的实时性要求出发,首先介绍了粒子系统的传统算法, 然后以模拟自然界降雨过程为例,分析了雨点的属性特点,提出了基于粒子系统模拟自然界降雨过程的实时生成改进算法,建立并实现了一种能够模拟降雨过程的粒子系统。该系统对雨水下降过程中的物理模型等进行了适当简化,在保证粒子系统实时性的前提下,达到了较高的逼真度,并可方便地嵌入到现有的各种动画系统中去,应用前景十分广阔。

1基于传统粒子系统的雨景模拟算法

这里首先对坐标系及相关变量作出相应说明,假设系统中模型空间坐标系采用右手坐标系,摄像机的初始位置为(0,0,0),方向为z轴负方向。所用到的变量包括视距体参数、视窗尺寸、摄像机参数等。视距体参数包括水平视角与垂直视角α、β,面距离dnear,远平面距离dfar。视窗尺寸包括视窗高度hscreen、视窗宽度wscreen。当前摄像机的位置为(xv,yv,zv),摄像机绕x、y、z三坐标轴的转角为(h,p,r),由于在仿真中h、r约等于0,因此可简化为(0,p,0)。1.1新粒子数量的计算

在雨景模拟中,新的粒子由一个可控的随机过程产生,在某一时刻,进入系统的粒子数量为系统中设置的粒子数量预期值与系统中当前存在的粒子数量之差,加上一个由一随机过程定义的粒子数目。见下式:

ParticleNum=MeanNum+rand()×VarNum(1)

其中,MeanNum为产生粒子数量的平均值,VarNum为产生粒子数量的方差,rand()为[-1,1]间均匀分布的随机数,用于控制新粒子的实际生成数量。

1.2粒子的状态更新

粒子的属性是逐帧更新的,需要更新的属性有速度和位置。其中,粒子X方向、Z方向的速度受当前风速方向、大小的影响,当风速改变时,粒子X方向、Z方向的速度亦会改变,计算方法与前述类似。然而,在粒子系统中,雨点粒子要在三维空间中运动,那么按照物体的运动规律,物体中粒子的速度v、加速度a、位置s和运动时间t有如下的约束关系:v=v0+∫t0adt(2)

s=s0+∫t0vdt(3)1.3生命周期结束条件

粒子的生命周期常常以帧为单位。将粒子位置处于视距体之外或者粒子落在了地上作为系统中粒子生命结束的条件。

1.4粒子的绘制

粒子的状态设置完毕后,需要根据粒子的状态对其进行绘制。

综上,粒子系统整个生命周期流程可归纳如图1所示。

2基于粒子系统的雨景模拟改进算法

由于粒子系统考虑利用大量粒子单元来表现不规则物体,因而即使对于空间中一个不大的物体区域,构成它的粒子数目也是惊人的。前文所述的传统粒子系统算法对计算机的存储量和计算速度要求过高,使得图形实时交互显示在普通微机环境下实现起来比较困难,速度也较慢,不能满足3D场景实时渲染的要求。因此,针对粒子系统生成虚拟场景速度较慢的缺点,本文从以下几个方面对传统的基于粒子系统的雨景模拟算法进行了优化改进以实现系统响应的实时性。

2.1数据结构简化

粒子系统表达的自然景物越真实,所需粒子的数量就越多, 计算开销就越大。因此,设计一个好的粒子系统的数据结构很重要,否则将会大大地降低粒子系统的运行速度。为了尽可能地降低渲染这些粒子的时间,基于降雨场景的特征,本文在实现雨景模拟粒子系统建模时,使用短线(即一条线段)来表示雨点粒子,雨点粒子随着时间的推移,根据两个顶点所决定的方向向量,按照一定的速度下降。实时计算出它的具置,然后在该位置上将该粒子绘制出来。雨点粒子的结构构造如下:

//雨点粒子结构

struct RainParticle

{

float x, y, z; //位置

float fDspeed; //下降速度

};

RainParticle rain[PARTICLENUM];//雨点粒子数组

当然,雨点粒子也可以用小的四边形来表示,但在用小四边形来表示雨点粒子时,在系统运行时还要为它加上纹理,这将极大增加整个粒子系统运行的开销。此外,采用线段表示雨滴时还省去了反走样处理的繁琐。

2.2相对位置识别模型简化

由于对比场景中的景物,粒子本身的尺寸很小,因此,视距体关系与粒子位置的判断可简化为三维空间中“点”的裁剪问题。首先根据视距体参数计算构成视距体的6个面,其法向量指向视距体内侧。通过计算视距体的6个面与粒子中心的距离disi(i=1,2,…,6),可判断6个面与粒子的位置关系。若粒子在所有6个面的内侧,则其在视距体之内,这时就需要再进一步进行粒子是否落地的判断,以确定其生命周期是否结束;若粒子在视距体的6个面中任意一个面之外,则视其在视距体之外,同时该粒子生命周期结束。 要判断粒子是否落在了地上或场景中的其它景物上,需要遍历当前景物空间中模型的所有片元,并与粒子下落的轨迹求交。在3D系统中,由于场景复杂,该项操作的时间开销很大,难以实时完成。因此,算法将该条件简化为当粒子的垂向坐标值y小于其所在位置的地平面垂向坐标值时,粒子生命周期即告结束。

2.3粒子系统物理模型简化

在粒子系统的设计中, “从重力场的模拟、风的模拟”等各种环境的模拟到火焰、波浪、瀑布、喷泉、枝条的摆动,无一不是源于物理模型。利用式(2)和式(3)进行粒子运动状态积分运算的计算量是很有必要的,为此采用等加速度运动的方法来实现离散情况下物体运动状态的简化计算。

假设在雨点粒子的生命周期内,加速度保持不变。雨粒子的y方向速度仅受其初始加速度影响。由于帧间的时间间隔很小,为简化计算,把两帧之间粒子的运动看作匀速运动。粒子i的当前位置为:xi=xi0+∑m=Nm=1vxmTm(4)

yi=yi0+∑m=Nm=1vymTm(5)

zi=zi0+∑m=Nm=1vzmTm(6)其中,Tm是第m-1帧到第m帧的时间间隔,(vxm,vym,vzm)是粒子的年龄为m帧时的速度,N是当前的粒子年龄(以帧为单位)。等加速度运动方法不仅精确率较高,而且运算简单,另外,等加速度运动方法可使用效率更高的递推运算来计算相邻时刻粒子的位置和速度。

2.4位置提升策略

本文所实现的粒子系统的所有粒子均是在程序初始化时刻随机产生的,当粒子落到地面后并不像传统的粒子系统那样,马上释放掉该粒子所占用的内存,然后分配新的内存并重新发射一定数量的粒子进行补充,而只是简单地将其位置提升到最高点,这样做的好处在于:

(1)避免了动态粒子的死亡和产生,省去了为死亡的粒子释放内存的操作,以及为新粒子重新分配内存所需的大量时间。

(2)避免了频繁地分配、释放空间所造成的内存碎片的产生。

(3)使得粒子的数据结构中省去了生命值特性参数(此时仅需判断粒子的垂向坐标是否已落地即可),使粒子数据结构变得更加简洁,处理起来更加迅速。

位置提升策略的引入大大地提高了程序的运行性能。

2.5深度感知的加强实现算法

在虚拟场景中,对于参与者来说,要实现“身临其境”的感觉,三维复杂自然景物的深度感知是极为重要的。尽管在正常情况下,对于雨点的降落过程,按照透视变换折算至显示平面绘制和三维环境模拟可以自动实现一定程度的深度感知效应,但是本文采用了多层薄膜的方法来加强模拟点雨的深度信息,即雨点的尺寸要更小一些,而且远处雨点的移动速度要更慢一些,以给人更加强烈的深度感觉。

3结语

本文着重从仿真系统的实时性和真实感的角度出发,首先对雨景模拟的传统粒子系统算法进行了研究,紧接着又通过引入雨点粒子属性简化、降雨过程物理模型简化、位置提升策略和深度感知加强算法等加速技术,使得本文中的雨点粒子降落的生成速度大大加快,保证了在实时性前提下所生成的动态降雨图像不但形态逼真,而且有效地提高了虚拟场景的沉浸感,其效果画面截图如图2所示。该项技术具有较强的应用背景,可方便地融入到各种三维动画系统中去。

参考文献:

[1]苏虎,周美玉.列车驾驶视景仿真中自然现象的模拟[J].中国铁道科学,2003(1).

图2基于粒子系统的雨景模拟效果

[2]万华根,金小刚,彭群生.基于物理模型的喷泉水流运动模拟[J].计算机学报,1998(9).

[3]REEVES W T,BLAU R.Approximate and probabilistic algorithms for shading and rendering structured particle systems[J].Computer Graphics,1985(3).

[4]王柏娜.计算机仿真录用基于随机轨迹变化的粒子云模拟[J].企业技术开发,2011(6).

[5]刘小玲,杨红雨,郭虎奇.基于GPU粒子系统的大规模雨雪场景实时模拟[J].计算机工程与设计,2012(6).

[6]华泽玺,王迎春,孙建顺.基于粒子系统的爆炸效果仿真研究[J].计算机科学,2012(4).

[7]许金生,宋万忠.基于OSG粒子系统的雪景模拟[J].计算机工程与设计,2012(4).

上一篇:基于大学课程本体的个性化学习系统开发与应用 下一篇:浅谈“思想实验”与生物教学的结合