基于粒子系统与 OpenGL的实时雨雪模拟


收稿日期 : 2004 - 03 - 24   第 22卷  第 7期 计  算  机  仿  真 2005年 7月    文章编号 : 1006 - 9348 (2005) 07 - 0242 - 04 基于粒子系统与 OpenGL的实时雨雪模拟 徐利明 ,姜昱明 (西安电子科技大学计算机学院 ,陕西 西安 710071) 摘要 :自然景物的模拟一直是计算机图形学中最具挑战性的问题之一。关于水、云、烟、雨、雪等自然景物的模拟 ,在计算机 游戏、三维动画、影视及广告中有着广泛的应用。自然景观中雨、雪的模拟 ,可以大大提高三维场景的逼真度 , Reeves提出的 粒子系统是模拟雨、雪的一种有效的方法。论文在分析粒子系统实现原理的基础上 ,基于 OpenGL提出了一种在大型场景漫 游系统中实时模拟雨、雪的方法。基本思想是基于 OpenGL的多视口与色彩融合技术 ,把模拟雨、雪的粒子在一个新的视口 中视线有效区域内进行绘制 ,然后与原视口中的场景一起显示于窗口中。实践证明 ,该方法实现的雨雪模拟效果比较真实 , 而且在普通 PC上也可以满足一般动画的实时性要求。 关键词 :粒子系统 ;实时 ;视口 ;模拟 ;融合 中图分类号 : TP391. 9  文献标识码 : A Realtim e Sim ulation of Ra in and Snow Based on Particle System and O penGL XU L i - m ing, J IANG Yu - m ing (School of Computer Engineering, Xidian University, Xi'an Shanxi 710071, China) ABSTRACT: Simulation of natural phenomena has always been one of the most challenging tasks in computer graph2 ics. Simulating natural phenomena, such as water, cloud, smoke, rain, snow and so on, has been widely used in computer game, 3D animation, movie production and advertising, etc. Simulation of rain or snow in natural phenom2 ena can greatly improve the fidelity of 3D scene, particle system presented by Reeves is a powerful way to simulate them. A method for simulating real - time rain or snow in a big scene is p resented in this paper based on OpenGL af2 ter analyzing the realizing principle of particle system. The basic idea of the method is based on multi - viewport and color blending of OpenGL, it will render the particles of rain or snow within the eyesight in a new viewport, then shows them in the window togetherwith the scene in the previous viewport. The results show that the method is effec2 tive and efficient, and they can even meet the requirements of real - time animation under generic PC. KEYWO RDS: Particle system; Real - time; V iewport; Simulation; B lending 1 引言 近年来 ,诸如雨、雪、烟、火焰等自然景物的模拟一直是 计算机图形学中最具挑战性的课题之一 ,其模拟在计算机游 戏、影视、广告、视景仿真等各种领域中有着广泛的用途 [1, 2 ] 。 1983年 , Reeves首次提出了粒子系统 ,其优点在于可以用简 单的体素来构造复杂的物体 ,从而为自然现象的造型提供了 强有力的技术手段。 OpenGL作为一个高性能的图形和交互式视景处理的工 业标准 ,已经越来越为 3D工作者所接受 ,它是一个开放的三 维图形软件包 ,独立于窗口系统和操作系统 ,具有很好的移 植性 [3, 4 ] 。它所具有的强大功能使其在视景仿真方面得到了 越来越广的应用。 论文在分析粒子系统实现原理基础上 ,基于 OpenGL多 视口操作与色彩融合技术 ,采用一种简单的粒子模型 ,实现 了在大型场景漫游系统中生成实时的雨、雪效果 ,简单说 ,就 是使有限的雨、雪粒子始终绘制在眼点前。需要说明的是 , 该方法并没有对雨、雪过程建立精确的数学描述 ,注重的是 仿真的逼真度与系统实时性的结合。 2 粒子系统及其实现原理 粒子系统 (particle system)是迄今为止被认为模拟不规 则模糊物体最为成功的一种图形生成算法 [5 ] 。粒子系统采 用了一套完全不同于以往造型、绘制系统的方法来构造、绘 制景物 ,它并不是一个简单的静态模型 ,而是一种过程计算 模型。如果存在有效的物理或生理模型 ,物体的行为建模将 变得十分简单 ,只要实现当前的几何模型即可。 一个粒子系统由许多个称为粒子的简单体素构成 ,每个 —242— 粒子均具有形状、大小、位置、颜色、透明度、运动速度、运动 方向、生命周期等属性 ,而一个粒子究竟有什么样的属性 ,主 要取决于粒子系统用来模拟什么。粒子系统是不断进化的 , 是动态变化的 ,随着时间的推移 ,系统中不断有新粒子的加 入 ,旧粒子的死亡 ,系统中“存活 ”的粒子其位置及生命值亦 随时间变化而变化 ,其正常运行的关键是确定粒子的初始属 性、粒子的变化规律和绘制等因素。粒子系统的这些属性与 变化规律的可控性使粒子系统可以用来模拟许多动态自然 景象 (如雨、雪、烟、云、火焰等 )。 在粒子生命期的每一刻 ,都要完成以下五步工作 : 1)粒子源产生新粒子并赋予粒子属性后加入系统中。 2)根据粒子的动态属性对粒子进行移动和变换 ,同时更 新粒子属性。 3)判断粒子的生命值。 4)删除那些已经超过其生命周期的粒子。 5)绘制并显示由有生命的粒子组成的图形。 3 基于 O penGL 的雨、雪模拟 3. 1 实现的基本思想 在 OpenGL中 ,视口是窗口中的矩形绘图区 ,任何用于显 示的二维或三维形体都是在视口中绘出的。OpenGL提供了 绘制视口的库 函数 glV iewPort ( GL int x, GL int y, GL sizei width, GL sizei height) ,其中 x, y用来指定视口矩形的左下角 (以像素为单位 ) ; width, height用来指定视口的宽和高。 OpenGL支持在同一个窗口中建立多个视口 ,并可以对每个 视口利用不同的投影和视图变换绘制物体。对于场景漫游 系统中雨、雪的模拟 ,如果整个场景中都加入了用于模拟雨、 雪的粒子 ,可以肯定大量的系统资源都将花费在粒子的属性 更新与绘制等耗时操作上 ,没有实时性可言。模型重新定义 了一个与绘制场景的视口大小相同的视口 ,使该视口中所绘 制的物体始终处于观察者面前 ,并在这个视口中视线有效深 度范围内对模拟雨、雪的粒子进行操作 ,实质就是在该视口 中视线有效深度范围内 ,从一定高度的粒子源向下喷洒采用 OpenGL融合技术生成的雨、雪的粒子。如图 1所示是窗口 及实现不同功能的视口。 图 1 窗口及实现不同功能的视口 3. 2 采用 O penGL 融合技术生成雨、雪粒子 OpenGL中的绝大多数特效都与某些类型的色彩融合有 关 ,所谓融合就是将某个象素的颜色和已绘制在屏幕上与其 图 2 雨滴纹理与雪花纹理 对应的象素颜色相互结合 所产生的一种效果。至于 如何结合这两个颜色则依 赖于颜色的 Alpha 通道的 分量值与融合函数中源颜 色值与目的颜色值所占的 比例。Alpha (论文中称其 为淡化系统 )通常是 RGBA颜色模式的第 4个颜色组成分量 A。 在实现有生命粒子的绘制时 ,采用什么形状的粒子将会 影响系统的实时性。在这里 ,粒子系统是用来模拟雨、雪效 果的 ,为尽可能减少系统所绘制多边形的数量 ,将粒子简化 为矩形面片 ,然后采用 OpenGL的纹理融合技术 ,将雨滴和雪 花的二维纹理图片映射到矩形面片上 ,融合以后绘制在雨、 雪绘制视口中就是动态的雨、雪情景。模型中采用的雨滴与 雪花图片均是 32 × 32的 24位 BMP图片 ,雪花图片可以从贴 图图库里找到 ,雨滴图片可以采用自制的 ,要求两幅图片必 须是黑色背景 (可以用 photoshop处理得到 ) ,白色纹理。如 图 2所示就是用于模拟雨、雪粒子的纹理图片。 3. 3 实现过程 确定雨、雪粒子的属性后 ,按照粒子系统工作原理对粒子 进行操作 ,将有生命粒子绘制在视口中即实现雨、雪的实时模 拟。图 3是模型中模拟雨、雪过程的粒子系统工作流程图。 图 3 粒子系统工作流程图 3. 3. 1 雨、雪粒子属性的确定 由物理学知识可知 ,物体从高空下落时 ,将受到空气阻 力作用 ,这种阻力与物体的大小、形状和速度等有关 ,速度越 大 ,阻力越大。从空中下落的陨石、雪花、雨点等 ,只要高度 足够 ,最终都将做匀速运动。论文中将雨滴与雪花的下落过 程均简化为匀速下落 ,速度分别为 V1 与 V2 ;粒子每时每刻 都会有不同的位置 (X, Y, Z) ;雪花下落时的飞舞飘扬与雨点 的随机性 ,可以用粒子下落过程中 X轴与 Z轴方向上的随机 —342— 增量 XD与 ZD给定 ;当雪花落到地上时 ,有个淡化消失的过 程 ,这个属性可以通过使淡化系数 A lpha逐渐减小来模拟 ; 粒子是有生命的 ,其生命值是 T,这个值随着粒子的下落逐 渐减小 ,直到粒子落到地面后减小为 0,并用布尔量 Type来 表示粒子是处于运动状态 (T > 0)还是淡化过程 ( T < = 0)。 粒子所具有的这些属性可以被定义成一结构体类型 ,如 下所示 : struct Particle  /3 雨、雪粒子结构体 3 / {   float T;     /3 粒子的生命期 3 /   float V1 与 V2 ;   /3 粒子的运动速度 3 /   float X, Y, Z;    /3 粒子的位置坐标 3 /   float XD, ZD;  /3 粒子的在 X和 Z方向的随机增 量 3 /   BOOL Type;  /3 粒子类型 (运动中或淡化中 ) 3 /   float A lpha;  /3 粒子淡化系统 3 / } 3. 3. 2 粒子的初始化 每个粒子都有一定的生命期 ,赋予每个粒子一个生命值 T(为一正数 ) ;由于粒子做匀速下落 , V1 与 V2 为常数 ,只是 雨滴下落速度 V1 要大于雪花下落速度 V2 ;有生命的粒子其 类型值 Type = TRUE,淡化系数 A lpha = 1. 0;粒子由雨、雪绘 制视口中的九个固定位置的粒子源产生 (如图 4所示 ) ,其初 始位置 (X, Y, Z)的坐标值为 : X = { - width /2, 0,width /2} Y = T3 V Z = { - width /2, 0, - width} 其中 ,width为视口的宽度 , T为粒子的生命值 , V为粒子 下落速度 (雨粒子 V1 ,雪粒子 V2 ) 。每个粒子在 X轴方向与 Z轴方向都有一个随机增量 XD与 ZD,其值由随机数产生 : XD = cos( (D 3 π) /180) 3 rand ( ) % a ZD = sin ( (D 3 π) /180) 3 rand ( ) % b 其中 ,D = rand ( ) % c也是一随机数 , a, b, c为常数。 3. 3. 3 粒子属性的更新 图 4 粒子源分布图 场景中 ,粒子系统 运行后 ,粒子的位置不 断发生变化 ,粒子的生 命值不断减小。如果 T > 0,则 Type = TRUE,否 则 , Type = FALSE。如 下所示是粒子属性更新 伪代码 : if( Type = TRUE)  { X + = XD; Y =V3 T (V =V1 或 V2 ) ; Z + = ZD; T - = d ( d为正数 ) ; if(T < = 0) Type = FALSE ; } else  { Y =V3 T; /3 粒子停在这个位置并开始淡化 3 / A lpha - = 0. 1; } 模拟雨的过程时 , X方向与 Z方向的随机增量比模拟雪 时要小 ,且不需要淡化过程 ,可将 A lpha值直接置 0值。 3. 3. 4 死亡粒子的消除 用粒子系统模拟雨、雪过程 ,就不断会有新粒子的产生 与旧粒子的死亡 ,应及时地把已经死亡的粒子从系统中删除 以释放系统资源。当粒子类型 Type = FALSE ( T = 0时 )与粒 子淡化系数 A lpha < = 0同时成立时 ,表示粒子已经死亡 ,将 其从系统中删除。 3. 3. 5 雨、雪粒子的绘制 雨、雪实时模拟时 ,粒子的绘制是关键的一步。每个粒 子表示一个雨滴 (或雪花 ) ,前述已经提到雨、雪粒子采用 OpenGL纹理融合技术生成 ,就是将雨、雪纹理图片映射到表 示粒子的矩形面片上后融合而成。粒子绘制时 ,视线范围内 的每个雨、雪粒子都应该能被看到 ,这就要求用于表示粒子 的每个矩形面片要平行于 XOZ平面。设矩形面片边长为 L, 又已知粒子坐标为 (X, Y, Z) ,如图 5所示 ,则可求出矩形面 片的四个顶点坐标 : x1 = X - L /2; y1 = Y - L /2; z1 = Z; x2 = X +L /2; y2 = Y - L /2; z2 = Z; x3 = X +L /2; y3 = Y +L /2; z3 = Z; x4 = X - L /2; y4 = Y +L /2; z4 = Z; 图 5 粒子的矩形面片表示 求出矩形面片的四 个顶点坐标后 ,设置当 前纹理坐标 glTexCoord {1234}{ sifd} [ v] ( TYPE coords) , 然 后 调 用 gl2 Vertex3f ( ( GLfloat ) x, (GLfloat) y, ( GLfloat) z) ,即可将雨滴纹理 (或 雪花纹理 )映射到矩形 面片上 ,融合后即是雨 滴 (或雪花 )。视景仿真中 ,场景的渲染往往有助于增强物体 的逼真度。雨、雪过程模拟时 ,场景中加入雾化效果能使雨、 雪粒子随着远离视线而淡入 ,显得更自然、更真实。如图 6所 示为场景中雨的模拟 ,图 7所示为场景中雪的模拟。 4 模拟结果 在粒子系统的基础上 ,基于 OpenGL提出的雨、雪模拟方 法 ,通过在场景漫游系统中的应用 ,证实了在实时性与逼真 度方面都收到了比较好的效果。在大型场景中雨、雪过程的 模拟 ,其实时性主要是通过有限的粒子数与简单的粒子模型 实现的。模拟时 ,可以通过程序交互控制系统中粒子数量 , 以达到场景需要的雨、雪大小要求。模拟是在配置为 Celer2 on2. 0GHz的 CPU、DDR256M 内存及 Geforce4 (64M )显卡的 PC机上进行的 ,当场景漫游系统中动态粒子数达 360时 ,场 景漫游系统仍能以 24帧 /秒的速度进行漫游 ,基本不影响系 —442— 图 6 场景中雨的模拟 图 7 场景中雪的模拟 统实时性。 5 结束语 基于粒子系统的不规则物体模拟与视景效果模拟是一 项复杂的课题 ,本文所实现的雨、雪模拟是从系统实时性与 模拟逼真度出发提出的一种实现方法 ,该方法虽在实时性与 逼真度方面都取得了一定的效果 ,但模拟时所建立的物理模 型相对较简单 ,没有考虑复杂气象情况下的雨、雪特征 ,在以 后的工作中可以在考虑这些因素的基础上建立模型 ,实现更 逼真的雨、雪模拟。 参考文献 : [ 1 ]  杨怀平 ,胡事民 ,孙家广. 一种实现水波动画的新算法 [M ]. 计 算机学报 , 2002, 25 (6) : 612 - 617. [ 2 ]  尹勇. 自然现象的实时仿真 [ J ]. 系统仿真学报 , 2002, 14 (9) : 1217 - 1219. [ 3 ]  乔林 ,等. 程序设计 OpenGL [M ]. 北京 :清华大学出版社 , 2000. [ 4 ]  杨鹏. 基于 PC的虚拟地形漫游系统的实现 [ J ]. 计算机仿真 , 2003, 20 (7) : 78 - 80. [ 5 ]  彭群生 ,等. 计算机真实感图形的算法基础 [M ]. 北京 :科学出 版社 , 2003. [ 6 ]  和平鸽工作室. OpenGL 高级编程与可视化系统开发 [M ]. 北 京 :中国水利水电出版社 , 2003. [ 7 ]  向世明. OpenGL 编程与实例 [M ]. 北京 : 电子工业出版社 , 1999. [作者简介 ] 徐利明 (1975 - ) ,男 (汉族 ) ,山西省五台县人 ,硕 士研究生 ,主要研究方向为图形图像处理与计算机 仿真技术 ; 姜昱明 (1949 - ) ,男 (汉族 ) ,陕西省米脂县人 ,副 教授 ,硕士 ,硕士生导师 ,主要研究方向为图形图像 处理与计算机仿真技术。 (上接第 203页 ) θ2 = - 45°,θ3 = - 60°,θ4 = - 60°,带入上式 , dx = - 443,与图 6中的曲线在时间为 10时的纵坐标值相同。因此 ,可以说明 , 此曲线图可以正确反映真实的运动情况。 7 结论 机构的运动学、动力学、受力分析等问题都可以通过 ad2 am s软件仿真得到结果 ,而且十分方便。但 adam s中三维造 型能力差 ,真正准确的仿真实体相当麻烦 ,而且只要质量、质 心等参数符合实际就可以得到实际效果 ,所以就尽力简化模 型。当然 ,如果要使效果更好 ,可以在 PRO /E中造型 ,然后 再引入 adam s中进行运动分析。 参考文献 : [ 1 ]  罗阿妮. 敏捷供弹技术及仿真研究 [D ]. 哈尔滨 :哈尔滨工程大 学硕士论文 , 2003. [ 2 ]  刘贺平. SIWR - II型水下机械手的误差分析、路径规划及计 算机仿真 [D ]. 哈尔滨 :哈尔滨工程大学硕士论文 , 2003. [ 3 ]  刁彦飞 ,等. SIWR - II星水下机械手的误差分析与综合 [ J ]. 哈 尔滨 :哈尔滨工程大学学报 , 2003. [ 4 ]  王国强 ,等. 虚拟样机技术及其在 ADAMS上的实践 [M ]. 西 安 :西北工业大学出版社 , 2002. [ 5 ]  马香峰. 机器人机构学 [M ]. 北京 :机械工业出版社 , 1991. [ 6 ]  熊有伦. 机器人技术基础 [M ]. 武汉 :华中理工大学出版社 , 1997. [作者简介 ] 罗阿妮 (1978. 2 - )女 (汉族 ) ,陕西省咸阳市人 ,哈 尔滨工程大学在读博士 ,主要研究方向 :机械设计及 理论 - 现代设计及制造理论与方法 ; 张家泰 (1943. 9 - ) ,男 (汉族 ) ,江苏人 ,教授 ,博士 生导师 ,长期从事现代机械设计理论、数据交换技 术、企业信息化的教学和研究工作 ,现任中国造船工程学会水面兵器 学术委员会副主任委员 ; 刘贺平 (1975. 4 - ) ,男 (汉族 ) ,黑龙江省佳木斯市人 ,哈尔滨工程大 学在读博士 ,主要研究方向 :控制理论与控制工程 - 机器人技术。 —542—
还剩3页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf