基于OpenGL的粒子系统的喷泉模拟
2018-07-12吴鸿基
吴鸿基
摘要:喷泉景物模拟可以被广泛地运用于能源、娱乐、游戏开发等等行业领域,但喷泉景物具有流动性、随机性,而粒子系统是目前模拟不规则模糊景物的最成功的算法。本文加入力场以及透明度,利用OpenGL底层图形库的高性能设计出高真实度粒子系统喷泉模型。最后通过在普通PC机上运用VS2010编程实现模拟,显示模拟图形具有很好的实时性和真实度,可以满足一般的动画需求。
关键词:粒子系统;喷泉模拟;OpenGL
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)14-0217-02
1 引言
人们不断寻求更多的人机交互的方法,自然景物的三维图形模拟也便成为其中非常热门的领域。而粒子系统就是目前被认为是模拟不规则模糊景物的最成功的算法。
1983年,Reeves[1]首次提出粒子系統的概念,这种算法拥有很好的动态性和随机性,是以往图形学中几何建模无法比拟的。万华根[2]等人提出了N-S方程的一个求解特例,用圆球作为粒子元模拟出喷泉,但计算复杂,计算量大。本文结合粒子的物理动力学,在基于OpenGL的环境下渲染粒子,以实现对于喷泉模拟高真实度的要求。
2 高真实度粒子系统算法
粒子系统主要分为以下几步[3]:生成新的粒子,粒子死亡,绘制粒子。如下图1所示。
1)生成适量的新的粒子:粒子会在系统中的一个点产生,生成后会被赋予其独立的属性,具体初始属性有如下几种:初始速度V、初始方向D、X方向初速度VX、Y方向初速度VY、Z方向初速度VZ、运动状态Type、粒子淡化[4]Alpha、粒子能在空中的最高高度H。
之后粒子开始运动,粒子的各项属性不断更新。粒子的位置从t0开始作为时间轴,每隔△t进行一次位置变换。
3)利用OpenGL函数绘制粒子:接下来要做的是将这些粒子制作成水滴的形状和颜色,因此可以运用3D彩色点渲染粒子。本文选择四边形作为基本纹理图案纹理映射。因为每个四边形都是不能被看到的,所以在坐标系中,所有四边形面片都设置为平行于XOY平面[5]。如下图1:
根据这四个顶点的坐标,再调用OpenGL函数进行纹理映射。OpenGL中函数glTexCoord可以用来设置纹理坐标,结合四边形坐标设置纹理映射位置。再调用OpenGL函数glVertex3f映射水滴的纹理图片,此时也就完成了对应的粒子纹理融合。
绘制过程中,当两个或多个四边形粒子重合时,通过启用opengl中的混合功能来使水珠粒子融合在一起:
以便让所有具有不同Z坐标(深度值)的粒子绘制并平滑地混合在一起。OpenGL函数的调用给粒子进行了绘制和融合,使模型的喷泉水滴更真实,水滴的运动过程符合客观规律,增强了粒子系统的真实度。
3 实验结果分析
结合粒子系统的原理以及OpenGL图形库在电脑上进行操作。先对粒子系统进行试验,设计粒子初始位置为屏幕的中心。初始最大粒子数根据多次试验,选取1000为最适合观察的数量。开始的粒子速度设定为随机,就会在粒子诞生后有一个爆炸效果,但因为设置的粒子加速度x轴为0,y轴为-0.8,z轴为0,粒子会出现统一向下的运动。设定粒子的颜色有红黄蓝三种颜色参数,设定三色参数随机改变,粒子系统也就形成彩色状态,最终形成下面图3产生的效果。根据初始状态进行试验,改变最大粒子数,选取了最大粒子数为100和10000的分别进行比较,如下图4是对屏幕内最大粒子数100和屏幕内最大粒子数10000的粒子系统效果比较。
粒子在运动过程中保持初始设定的加速度,粒子运动统一,增加粒子y轴的加速度,粒子呈现如图5的效果图,恢复初始状态后增加x轴加速度效果如图6所示
进行以上试验后,对于设定不同粒子各项参数产生的不同效果进行了了解,再开始设计喷泉的效果图。实验为喷泉模型,只设置重力作用,粒子系统内粒子加速度都设置为向下的重力加速度[6]。
可知水珠粒子的运动速度v和位置p
v为水珠粒子的当前速度,v0为水珠粒子的初始速度,g为水珠粒子的加速度,t为时间的变化,p为当前位置,p0为初始位置。
然后开始生成粒子并赋予粒子初始属性,粒子的初始速度全为垂直向上。最终就得到动态的数个喷泉,如图7所示。
得到的喷泉粒子具有随机性,喷泉模型具有动态感,粒子运动轨迹符合自然中喷泉水滴的重力场作用,粒子的落地消失也符合自然中喷泉水滴的客观规律。经过多次试验,选取的粒子最大量达到了真实度和计算效率的平衡,实现了模型对于真实度的要求。
4 结语
以上着重讨论对喷泉粒子系统在OpenGL环境下的建模方式,主要为:粒子的初始属性设定,粒子在生命周期内的运动,粒子的消亡以及粒子的绘制,加入重力场。实现出来的粒子系统具有动态性、高真实度。考虑粒子系统动态性,设计粒子系统内粒子数量范围以及粒子力场的建立是实现真实度的关键部分。粒子的Alpha参数带来的落地消亡效果更增强了喷泉的真实。最后,本文在撰写过程中,得到了本科学业导师李晖老师悉心的指导,在此特此感谢!
参考文献:
[1] Reeves W T. Particle systems a technique for modeling a class of fuzzy [J] Computer Graphies, 1983,17(3):359-376.
[2] 万华根,金小刚.基于物理模型的实时喷泉水流运动模拟[J].计算机学报,1998,21(9):774-779.
[3] 蒋恒恒,章国稳.利用粒子系统实现喷泉模拟[J].重庆邮电大学学报(自然科学版),2008,20(6):749-753.
[4] 谢剑斌,郝建新,蔡宣平,等.基于粒子系统的雨点和雪花降落模拟生成[J].中国图象图形学报,1999,4(9):734-738.
[5] 徐利明,姜昱明.基于粒子系统与OpenGL的实时雨雪模拟[J].计算机仿真,2005,22(7):245-245.
[6] 肖何,何明耕,白忠建,等.OpenGL中基于粒子系统的喷泉模拟实现[J].计算机仿真学报,2007,24(12):201-204.
[7] 罗维佳.基于粒子系统的三维场地降雨实时模拟[J].中国图像图形学报,2004,9(4):495-500.
[8] Szeliski Richard , Tonnesen David.Surface modeling with orient-ed particle system[J].Computer Graphics, 1992,26(4):185-194.
[9] Reynolds Craig W. Flocks, herds, and schools: A distributedbehavioral model[J].Computer Graphics, 1987,21(4):25-34