白云菲
(中南民族大学计算机科学学院 湖北 武汉 430074)
在高质量图形的实时生成要求下,如何从软件方面着手减少图形画面的复杂度,已成为VR图形生成的主要目标。研究人员提出多种图形生成加速方法,细节层次(Levers of Detail,LOD)模型就是其中一种主要方法。传统几何建模中,一般的LOD技术的原理是根据物体距离视点的远近来决定所建模型的顶点数目[2]。对于粒子系统,我们可以结合LOD技术,进行物体模拟,即当视点较近时,每次产生较多的粒子,视点较远时,则可以产生较少的粒子,从而对粒子模拟进行简化,减少系统计算量,提高绘制效率。丁强等人提出的基于LOD技术的火焰模拟[3],能够在减少计算量的基础上,对火焰进行较好地模拟,但是,简化后的图像并没有根据视觉特征效果对粒子系统进行精简,据此,本文基于火焰几何模型中粒子的视觉重要度,对该技术进行了改进,在模拟火焰燃烧方面,能够达到更好的效果。
对粒子属性的初始化设置一般可以通过简化的随机过程来控制[4],对于每一个属性首先确定其变化范围,然后在该范围内随机地确定它的值,随机性效果可以通过具有一定的概率分布随机函数来产生,进而影响粒子系统的整体外观轮廓,属性的变化范围则由给定的平均期望值和最大方差来确定,其基本表达式为:
(1)式中Value为任意一个需要随机确定的粒子属性值;MeanVlaue为该属性的平均值;Rand()为[-1,1]中的随机数函数;VarValue为方差,即属性在平均值附近的变化范围。在火焰粒子系统中初始的位置、初始的运动速度、受力都可以由式(1)式来直接生成。
粒子的属性变化构成了粒子的运动变化,对于透明度和颜色、生命值、粒子大小等属性,通过式(2)[5]进行控制:
式中,ValueStart为粒子系统该属性的初始值,ValueEnd为此粒子终止时的属性值,LifeTime为粒子的寿命值,TimeDelta则为此帧与上一帧的时间跨度值。某一帧粒子的位置可以由其速度和上一帧的位置得到。
(3)(4)式中P为位置,V为速度,A为加速度。计算粒子系统的总体受力算法[6]如下:
I:计算当前粒子各个方向受力情况;
II:根据受力求出加速度;
III:利用(3)(4)式求出速度与位置的改变。
在粒子生成步骤中,结合LOD(层次细节)模型,对粒子系统产生新粒子的数目值设置为:
上式中,N0表示没有进行简化的原始几何模型的顶点数,Nm表示第m级简化模型的顶点数。粒子系统中,在距离Lm产生的粒子数均值作为Nm。即当视点较近时,每次产生较多的粒子,视点较远时,则产生数量线性较少的粒子,这样就降低了很多计算机处理的时间,提高了系统的绘制效率。
上述方法实现了计算量的降低,但是,并没有对粒子的视觉重要程度进行判断,只是线性地根据距离减少粒子的生成数量。顶点视觉重要度决定了顶点的凹凸几何特性,在三维场景渲染中,凹凸性高的点更多能够决定场景的真实度[7]。
顶点的视觉重要度的确定由顶点视觉特征因子和顶点曲度特征因子共同决定[8],根据法曲率可以计算顶点曲度特征因子,法曲率反映了曲面在一点处沿指定方向的弯曲程度和弯曲方向,可以对曲面在一点处沿任意方向的弯曲性量化。高斯曲率和平均曲率共同确定法曲率,进而确定了顶点曲度特征因子。
通过对顶点视觉重要度的计算,在粒子系统更新时可根据视觉重要度为零的点进行剔除,可以使顶点的重要视觉特征得以最大保持,并最大程度地降低系统的渲染时间。即在粒子系统中首次渲染场景时,对粒子进行扫描并记录每个粒子的视觉重要程度,在后续的更新粒子过程中,对记录中平坦点位置的粒子不进行渲染,以减少渲染量。
利用OpenGL图形开发库,在VC++6.0环境下,对火焰粒子系统进行模拟,并将粒子的LOD简化策略及平坦点剔除加入了火焰粒子系统的实现。系统中采用的帧率为32,即每帧所用渲染时间为0.03125s,设置初始L0=50,N0=10;采用线性LOD简化模型。
由实验数据可知,引入平坦点剔除后,为达到相同的视觉效果,系统产生新粒子数量减少约20%-25%左右,即在引用LOD技术进行线性降低粒子发射量的基础上,结合考虑粒子系统中每个粒子的视觉重要程度,对视觉凹凸性低的点予以剔除,能够在保持视觉效果的基础上,给系统减少计算负担,提高渲染效率。
[1]Revees W T.Particle Systems:A Technique for Modeling a Class of Fuzzy Objects[C]∥Proc of ACM SIGGRAPH’83,1983,17(3):359-376.
[2]郭阳明,翟正军,陆艳红.虚拟场景生成中的LOD技术综述[J].计算机仿真,2005,12(22):180-185.
[3]丁强,陈青林,左福强.基于 LOD的火焰粒子生成技术[J].计算机应用,2005(25):257-258.
[4]彭群生,鲍虎军,金小刚.计算机真实感图形的算法基础[M].北京:科学出版社,2003.
[5]陈志伟,马小虎.基于粒子系统和纹理绘制的火焰模拟[J].计算机工程与科学.2010,1(32):71-73.
[6]DANIEL SANCHEZ2CRESPO DALMAU.游戏核心算法编程内幕[M].邱仲潘,译.北京:中国环境科学出版社,2004.
[7]Frutuoso G M.Silva NSA simplification algorithm.Geometrical vs.visual quality[C].5th International Conference on Computational Science and Applications,2007.