APP下载

基于粒子系统的建模与仿真综述

2012-02-20胡小梅

装备制造技术 2012年8期
关键词:绘制粒子建模

王 彪,胡小梅,俞 涛

(上海大学 上海市机械自动化与机器人重点实验室;机电工程与自动化学院,上海 200072)

近年来,计算机游戏和动画等在各种领域的不断发展,要求对动态自然景物,如云、雾、地表灰尘、烟、火、水等的运动,进行模拟,这已经成为计算机图形学领域的研究热点。由于云、雾、地表灰尘、烟、火、水等,具有不规则的几何形状,并且其运动还具有不确定性,容易受到周围环境的影响而改变,动态性和随机性非常强,进而导致很难用常用的几何建模和数学建模的方法,来对其进行有效的模拟[1]。

1983年由W.T.Reeves等首次系统地提出了粒子系统方法[2]。此方法被认为是迄今为止模拟不规则模糊物体,最为成功的一种图形生成算法。在计算机虚拟仿真领域,应用粒子系统模拟不规则模糊物体的方法,已经得到了广泛应用。

本文通过对粒子系统的阐述、研究现状、建模及仿真以及对模型的优化,有了一个详细地描述,从而使大家对粒子系统的研究现状,有了更为直接的了解,最后通过分析现有粒子系统研究现状的不足,对于粒子系统的进一步研究,提出了自己的看法。

1 粒子系统的思想及其研究现状

1.1 粒子系统的思想

一个粒子系统,是由大量称为粒子的简单图元构成的,其基本思想是把物体定义为由成千上万个运动的、不规则的、随机分布的粒子组成的粒子集,每个粒子都有一组属性,如形状、大小、颜色、透明度、位置、速度和生命期等。而一个粒子需要被赋予哪些属性,主要取决于被模拟对象。

1.2 粒子系统的研究现状

粒子系统从研究现状上,可以大致分为4类[3]:

(1)随机粒子系统。主要通过可控制的随机过程,控制粒子属性的变化。1983年Reeves首次系统地提出了应用粒子系统,模拟虚拟场景中不规则物体的方法,模拟出烟花绽放的过程,并在电影Star Trek 1中绘制了星系爆炸的场面。从那之后,人们对粒子系统使用范围进行了进一步的拓展,使得粒子系统能够模拟火焰、烟花[4~5]、烟雾[6~10]、飞机飞行的特效[11]、喷泉,甚至是水中航行的船只的航行轨迹[12~13]。

(2)流体粒子系统。粒子的运动轨迹受流体力学的影响。比如,模拟地下煤矿矿井内气流,可以描述矿井发生火灾时火焰的扩散情况[14],类似的还有陶瓷辊道窑内进行陶瓷烧制时火焰轨迹的建模[15~16]。粒子系统也能够对液体进行建模,Liu Xue-mei用粒子系统模拟外科手术出血情况[17]。粒子系统甚至能够在高密度、高粘度、高压力、高温度等极端的条件下,模拟出了岩浆流动的情况[18]。

(3)方向粒子系统。考虑粒子间的相互影响,粒子除了具有速度和位置等动态属性外,还必须有方向属性。这样的粒子系统,主要模拟织物、可变形物体和刚体等。1987年,Reynolds把粒子系统看成是一组相互影响的粒子组成的,每一个粒子的具体位置,受与其相关粒子的影响。在这个理论基础上Olaf Etzmuss通过对连续介质的小改动,得到了耦合粒子系统,这个粒子系统中的粒子是相互关联的,并用以此来模拟变形的物体[19]。Bernhard Eberhardt,基于耦合粒子系统系统理论,对纺织物进行了建模。同时,Szeliski和Richard提出基于粒子系统的模拟弹性表面的方法,也可以对纺织物进行建模。

(4)结构化粒子系统,主要用来模拟具有一定结构的物体或现象。1985年,Reeves发展了粒子系统,他们用“Volume filling”基本单元,去生成随时间改变形状但又基本保持不变的实体,如随风飘动的花草树叶[20]。袁琪在2007年利用粒子系统虚拟作物器官[21]。Rhys Goldstein在生物学医药领域,用粒子系统来模拟神经元末梢,并且取得了很好的效果[22]。法国的Eric Galin用粒子系统模拟出吊灯、雕塑品等具有隐性曲面造型的物体。

2 粒子系统的建模与仿真

粒子系统是一个动态的模型,粒子在系统中要经过“产生”、“运动”和“消亡”这3个阶段。随着时间的推移,系统中旧的粒子不断消失,新的粒子不断加入。系统中“存活”的粒子,其位置及生命值亦随时间变化而变化,其正常运行的关键,是确定粒子的初始属性、粒子的变化规律和绘制等因素[23]。

在粒子生命期的每一刻,都要完成以下5步工作[24]:

(1)粒子源产生新粒子,并赋予粒子属性后加入系统中;

(2)根据粒子的动态属性,对粒子进行移动和变换,同时更新粒子属性;

(3)判断粒子的生命值;

(4)删除那些已经超过其生命周期的粒子;

(5)绘制并显示由有生命的粒子组成的图形。

2.1 粒子系统的生成

粒子的产生,采用随机过程函数来控制。每一帧产生的粒子数目,直接影响到画面的效果,常使用下面两种方法来进行定义[25]:

(1)第fn帧产生新粒子数目NParts(fn)定义为

其中,

Rand是在区间为[-1.0,1.0]上均匀分布的随机函数;

MeanPartsf是新产生粒子的平均值;

VarPartsf是新产生粒子的方差。

(2)为了有效控制粒子的层次细节和绘制效率,还可以根据单位屏幕面积所具有的平均粒子数和方差,来确定进入粒子系统的粒子数,则式(1)可以修改为

其中,

MeanPartssaf和VarPartssaf分别表示第f帧每单位屏幕面积上产生粒子数目的平均值和方差,

ScreenArea是粒子系统的屏幕面积。

在式(2)中,能够有效地避免用大量粒子来模拟在屏幕上投影面积很小的景物,因而大大提高了算法的绘制效率。

为了能够使粒子系统在强度上增加或者减少,设计者一般采用线性函数公式,使得每一时刻每帧中平均粒子的数量不同

或者

其中,

f是现在的帧数;

f0是粒子系统中最初的帧数;

InitialMeanParts是粒子系统最初帧中的平均粒子数;

DeltaMeanPartssa是粒子数的变化率。

因而,为了控制粒子系统中粒子的产生,设计者只 要 指 定 f0或 者 InitialMeanParts,DeltaMeanParts,Varparts 或 者 InitialMeanPartssa,DeltaMeanPartssa,Varpartssa的参数即可。

2.2 粒子的属性

任何新产生的粒子,都必须赋予它们一定的初始属性。粒子的初始属性,可以进行如下描述:

(1)初始位置;

(2)初始速度(速率和方向);

(3)初始大小;

(4)初始颜色;

(5)初始透明度;

(6)形状;

(7)生命期。

2.3 粒子的运动

粒子一旦产生,并具有一定的初始属性之后,它们便开始运动。粒子需要在初始运动属性的基础上,推导出其他时刻的运动属性。

2.4 粒子的绘制和渲染[26]

粒子绘制的技术主要有

(1)点粒子的绘制;

(2)面粒子的绘制;

(3)线性粒子的绘制;

(4)随机形状粒子的绘制。

实现粒子渲染的手段,主要采用光照、阴影、浓淡以及消隐处理技术。有些情况下,粒子被认为是光源,此时可以忽略消隐,简化浓淡处理,只以粒子的灰度或者颜色,来加亮相应的象素。

2.5 粒子的死亡

当粒子一旦产生之后,就被赋予了生存期,一般都是用帧来计算粒子的生存期,其随着粒子的运动而递减。当递减到零时,粒子“死亡”。此时,当从系统中将该“死亡”粒子删除。

在实际的应用中,也可以采用其他的方式来度量粒子的死亡。例如,当粒子的颜色和透明度低于系统设定值,或者粒子的运动超出了规定的区域,这些情形都可以根据实际的要求,认为粒子已经死亡[27]。

2.6 粒子系统的实现方法

随着图像处理的硬件和软件的发展,实现粒子系统的技术也获得了进一步的发展,主要反映在处理器、开发平台、渲染软件和数据存储等方面。

(1)影响粒子系统实时性能的瓶颈,就CPU的通讯以及CPU的并行处理能力,而在最新计算机系统中,由于实现了CPU和GPU的合理分工,数据和指令存储交换的场所也由系统内存,扩展至GPU显存,同时数据交换总线发展到PCI Express总线,并利用GPU的多通道处理性能,可以很方便地实现大量的并行计算,这使得计算机系统的实时处理能力,大幅度提高[28]。

(2)粒子系统进行开发的通用平台是Visual Studio[29~30],也有专门的仿真可视化平台,比如Vega Prime、3D Studio Max[31]。

(3)粒子系统中的粒子渲染的工具很多,高速OpenGL渲染引擎,具有相当的灵活性和可扩展性[32~33],能够满足在普通PC机上模拟不规则的自然景物的需求。其次是DirectDraw,DirectDraw允许用户直接访问图形硬件,管理用于显示的内存,提供高速图形和页面切换动画。

(4)吴继承设计出粒子系统的API,采用合理的数据结构,设计了一套高效的粒子生成、管理方法,并采用高速OpenGL渲染引擎,使用了粒子组管理粒子,使之能够满足在普通PC机上模拟大数据量动态场景的需求[34]。

3 粒子系统的优化技术[35]

粒子系统涉及的计算量相当庞大和复杂,所以粒子系统优化研究也越来越受重视,因为这样可以节省计算资源,提高计算效率。一般来说有以下几种优化的技术:

3.1 绘制效率优化

粒子系统运行的最终结果,是在屏幕上绘制每个粒子形态这个过程,需要一定的时间,影响了系统的实时性。绘制效率优化,就是采用特定方法,减少粒子绘制时间,进而提高速度。

优化包括系统级和代码级两种:系统级主要采用高速缓存保存编译过的绘图代码,使用时不需再次编译;代码级主要基于人眼分辨率限制,少绘制或不绘制人眼不敏感或看不到的区域。

绘制效率优绘制效率的优化包括为:

(1)显示列表;

(2)公告板技术;

(3)几何形体优化;

(4)多级粒子系统。

3.2 计算复杂性优化

粒子系统运行过程中需要大量计算,如碰撞检测、速度调整、内存分配、算术运算、循环判断等。这些计算消耗系统资源,间接表示时间复杂度大小,对系统实时性影响比较大,处理不好将严重影响系统速度。

在计算复杂度的优化方面主要有:

(1)碰撞检测与处理优化;

(2)存储方式优化;

(3)运动过程优化;

(4)线性表;

(5)局部力场。

3.3 粒子数量的优化

粒子数量优化,就是在不影响系统真实感的前提下,尽可能地减少粒子数量,减少空间复杂度。粒子数量的优化我们主要采用的技术包括:

(1)结构化粒子;

(2)LOD技术;

(3)伪粒子系统。

4 结束语

粒子系统可以在各种各样的环境下,对很多模糊的或者是隐性曲面、弹性曲面的物体,进行建模仿真。目前基于粒子系统仿真研究,主要局限于计算机图形的模拟,虽然在粒子仿真的图形中加入了重力和风力的作用,但这种外力并不是使用传统实验方法计算出来的,而是为了烘托模拟出来的图像效果,是用外力的。

另外,由于对自然现象等大规模场景进行实时仿真渲染,需要高性能设备支撑,因此在实际仿真时,往往以牺牲场景的真实感作为代价。

为了使基于粒子系统的仿真,在更大的范围内进行应用,在粒子系统建模时,考虑加入一些特定环境下的空气动力学的影响因素,结合风力和重力的专业计算数据,建立相应的逼近函数,作用于粒子系统仿真中,使得仿真结果更具真实性。

为了解决真实感仿真与实时仿真的矛盾,可以使用并行仿真计算方法,解决单个设备计算能力和渲染能力不足,使得粒子系统动态演变过程实时可视化仿真成为可能。

[1]庞 新,王相海.基于OpenGL的礼花粒子系统模拟研究[J].计算机科学,2008,35(5):216-219.

[2]Reeves W T.Particle System-a Technique for Modeling a Class of Fuzzy Object[J].ACM Computer Graphics(SIGGRAPH’83)(S0730-0301),1983,17(3):359-376.

[3]徐阳东.基于粒子系统不规则景物建模研究[D].济南:山东师范大学,2009.

[4]He Xiao,Chunlin He.Real-time Simulation of Fireworks Based on GPU and Particle System[C].ETCS 2009,United States:IEEE Computer Society,2009,(1):14-17.

[5]Shihui Zhang.Fireworks Simulation Based on Particle System[C].2009 2nd International Conference on Information and Computing Science,United States:IEEE Computer Society,2009,(1):187-190.

[6]ZHOU Shumin,SUN Yamin,LU Ling,CHEN Zhifeng.Fire Simulation Model Based on Particle System and Its Application in Virtual Reality[C].Proceedings 16th International Conference on Artificial Reality and Telexistence-Workshops,United States:IEEE Computer Society,2006,642-64.

[7]Zhou Shumin,Zhang Tiantai,Qin hua.The Fire Emergency Response Plan Simulation Based on Particle System[C].Proceedings-The 1st International Conference on Intelligent Networks and Intelligent Systems,United States:IEEE Computer Society,2008,384-387.

[8]张海山,吴家铸.基于粒子系统的火箭发射烟雾特效实现[J].微计算机信息(管控一体化卷),2008,24(12-3):248-249.

[9]赵春霞,张 艳,战守义.基于粒子系统方法的三维火焰模拟[J].计算机工程与应用,2004,40(28):73-75.

[10]Neng Wen Zhuo,Yunbo Rao.Real Time Dense Smoke Simulation Based Particle System Proceedings[C].2nd 2008 International Symposium on Intelligent Information Technology Application Workshop,United States:IEEE Computer Society,2008,809-813.

[11]Junli Chen,Weifeng Xu,Bing Huang,Wanggen Wan.Simulation of Flight Special Effects Based on Particle System[C].Proceedings of 2010 International Conference on Audio,Language and Image Processing,United States:IEEE Computer Society,2010,333-337.

[12]Mu-Yuan Wang,NaeyaoZhang,Xin-Yu Du.Real-time animation of CAD-MF system using simplified particle system and fast translation algorithms[C].Proceedings of 2002 International Conference on Machine Learning and Cybernetics,United States:IEEE Computer Society,2002,1614-1618.

[13]赵 欣,李凤霞,战守义,陈宏敏.基于粒子系统实现船舶航迹仿真的加速方法[J].大连海事大学学报,2008,34(1):54-57.

[14]Qiu-qin LU,Guang-qiu HUANG,Ya-fei GE.Simulation of Fire Spreading in Underground Mine Based on Cellular Automata and Particle System[C].2009 International Conference on Industrial Mechatronics and Automation,United States:IEEE Computer Society,2009,180-183.

[15]Zhihua Wei,Weixia Shi,Zhen Li,Wenbi Rao.Dynamic Flame Simulation of Ceramic Roller Kiln Based on Particle System[C].11th IEEE International Conference on Computer-Aided Design and Computer Graphics,United States:IEEE Computer Society,2009,268-273.

[16]杨 青,杜淑幸.基于粒子系统的动态模拟真实感研究与实现[D].西安:西安电子科技大学,2010.

[17]Liu Xue-mei,Hao Ai-min,Zhao Qin-ping,Liu Xue-mei,Chen Chun-yan.Bleeding Simulation Based Particle System for Surgical Simulator[C].2009 Pacific-Asia Conference on Knowledge Engineering and Software Engineering,United States:IEEE Computer Society,2009:151-154.

[18]Emir M Husni,Khairul Hamdi,Tunggal Mardiono.Particle System Implementation Using smoothed Particle Hydrodynamics(SPH)For Lava Flow Simulation[C].Proceedings of the 2009 International Conference on Electrical Engineering and Informatics,United States:IEEE Computer Society,2009,216-221.

[19]Olaf Etzmuss,Joachim Gross and Wolfgang Strasser.Deriving a Particle System from Continuum Mechanics for the Animation of Deformable Objects[J].IEEE Transactions On Visualization And Computer Graphics,2003,9(4):538-550.

[20]Revees W T,Blau.Approximate and probabilistic algorithms for shading and render structured particle system.Computer Graphics[J].1985,19(3):313-322.

[21]袁 琪,周淑秋,郭新宇.粒子系统在虚拟作物生长中的应用研究[J].微计算机信息(管控一体化卷),2007,23(21):262-264.

[22]Rhys Goldstein and Gabriel Wainer.Simulation of a Presynaptic Nerve Terminal with a Tethered Particle System Mode[C].proceedings of the 31st Annual International Conference of the IEEE Engineering in Medicine and Biology Society:Engineering the Future of Biomedicine,United States:IEEE Computer Society,2009,3877-3880.

[23]汪继文,张妍妍,陆和军.一种基于改进的粒子系统的烟花模拟[J].电脑知识与技术,2009,(12):9805-9807.

[24]刘巧红,单 贵.粒子系统在虚拟校园中的应用研究[J].计算机技术与发展,2011,(2):246-249.

[25]石祥滨,田苏昕,王 越.一种基于感知的大规模场景粒子系统绘制方法[J].沈阳航空工业学院学报,2009,26(3):49-53.

[26]张 芹,吴慧中,张 健.基于粒子系统的建模方法研究[J].计算机科学,2003,30(8):144-146.

[27]梁 速,朱晟仁.浅析粒子系统及其在游戏中的应用[J].电脑知识与技术,2007,(2):1110-1111.

[28]许 楠,郝爱民,王莉莉.一种基于GPU的粒子系统[J].计算机工程与应用,2006,(19):77-79.

[29]汪继文,郑 锋.基于OpenGL与粒子系统的喷泉模拟实现[J].计算机技术与发展,2011,21(8):161-164.

[30]雷 晓,胡 倩.基于Direct3D的粒子系统设计[J].微计算机信息(观测自动化),2010,26(11-1):152-158

[31]况 扬.3D Studio MAX中粒子系统的研究[J].科技广场,2009,(3):112-113.

[32]罗 勇,文建国.面向对象的通用粒子系统设计及其在火焰 模 拟 中 的 应 用 [J].科 学 技 术 与 工 程 ,2008,(15):4174-4178.

[33]罗 军,王 玲.基于GPU的粒子系统的实现技术[J].微计算机信息,2008,24(2-1):273-275.

[34]吴继承,江 南.虚拟现实中粒子系统的设计与应用[J].计算机仿真,21(11):2004,137-140.

[35]王功明,郭新宇,赵春江,王纪华.粒子系统的优化技术研究[J].计算机应用研究,2008,25(2):495-500.

猜你喜欢

绘制粒子建模
碘-125粒子调控微小RNA-193b-5p抑制胃癌的增殖和侵袭
基于Excel VBA和AutoCAD的滚动轴承参数化比例图绘制方法
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
基于膜计算粒子群优化的FastSLAM算法改进
超萌小鹿课程表
Conduit necrosis following esophagectomy:An up-to-date literature review
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
基于粒子群优化极点配置的空燃比输出反馈控制
为雄安的交通绘制一张蓝图