基于OpenGL喷泉粒子系统设计与实现

2016-05-23 10:00刘韬
科技视界 2016年11期
关键词:粒子系统喷泉

刘韬

【摘 要】虚拟场景中的自然景物模拟已经成为计算机图形学的一个研究热点。使用粒子系统能够相对充分地体现自然景观中模糊物体的随机性和动态性,得到良好的模拟效果。本文结合实际情况,在深入分析粒子系统理论基础上,结合Windows XP和Microsoft VC++6.0编译环境为开发平台,基于OpenGL图形库设计并实现了一个用于常见自然景物模拟的3D粒子特效系统,完成了喷泉的模拟。

【关键词】粒子系统;喷泉;OpenGL

【Abstract】Nature sceneries simulation in virtual scene has been research highlight of Computer Graphics. The particle system can sufficiently reflect the dynamicity and randomness of the fuzzy objects which can simulate these complex three-dimensional nature sceneries.So,the thesis developed a three-dimensional particle special effects system for usual nature sceneries simulation.Which used Windows XP and Microsoft VC++6.0 compiler environment respectively as development platform,OpenGL as its graphics library,and particle system theory as its theoretical basis.It finished the simulatons of nature sceneries fountains.

【Key words】Particle system; Spraying fountains; OpenGL

0 引言

本文重点研究了OpenGL 三维图形开发一些关键技术的实现方法与步骤。通过OpenGL 与VC++6.0 编程开发实现了三维喷泉场景模型的一个实例,在实例中综合运用灯光、材质及纹理效果构造了一个逼真的三维喷泉场景模型场景,并实现了一些常用的交互操作功能。

1 喷泉粒子的属性具体分析

下面,将结合喷泉模型来介绍喷泉粒子的各个属性:

(1)喷泉粒子的空间位置属性

喷泉粒子系统中所模拟的喷泉具有特定的位置,并非要布满整个可视区域。日常生活中我们所看见的喷泉通常都是往上喷出,并以抛物线的形式喷射。因此,喷泉所喷射出的每一颗粒子都是相对均匀的分布在一个圆柱体的内。喷泉的喷头一开始喷射出来的是竖直向上的水柱,因此需要通过相应的算法在VC++6.0平台上利用OpenGL的代码 将喷泉粒子初始化,并且分布设定的圆柱体内,为了使粒子产生的位置看起来是从同一个一个中心点喷出的,设定的圆柱体的轴心必须与显示空间的y轴平行。喷泉粒子分布如图1所示。

(2)喷泉粒子的运动属性

喷泉的水柱通常是从喷头里面垂直向上的喷出来的,但是每一颗粒子在虚拟系统里面又是需要配置相应的重力属性,这要它才能够像现实中的水粒子,受到重力的作用,落到地面。每颗粒子从喷头喷射出都做自由落体运动,直到降落到水池中完成循环。每颗粒子的初始化后的速度为:

公式中的R和r分别为喷泉粒子系统设定的圆柱体的半径和每颗喷泉粒子到圆柱体中心轴的距离,θ为散射角,如图2所示。

是变化不确定的速度,由相应的算法通过代码的确定的速度与方向。

(3)喷泉粒子的生存属性

喷泉的粒子也是存在生存属性的,可以通过循环的算法来控制粒子的生存属性,例如喷泉粒子在粒子系统中正常的运动,随着时间的推移,粒子的生命周期到期时就自然消亡,并且系统自动删除死亡粒子;还有就是粒子的运动范围超出了喷泉粒子系统所设定的圆柱体的范围,则粒子就自然消亡,系统自动删除死亡粒子。

2 喷泉粒子的运动轨迹分析

喷泉粒子在喷泉粒子系统中运动的力学分析,每颗粒子就如同现实中一样,在垂直方向是受到地球引力和空气阻力的合力,次合力的方向向下,而在水平方向可以通过风力来影响每颗粒子的运动方向。可以根据风力的随机性,在x轴方向和z轴方向上进行力学分解,然后通过算法和代码来实现系统中风力的不确定性。

为了准确的描述喷泉粒子运动可以通过以下公式的解释:

每颗粒子速度的方向由P和Y表示,V是每颗粒子的最初速度,R则是[0,1]之间的任意值,Var是每颗粒子速度的变化范围,Rand(Var)是取[-Var.Var]内的任意速度值,分别是每颗粒子的初速度的方向与X,Y,Z轴之间的夹角,θ是每颗粒子所散射的角度,Rand 取 内的任意角度。

通过对每颗粒子的力学分析,粒子所受合力是由地球引力G、空气阻力f以及风力w的合力,在合力的作用下,每颗粒子的位置和速度都在随机的,在t1+t2这段时间内每颗粒子的速度v(vx,vy,vz)和空间位置p(px,py,pz)分别表示为:

式中,v(vx,vy,vz)表示t时刻喷泉粒子的速度;p(px,py,pz)表示t时刻喷泉粒子的位置,WinV表示风力的速度,α表示水平方向上风向的角度,f表示空气的浮力,Rand(θ)是随机函数,表示风速干扰量。

3 喷泉粒子系统实现的工作流程图(图3)

4 结论

本文是基于OpenGL的喷泉粒子系统设计与实现,使用户在客户端(vc++ 6.0工具)就能实现喷泉粒子系统的查看、以及对喷泉粒子系统的相关控制。在研究本设计过程中,需求阶段,本文主要分析本系统所面向的用户,从用户的角度去分析功能。在完成了基本的功能设计同时,成功之处总结如下:

(1)通过在VC++6.0平台上,利用OpenGL相关的函数,对喷泉粒子系统的场景的绘制,包括,地面,以及水池台的绘制。

(2)通过在VC++6.0平台上,利用OpenGL相关的函数,成功实现了,对喷泉粒子的初始化的渲染。通过创建一个摄像机模块,实现了用户可以在喷泉粒子系统的场景漫游,从多角度观看喷泉外形。

【参考文献】

[1]齐治昌,谭庆平,宁洪.软件工程[M].高等教育出版社,2006,4.

[2]Scott Meyers.Effective C++[M].华中科技大学出版社,2001,9.

[3]张芹,谢隽毅,吴慧中,等.火焰、烟、云等不规则物体的建模方法研究综述[M].电子工业出版社,2000,5.

[4]马骏,朱衡君.基于动态纹理和粒子系统的喷泉模拟[M].北京交通大学出版社,2005,2.

[5]Samuel R. Buss.3D计算机图形学(OpenGL版)[M].清华大学出版社,2006,10.

[6]郭兆荣,李菁,王彦.[Visual C++ OpenGL]应用程序开发[M].人民邮电出版社,2006,6.

[7]秦培煜,陈传波,等.基于物理模型的水波动画[M].电子工业出版社,2000,6.

[责任编辑:杨玉洁]

猜你喜欢
粒子系统喷泉
利用GPU加速的粒子系统全球流场可视化系统设计与实现
可乐瓶里的“喷泉”
UE 4粒子系统与外部数据通信研究
为什么鲸的背上有“喷泉”
喷泉冲凉
可乐喷泉
自制喷泉
粒子系统在航海应用上的展望*
基于粒子系统的建模与仿真综述
GPU支持下基于粒子系统编辑器的特效技术研究