计算机基于粒子系统的烟花模拟

2022-04-25 08:36郝学娟
电子元器件与信息技术 2022年2期
关键词:烟花形状粒子

郝学娟

(山西运城农业职业技术学院信息技术系,山西 运城 044000)

0 引言

在图形学领域中,自然景物的图像模拟一直以来都是一个重要的研究课题,然而自然景物并非表面上看到的那么简单,可以说是千变万化,形态各异,而且是时刻变化着的,基本模型肯定无法实现,还有一些自然现象必须追溯到现象本身的物理根源,才能再现自然现象。

1 研究背景及意义

对于游戏开发者和电影导演来说,他们希望不借助物理算法就能达到真实自然景物的效果。因为自然景物的内部结构非常复杂,所以很难通过手动制作动画。伴随着计算机技术的发展,个人计算机也随之能够完成更多更复杂的算法,这便出现了各个领域的自然景物模拟,比如广告、电脑游戏、影视特技、动画以及可视化的科学计算等等。

2 粒子系统的国内外研究现状

从20世纪80年代开始就有人研究粒子系统了,第一次提出粒子系统概念的人叫Reeves W.T.,他于1983年提出并使用粒子系统非常成功地模拟了五彩缤纷的烟花及烟雾爆炸等效果[1];1985年,Reeves W.T.与Blau两人合作进一步发展了粒子系统,他们主要是利用“volumefilling”生成随时间推移而改变其形状的实体,而该实体基本上保持不变,即没有本质的变化,就比如随风摇摆的花草树叶[2];此后,Reeves W.T.又提出了关于粒子系统的消隐绘制算法,也可称其为“近似概率性算法”,该算法从理论到技术各个方面都得到了非常大的发展,主要用于解决可见面以及阴影问题,从而取得更加真实的三维效果;Fournier等人利用粒子系统模拟了海浪浪花,并提出浪花在什么条件下才会产生,即当粒子运动速度同海浪曲面传播速度的差异超过了一定的阀值时才会产生浪花,否则只能产生泡沫[3];Karl Sims利用粒子系统所具有的并行特点,提出了一个全新的并行粒子绘制系统,进而研究了粒子动画,该绘制系统能绘制各种各样的粒子,比如形状不同的、颜色不同的、大小不同的或者透明度不同的粒子等,而且还能进行各种各样的处理,比如消隐的处理、反走样的处理、运动模糊的处理等;Reynolds又进一步扩展了粒子系统的功能,即将其作为一种建模工具,当很多粒子在一起共同存在时,他提出了某一粒子与其他粒子之间以及粒子与其环境之间如何进行交互的思想,还详细说明了当大量的简单图元进行交互作用时会产生更加复杂的行为;Miller&Pearce、Tonnesen等人为了模拟像流体一样的物体开发了双粒子系统。总而言之,我们可以利用粒子系统创建各种各样的自然景物的动画效果,它已经被广泛地应用到各种可视化虚拟场景中。

近些年来,国内也有许多大学都在研究、探索以及应用粒子系统模型构建自然景物,而且还获得了不小的成果。比如徐迎庆等人通过粒子系统模拟了自然景物的水沫以及碰撞时所产生的水花等效果;再如宋万寿等人利用粒子系统技术在个人计算机上开发了树木模拟以及烟花模拟;徐利明与姜显明两人合作实现了雨、雪飘落的效果[4];张芹、吴慧中等人根据粒子系统具有的动态性以及随机性的特点,模拟了火焰、烟雾等效果;王静秋、钱志峰等人利用粒子系统实现了对焰火的动态模拟,其根据不同焰火的细节和特点实现了不同形状的焰火,并主要介绍了旋转、星状等显示效果的模拟,随后还详细介绍了焰火的各种特性,比如焰火的颜色、焰火的透明度、焰火的形状以及生命周期等等。这些模拟相比国外还是相差甚远,所以国内的关于粒子系统的研究仍需要在今后作进一步的探索、研究与实践[5-6]。

3 烟花粒子的研究分析

现如今,国内外已有很多学者都研究过基于粒子系统技术的烟花模拟,故关于烟花粒子系统模型已有了一定的基础,而且其模型结合纹理贴图或是Bill Boarding技术,只需简单的改变其纹理参数便可产生各种不同的烟花模型,所以非常通用,可以满足人们对烟花的各种审美需求。实际生活中,关于烟花的基本模型主要有下面几类。

众所周知,烟花的形状可以说是千姿百态,不同的人喜欢不同的烟花形态,我们最常见的最典型的烟花形状有圆形的、菊花状的、环状的、椰树形的,像锦冠、牡丹、大丽就属于圆形的烟花,彗星、菊花、花蕾则属于菊花状的烟花,而红双环、绿双环属于环状的烟花。

烟花在燃放时都会具有一定的危险性,那是因为我们不知道烟花在何时炸开产生礼花,根据该特点,我们利用初始属性来随机控制炸开的高度。炸开的形状我们也可以进行控制,烟花的外表形状有些是有序排列的,有些是无序的组合,有序排列的烟花炸开类似于我们看到的球体、五星、心形等预先已经设计好的造型,而无序排列则可以炸出像彗星、椰树、柳树等造型的烟花。

用粒子模拟烟花,整个烟花运动的过程有两个发射处,一个是粒子的燃放点,另一个是粒子的炸点处。通过观察发现,大部分烟花其燃放点低而炸点处高,且二者的位置是不同的,所以我们分两段来处理。第一段,在燃放点只有一个粒子冲向天空去,我们可以通过随机函数设置几个随机的燃放点,从而产生不同的效果。第二段也是最关键的一部分即炸开点,这个炸点必须在合适的位置才可爆炸,也就是说它只能在某一帧或是某一时间段才可产生。

4 烟花粒子的属性分析

为了能模拟出更加逼真的烟花效果,必须仔细地观察与分析烟花显示的各种细节及特点。比如:烟花种类和颜色、形状,而且有的烟花绽放快、有的烟花绽放慢,各有其特点。

烟花整个燃放过程有两个粒子发射处,一个是粒子的燃放点,它是在一定范围内随机产生的;另一个是粒子的炸开点,它也是通过随机函数随机产生的,一般烟花的形状主要通过炸开点来控制。下面将设计几个最基本的模型,并通过这些模型来合成形状各异的烟花。基于粒子系统技术和纹理贴图模拟各式烟花,主要是研究合理的数据结构和代码,从而借助其模拟出所需效果。下面就烟花的基本特性着重分析一下:如烟花颜色、形状与大小、衰减度以及其空间位置等。

(1)烟花颜色特性:它是最重要的一个特性。烟花在绽放时,主要依赖于其内部所使用的化学元素才使其呈现出不同颜色,最常用的元素有钡(可显示出绿色的烟花)、钠(可显示出黄色的烟花)、铜(可显示出蓝色的烟花)、锶(可显示出桔红色的烟花)等。我们在制造烟花时,通过控制上面各种元素的比例,在其绽放时就会得到五彩缤纷的烟花。基于粒子系统的烟花模拟,为了使设计的烟花表现得更具真实性,需要用较多的粒子来描述,而且每个粒子根据位置特点单独地分配其各自的颜色值,通常用三原色(红、绿、蓝)来表示。本文所设计的烟花模拟,是让烟花的颜色一开始鲜艳明亮,慢慢变得暗淡下去,最终消失。

(2)烟花的衰减度特性:烟花显示的另一个重要特性就是衰减度,本文用fade表示粒子的衰减度。烟花的每个粒子都有其生命周期,本设计中规定所有粒子的生命周期都是1s。粒子经过上升、爆炸后就要消亡,然后再产生新粒子。

(3)烟花的形状特性:也就是各种外部形状,比如圆形、椰树形等。一般通过爆炸区域来控制烟花所显示的形状。我们在学高等数学时都知道,通过各种数学函数,例如sin、cos、tin等函数能产生各种不同曲线,本设计就是运用了这个原理。

(4)烟花的外观属性:外观属性也是烟花的重要特征之一,它能给人最直接的视觉效果。首先,烟花基本粒子的外观。在以往的烟花模拟程序中,其烟花粒子的外观大多采用圆形。而在实际中,烟花都是一条条链状的“蝌蚪形”,所以在本设计中将通过数学公式用一组源粒子组成链状的烟花粒子。其次,烟花爆炸后形成各种形状的外观。由于本设计是在三维空间中完成的,所以在视图上采用透视投影,即远处的烟花看起来会比较小,而近处的则比较大。

5 烟花运动模型

烟花粒子运动状态的变化包括粒子的空间位置、形态颜色以及运动速度等方面的变化。通过这些变化动态地描述烟花的变化过程。在现有的烟花模拟过程中,重力也会影响烟花的轨迹,粒子的质量也要相应地考虑进参数中,而其他的烟花释放的颜色、烟花可见性以及运动形态的变化等,通过调整相应的参数即可实现。

所有新产生的烟花粒子,系统都要赋予其一定的属性,其初始属性可以描述如下:我们假设粒子的初始位置为(x,y,z)。粒子的初始位置和初速度定义如下:

如果只考虑粒子受重力加速度的影响,则粒子在x轴和z轴方向上的加速度赋为0,只给它们一个合适的y方向加速度,且是常量值,如Vy acc=a,a=-2.0。

对于新生粒子,我们都给它们统一生命值1.0f。但它们的衰减值不一样,定义如下:fade=(float)(rand()%100)/20000+0.0023f。为了建立烟花所在的空间坐标系,我们令重力方向为Y轴,水平方向为X轴,垂直于XY平面的轴即为Z轴。生命期的衰减:Life=Life-fade

其中可以用数学上的一些曲线方程的参数来控制Xspeed、Zspeed的值,来达到改变爆炸烟花形状的目的。

6 烟花粒子的生命历程

每个烟花粒子都有三个生命历程:产生新粒子、活动状态和粒子消亡,整个过程烟花粒子经过不断的更新,始终保持一种相对的平衡,这种平衡保证烟花粒子的数量恒定。再具体地说,就是当新烟花粒子一旦产生,系统就会赋予该粒子生命值life=1.0,生命值根据其运动变化逐渐地减少,当life=0时,我们认为该烟花粒子消亡。烟花粒子消亡后,系统会将其删除,结束其生命历程,随后系统再补充新烟花粒子,开始新生命历程。在应用过程中,度量烟花粒子是否死亡还可以有其他的一些标准。例如当烟花粒子的颜色与背景色相同或烟花粒子的透明度减少至零时,或者烟花粒子的运动超出了显示区域或者超出了初始化所设定的区域时,系统会根据情况认为烟花粒子已经死亡,从而结束其生命历程。

7 发展前景

实际中,烟花具有动态随机性而且外形非常不规则,要模拟出更真实的烟花模型,值得更深入地去探讨。所以计算机基于粒子系统的烟花模拟到目前为止都有非常广阔的发展前景。

8 结语

为了绘制更加贴近现实生活的烟花,还需要继续改进以下方面:第一,一些不可抗因素的影响,比如风力、浮力等因素的存在;第二,大量粒子组合在一起产生烟花效果,越复杂的烟花效果,烟花粒子会更多,它们之间产生碰撞、作用是不可避免的,但当他们互相作用时会产生什么样的效果,需要进一步分析。

猜你喜欢
烟花形状粒子
国庆烟花秀
碘-125粒子调控微小RNA-193b-5p抑制胃癌的增殖和侵袭
放烟花
基于膜计算粒子群优化的FastSLAM算法改进
Conduit necrosis following esophagectomy:An up-to-date literature review
火眼金睛
分一半
问:超对称是什么?
心的形状