基于虚拟环境的实时降雨模拟研究

2015-07-26 02:29刘芳王宝华王聃刘宗堡
微型电脑应用 2015年8期
关键词:粒子系统水波纹虚拟环境

刘芳,王宝华,王聃,刘宗堡

基于虚拟环境的实时降雨模拟研究

刘芳,王宝华,王聃,刘宗堡

降雨是一种十分重要的自然景物,在虚拟环境中提高降雨模拟的效率和真实感可以很大程度地提高虚拟环境的渲染速度和沉浸性。基于粒子系统理论设计并实现了虚拟环境中的实时降雨模拟。通过分析雨滴粒子的实际运动过程,给出了雨滴仿真模拟的静态属性和运动模型。通过对雨滴运动行为的分析给出了雨滴模拟有风时雨滴自由降落运动模型和无风时雨滴匀速降落运动模型。就风对雨滴的干扰作用进行计算,给出了简化的阵风和稳定风的数学模型。雨滴落入水面会形成水波纹,针对已有的水波纹模拟方法的不足,采用线性水波纹模拟算法进行模拟,经实验验证模拟效果真实自然,实时性高,有一定的实用价值。

虚拟环境;降雨;降雪;粒子系统

0 引言

随着虚拟现实技术的日趋成熟,虚拟环境中的自然景物模拟技术因其模拟本身的复杂性而得到广泛关注[1]。雨是虚拟环境中较为常见的一种自然景物,降雨的模拟广泛应用于游戏、漫游等虚拟现实领域,所以对于降雨模拟的研究有着非常重要的理论价值和应用价值。为了得到符合自然规律,真实可信的模拟效果,本文采用物理模型作为绘制算法的基础,通过分析雨滴粒子的实际运动过程,给出了雨滴仿真模拟的静态属性和运动模型。通过对雨滴运动行为的分析给出了雨滴模拟有风时雨滴自由降落运动模型和无风时雨滴匀速降落运动模型。就风对雨滴的干扰作用进行计算,给出了简化的阵风和稳定风的数学模型。同时,针对降雨过程的不规则性,本文采用有一定随机性的粒子系统算法,由粒子的产生、演变和消亡来体现不规则景物的变换过程,利用简单易绘制的基本体素来构造千变万化的景物。如beaudoin在火焰三维骨架内建立速度场,模拟了火焰的燃烧过程[2];丁纪云基于粒子方法设计并实现了烟花的动态效果[3];吴继承利用系统应用程序接口利用粒子系统获得了粒子喷泉的动态景观[4]。因此本文选择以物理模型为基础的粒子系统来实时模拟降雨过程,并对雨滴落入水面形成的水波纹采用线性模拟算法,最后获得较为真实的模拟效果。

1 粒子系统概述

1983年Reeves提出粒子系统理论并提出用该理论模拟诸如雨、雪、烟雾、火焰等不规则物体[5]。该方法为不规则物体的模拟提供了很实用的一种思路,也是目前模拟不规则物体尤其自然景物的常规有效方法。粒子系统的基本思想是把不规则模糊物体看作是由众多粒子组成的粒子团,粒子团中的每个粒子均有自己的属性,粒子随时间的推移不断运动并根据所模拟的景物的动力学属性来改变自身的状态[6]。

在基于粒子系统方法进行模拟的过程中,如果对粒子处以相同的算法就会产生规则的图形图像[7],具有较强的人工痕迹,为了避免这个问题,在用粒子系统解决问题的过程中通常会引入“随机处理方法”,这个随机处理思想会体现在基于粒子系统方法模拟生成图像的整个过程中,如图1所示:

图1 粒子系统方法生产单帧图像的过程

在生成新粒子过程,例如粒子产生的位置、数量和时间都是随机的;新粒子的静态属性包括粒子的大小、颜色、形状以及生存周期等的设置都引入随机变量,粒子的动态属性如速度、加速度和方向等属性也都随机处理。最后粒子的死亡即粒子的消失处理:一种处理方法是在生命周期已经减少到零,则我们认为粒子消失;另一种是运动到渲染边界外。对于第一种情况,就要在粒子属性中的生命周期属性的设置上引入随机变量,才会产生自然死亡的画面效果。也就是说在每个粒子的“产生”、“活动”和“死亡”过程中,都要进行随机性处理。

2 基于粒子系统的降雨模拟

基于粒子系统的方法模拟实时降雨,要充分考虑实时性,其逼真度等因素,因此,在对粒子系统深入理解的基础上,通过雨滴模型的建立,雨滴粒子运动过程的精确计算及运动模型的简化等方法来实现降雨模拟。

2.1 雨粒子的基本属性:包括外观、空间、运动、生命周期等。

在雨的形状方面,国内外的学者做过很多尝试,有使用线条来描述的,也有使用楔形或者立体四棱锥来描述的[8]。在实时渲染的系统中,静态属性在一定程度上要为运动模型服务,因此,本文采用正方形面片来表示雨滴粒子的形状,利用OpenGL纹理映射和色彩融合技术生成真实的雨滴。

雨的大小:粒子的尺寸不是固定的,这里引入方差变量sizedelta来表示雨粒子的方差,同时引入[-1,1]上的随机函数rand()来做随机性处理,用sizesnow来表示雨粒子尺寸的均值。

第i个雨粒子的大小描述如下:

雨粒子的均值和方差都是经验值,通过反复实验,观察场景的降雨的效果,本文确定的尺寸均值为 0.05f;尺寸的方差为0.01f。

雨滴产生的位置:为了便于计算,在不显著影响实时性的前提下,对初始化分布算法进行适当简化,将雨粒子分布区域由视锥所构成的棱台简化为眼前的一个长方体,即产生于虚拟场景中的矩形天空里。如图2所示:

图2 雨粒子产生位置

雨滴粒子的运动属性包括位置和速度,这些设置在雨滴粒子的运动模型中进行阐述。

根据上述分析,雨粒子的数据结构如下:

2.2 雨粒子的运动模型

雨的动力学行为较为复杂,为了适合模拟的需要,本文对雨的行为做如下简化假设,以方便模拟[9]。

(1)在下降过程中,下降速度较快的雨滴与下降速度较慢的雨滴相遇后不会发生聚合。

(2)在下降过程中,当空气阻力超过了使雨滴保持整体的分子内聚力时,雨滴不会发生分裂现象。即雨滴的大小在下落的过程中不发生改变。

(3)假设雨滴在经过加速降落状态后均达到匀速极限速度,并保持这一速度运动。

经过模拟比对建立了雨粒子的运动模型包括无风时雨滴自由降落运动模型,无风时雨滴匀速降落运动模型。

无风时雨滴自由降落运动模型:

模拟计算中取雨滴密度ρ=1000k g/m3,空气密度ρ=1. 22kg/m3,时间步长h = 0.02s,重力加速度g= 9. 8m/s2,空气运动粘滞系数v=1. 493776×10-5m2/s ,计算精度控制速度误差小于0. 0002m/s时认为已达到匀速降落。根据数值模拟计算结果与实测雨滴速度比较,当雨滴直径d <1.5mm时,雨滴形状能近似保持圆球形。

无风时雨滴匀速降落运动模型:

上式为雨滴达到匀速降落时的极限速度分段公式,其中雨滴直径d以mm为单位,速度v以m/s为单位。根据雨滴降落运动微分方程

它们是雨粒子不断运动的动力。

2.3 雨粒子在风场作用下的模拟

雨在空气中除了受到垂直方向的重力影响外,水平方向还会受到风力影响。本文给出两种常见简化的风力模型;阵风和稳定风。阵风指的是风力从零开始逐渐加大,达到顶峰后,然后再逐渐衰减至零。稳定风是指风力增加至一定程度后保持该强度并存在微小的变化最后逐渐衰减至零。

经简化的两种风力模型的数学表示如下:阵风函数:

稳定风函数:

其中,tc为时间常数,a、b、c、d、e、f可根据实际情况考虑赋予不同的数值,本文对阵风模型选取a=c=d=1,b=0;对稳定风a=c=e=f=1,d=0.3。

对粒子加上风场的影响后,能够明显增强虚拟环境的真实感。

2.4 雨粒子的绘制

基于上述运动模型,本文选择圆球体作为雨粒子的基本形状,但是OpenGL绘制球体会采用较多的三角形面片,这样会增加粒子绘制的开销,在同等条件下试验,采用真实绘制球形粒子的帧频为20帧/秒,而采用正方形粒子绘制的帧频为80帧/秒,因此,雨粒子的绘制采用基于OpenGL二维纹理映射的方法来实现[10]。如图3所示:

图3 雨粒子的纹理映射

为了增加真实感可以再虚拟环境中加入雾化效果,距离视点较近的景物相对清晰,而远处的景物会随着距离的增加变得越来越模糊,使用雾化能够显著的增加视觉效果的真实感,深度感。本文对降雪环境的雾化模拟选择的模式。f为雾化方程的混合因子。可用于模拟自然界的雾现象,使整个环境看上去较为均匀[11]。

3 雨滴落入水面的水波纹模拟

当雨滴落入水面的时候,会在落点处的局部水面产生同心圆形状的水波纹,传统的水波纹模拟方法有基于波的分析[12]和基于物理模型的波浪模拟[13],基于波函数的水波纹模拟人工痕迹较为明显,而基于物理模型的模拟速度较慢不适合实时渲染的虚拟环境,因此,本文在实现水波纹模拟时,采用线性模拟算法。假设,在某一时刻水面某点的振幅由该点周围的8个点以及该点自身的振幅来决定。如图4所示:

图4 八点水波纹拟八点分布示意图

建立水波线性计算公式(1):

理想条件下,可设水的阻力为 0。根据能量守恒定理,水的总势能保持不变,即在任何时刻,所有点的振幅之和保持不变,因此对于to和t1时刻应有公式(2):

由于上式中的某些点的数值超出了范围,因此要改用该点对应的边界点的振幅值进行近似计算,例如可假设:

由此假设,进行第一步合并,可得:

由此假设,进行第二步合并,可得:

将上述解代入式(1),最终得到水波纹振幅线性计算公式(4):

从式(4)可推广到一般情况,得出一般结论:已知某一时刻水面上任意一点的振幅,则该点下一时刻的振幅等于与该点紧邻8点的振幅之和除以4并减去该点的原振幅。

水波的产生需要波源,在降雨模型中,水波的波源是雨滴,当雨滴落入水面后记录下雨滴的水平坐标位置,就是水波的波源。另外,程序中WAVEY和WAVX的选取也与降雨模型中,雨滴的初始化产生的水平位置及大小有关。程序中的damp为衰减率,damp=1/2n通过实验得知n的取值范围在5~9之间较为合适。

4 系统的实现

本文采用图形开发库 OpenGL和 Visual Studio.NET 2010作为开发环境中,Windows XP操作系统作为开发平台进行了实验。渲染效果图如下:虚拟环境中降雨渲染效果图;如图5所示:

图5 虚拟环境中降雨渲染效果图

引入风场之后有风时的降雨效果图;

如图6所示:

图6 有风时的降雨渲染效果图

雨滴流入水面,通过线性水波纹算法模拟出来的带破碎效果的水波纹模拟。如图7所示:

图7 水波渲染效果图

5 总结

本文介绍了粒子系统,研究了基于粒子系统理论的实时降雨模型、分析了雨滴粒子的静态属性和动态模型,通过对雨滴粒子的运动行为的分析给出了无风时雨滴自由降落运动模型和无风时雨滴匀速降落运动模型,引入阵风和稳定风后,给出了风场模型。针对雨滴落入水面形成的水波纹问题进行研究,提出了适合实时渲染虚拟环境的线性水波纹模拟算法,模拟效果良好。

[1] 张芹,谢隽毅,吴慧中,等. 火焰、烟、云等不规则物体的建模方法研究综述[J].中国图象图形学报,2000,5(3):186-190.

[2] PBeaudoin,SPaquet,PPoulin.RealisticandControllableFire Simulation[C].ProceedingsofGraphicsInterface,Ottawa,20 01.159-166.

[3] 丁纪云,陈利平,李思昆.基于 OpenGL的烟花动态模拟方法的研究与实现[J].计算机工程,2002,28(4):240-241 ,275.

[4] 吴继承,江南.虚拟现实中粒子系统的设计与应用[J].计算机仿真,2004,21(11):131-140.

[5] Reeves W.T.Particle System-A Technique for Modeling A Class of Fuzzy Objects[J].Computer Graphics,1983, 17(2):359-376.

[6] 徐利明,姜昱明. 基于粒子系统与 OpenGL的实时雨雪模拟[J].计算机仿真,2005,22(7):242-245.

[7] 王静秋.基于粒子系统的动态自然景物模拟的研究[D].南京:南京航空航天大学,1999.

[8] 邵雪辉,王宝钧,王建国.关于雨滴问题的几点思考[J].河北北方学院学报:自然科学版,2005,21(2):10-11.

[9] 罗维佳,都金康,谢顺平.基于粒子系统的三维场地降雨实时模拟[J].中国图象学报,2004 ,9(4):495-500.

[10] 左鲁梅,黄心渊.纹理映射技术在三维游戏引擎中的应用[J].计算机仿真,2004,21(10):146-148.

[11] 刘芳,刘贤梅.基于粒子系统和雾化的实时降雪模拟[J].微计算机应用,2011,32 (7):1-5.

[12] 陈和平,王早.水波特效模拟原理及其快速实现方法[J],计算机应用研究,2005,22(4):252-253.

[13] 徐迎庆,齐东旭.基于物理模型的流水及波浪模拟[J].计算机辅助设计与图形学学报.1997,9(2):191-192.

Tp391 文献标志码:A

2015.04.24)

1007-757X(2015)08-0034-03

刘芳(1983-),女,东北石油大学,计算机与信息技术学院,讲师,硕士,研究方向:虚拟现实与多媒体技术,大庆,163318王宝华(1980-),男,大庆地质录井一公司资料解释评价中心,工程师,硕士,研究方向:计算机应用,大庆,163411王聃(1982-),女,哈尔滨石油学院,信息工程与计算机技术系,讲师,硕士,研究方向:计算机应用,哈尔滨,150027刘宗堡(1982-),男,东北石油大学,地球科学学院,副教授,博士,研究方向:地质建模,大庆,163318

猜你喜欢
粒子系统水波纹虚拟环境
山东诸城发现水波纹遗迹化石和恐龙足迹化石点
前庭刺激对虚拟环境三维空间定向的影响及与空间能力的相关关系
如何通过虚拟环境有效管理Python第三方库
利用GPU加速的粒子系统全球流场可视化系统设计与实现
瓷上波涛
水纹图案研究
UE 4粒子系统与外部数据通信研究
虚拟环境下大数据智能并行聚类方法研究
浅谈30m预制箱梁水波纹控制
论高校思想政治教育网络虚拟环境的特征