服务热线:
您当前的位置:首页 > 世纪星月刊 > 第5期 (2011年5月)

【技术前沿】从Life 游戏到粒子系统

2011/9/22 15:13:02
 

研发部 杨盛海

曾有这么一条游戏规则:以方阵排列为单元,有固定边界,即固定的宽和高,每一个单元除了边界上,都有上下左右以及左上、左下、右上和右下8个相邻的单元,每个单元可以看作是一个细胞,每个细胞有两种状态,即存活和死亡。每个细胞的状态不是一成不变,变化规则有如下4条:

1、当一个存活细胞的相邻单元存活的细胞数过少,即少于2时,这个细胞就会死亡。

2、当一个存活细胞的相邻单元存活的细胞数过多,即多于3时,这个细胞也会死亡。

3、当一个存活细胞的相邻单元存活的细胞数即不多也不少,也就是介于23之间,这个细胞就会继续存活。

4、当一个死亡细胞的相邻单元存活的细胞数是3时,这个死亡细胞就可以复活。

为了让细胞的变化不受方阵边界的影响,将方阵的上边与下边、左边与右边分别卷接,这样就相当于没有边界了。

当计算机以每秒十几代至几十代的速度来刷新这个方阵的细胞,并把它显示在屏幕上时,可以看见这个游戏规则所带来的奇幻魔力,它可以产生旋转、爆炸以及在屏幕上来回穿行等效果。这就是大名鼎鼎的life游戏!

当初第一次实现它的时候,是使用Windows超级慢的GDI来操作,无论怎样优化产生细胞的过程,都不会如书上所说,像一片云一样飘过屏幕。这也影响不了它所带来的科幻效果,就好像我在使用快镜头拍摄一群微生物的活动一样。

与其说life是一个游戏,不如说是一个简单的数学模型。它在计算机中的处理过程与绘制过程相比甚至可以忽略不计,任何会一点图形编程的新手都可以轻松实现。但就是这个简单的算法却可以实现诸多复杂的图形变化,这就给图像界的同仁们一个有益的启发。

一直以来,图形图像处理行业有着比较令人头疼的问题,那就是如何人工绘制逼真的图像以及动画效果,在办法不多的早期,几乎想不到更好的解决方法,其中可以用到的有分形技术等,但分形技术在模拟自然景物的应用上还处于研究的早期阶段,可模拟的景物十分有限,使用起来也非常费劲。直到粒子系统理论的出现,这一问题就变得容易许多。我们之前所表述的life游戏就是一种原始的粒子系统。

如前所述,如果单元格足够小,使得人眼只能看到一大块面积单元的变化图像,就达到使用微小单位像素的变化来改变宏观图像的变化。

下面简要介绍下粒子系统。所谓粒子系统,就是将看到的物体运动和自然现象,用一系列运动的粒子来描述,再将这些粒子运动的轨迹映射到显示屏上,就成了在显示屏上看到的物体运动和自然现象的模拟效果。

粒子系统最典型的例子就是火焰效果,无论静态的火焰图像还是动画都可以使用粒子系统来实现,静态的火焰图像不用多说,建立火焰的数学模型,比如中心的亮度比较高,趋于黄色,边缘的亮度比较低,趋于暗红色,还有大致的火焰的形状等。使用这个数学模型来绘制其所有区域的单元像素,效果肯定非常逼真,除非数学模型有问题。

再说火焰动画,与静态图像相比,其数学模型就复杂得多,会受到一些外界干扰,例如火焰的跳动是由其燃料的供应和空气的流动影响产生,火焰方向的变化会受到风向影响。粒子系统就需要将这些影响因素提炼出一些简单的公式,使得火焰粒子知道下一次刷新时向哪个方向运动,以及火焰边缘的粒子如何消亡和增长。如果要做出真正逼真的火焰,里面要涉及比较复杂的数学模型,越逼真越复杂,直到计算机无法处理。有些游戏软件为提高显示性能,干脆做出几个静态的火焰图像,在其来回切换,也可以达到很好的效果。

粒子系统另一个比较经典的例子是云雾消散的效果,可以说云雾效果比较相似life游戏,创建一大堆白蒙蒙东西,也就是规定好一块云区域,在这块区域内,每个像素的基色是白色,且具有不同的透明度,这就是静态的云,让这些白色半透明的粒子整体平移,就造出移动的云,让这些粒子的透明度逐渐变大,最终消失,这就是所谓的云消散效果。

使用粒子系统还可以模拟出爆炸、烟、水流、火花、落叶、雪、尘、流星尾迹或者像发光轨迹这样的抽象视觉效果。

通过以上两个典型的例子,可以看出粒子系统的实现还是非常简单,这里关键要看粒子移动和变化的数学模型。有相关技术就有专业的研究团队,目前,粒子系统已广泛地应用到各种游戏场景尤其是3D游戏场景之中,除了模拟现实场景外,还能产生出很多现实中无法再现的场景,为游戏增添科幻情景,效果非常迷人。许多专业的图形图像处理软件包括三维动画软件都内嵌对粒子系统的支持,并开发出许多实际的粒子效果。甚至有更专业的团队开发出专门的粒子系统开发软件。

科技的发展没有尽头,在解决以往问题的过程中,往往会产生超越寻常方法的新技术,并推动相关领域的技术革命,从而改变人们的生产生活方式。可以说没有对自然景物模拟的诉求就没有粒子系统的产生,也不会催生今天如此繁荣的大型3D游戏市场。人们在享受这些大型游戏给他们带来的真实场景感受时,那些使用各种模拟现实技术来开发游戏的程序员会不会因此而感到自豪呢?那是一定。

 


企业邮箱  |  法律公告  |  隐私保护  |  联系我们  |