基于粒子系统的自然环境特效仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于粒子系统的自然环境特效仿真
摘要:基于粒子系统的特效仿真是虚拟自然环境可视化仿真中的一个重要环节。阐述了粒子系统原理,根据粒子系统原理为虚拟自然环境中爆炸、火焰、烟雾、雨雪等不规则景物建立了粒子系统模型,分析了基于粒子系统特效仿真中的动态链表、三角函数链表、实时性等关键技术。
关键词:自然环境;粒子系统;特效仿真
0 引言
虚拟自然环境是场景仿真的重要基础。在计算机仿真中,虚拟自然景物能否更好地可视化直接影响用户的使用反馈。仿真不规则物体,是可视化计算机仿真的难点,因其外观特征极不规则,表面不光滑,而且具有复杂与随意变化过程,这使得用经典的欧几里德几何学对其描述显得无能为力。
尽管如此,国内外学者先后提出了粒子系统模型、细胞自动机模型、分形模型等表示不规则模糊物体的理论,其中W.T.Reeves 提出的粒子系统理论较为成功。粒子系统就是由大量粒子集合在一起表现不规则物体的计算机模拟系统[1]。如今,粒子系统已经应用在可视化虚拟环境仿真的各个方面,虚拟的雨雪、烟雾等特效是实现逼真的虚拟自然环境中不可或缺的一部分,也是粒子系统运用的主要领域。
1 粒子系统原理
粒子系统对景物的绘制不同于以往造型、绘制系统的方法,它不
是一个静态模型,而是一种过程模型。如果可以找到有效的物理或生理过程,不规则物体的行为分析和建模将变得很简单,只要实现实时的物理几何模型即可。一个粒子系统可由多个称为粒子的元素组成,每个粒子均具有形状、大小、运动方向、生存周期等属性,而一个粒子具有的属性取决于粒子系统所模拟的物体。粒子系统是一个动态变化的系统,每时每刻都有新粒子产生以及旧粒子死亡。系统中的粒子的各类信息都随时间而改变,粒子的初始状态、运动规律影响粒子的正确运行。我们可以通过控制粒子的属性和变化过程来模拟一些动态自然物体。粒子系统的实现需要以下5个步骤:①新粒子产生并具有新属性后进入系统;②结合粒子的动态特征对粒子进行诸如移动和变换之类的操作,同时改变粒子属性;③判断活动粒子的实时生命值;
④删除超过其生命周期的粒子;⑤绘制并显示由系统中粒子所组成的图形。
2 不规则物体粒子系统模型
在可视化仿真自然环境中,爆炸、火焰、雨雪等许多特效都可以用粒子系统来实现,本文选择烟雾和雨雪进行介绍。
2.1 烟雾粒子模型
2.1.1 烟的行为过程描述
模拟烟的行为,基础在于研究与烟行为有关的因素。对烟的运动产生决定性影响的因素有烟粒子的运动速度和温度。第一是烟粒子的速度,当烟进入空气后,它会与空气摩擦,空气对烟有一个力的作用从而产生一种湍流效果;第二则是烟粒子的温度,烟雾中温度高的上
升速度快,温度较低的上升速度慢,不同温度会造成烟内部的扩散[2]。
2.1.2 烟雾运动物理方程描述
采用物理学方法,对烟雾粒子进行物理描述。可以认为烟是不可压缩的气体,用N-S方程可描述为:= v▽·(▽u)﹣(u·▽)u(1)以上方程中,T(t)为烟粒子温度,M为粒子浮力参数,Tc 为外界温度。方程组(1)~(3)在理论上可以求解,但计算很复杂。
分析烟粒子的运动可知,烟粒子浮力fe起主要作用,故可以在整个过程只考虑烟粒子浮力的作用。同时,可以通过动态烟粒子纹理映射技术来体现烟雾的变化。
2.1.3 烟雾粒子运动简化
简化后的烟粒子运动方程满足等式:Ma(t)=f(t),a(t)=dv (t)/dt,v (t)=ds(t)/dt。其中,M表示烟粒子的质量,a(t)为粒子加速度,s(t)为粒子的位置,f(t)表示粒子所受到的浮力。此时可求出粒子在任意时刻的速度、位置。
2.2 雨雪粒子模型
2.2.1 静态属性
雨雪粒子的静态属性主要包括:粒子形状和大小、粒子颜色和透明度等[3]。其中,粒子的形状简化为三维球体,球体的大小即为粒子的大小。
2.2.2 动态属性
雨雪粒子的动态属性主要有:粒子群密度的变化、雨雪粒子的动
力学特征等。可通过一个随机过程来控制雨雪粒子的出现,首先是对每个时刻进入系统的粒子数目进行控制,目的在于表现雨雪在不同时刻的分布变化。对于雨雪粒子的动力学分析,雨雪粒子的运动规律满足经典物理的相关运动规律,即粒子的加速度a、速度v 和位移s 有如下关系:
3 关键技术
3.1 动态链表
可用动态链表实现本文算法。链表存储的对象代表系统中存在的粒子,粒子的属性也存储在内。链表中新生的粒子排在表头,快要死亡的粒子则在表尾,链表包括活动粒子链表和死亡粒子链表。活动粒子链表保存的是活动粒子,该链表中的某个粒子在即将死亡时就被转存至死亡粒子链表,当要生成一个新粒子时,先遍历死亡粒子链表,如果该链表中有死粒子存在,则更改该死亡粒子的属性,将其转存至活动粒子链表,这种处理减少了分配和释放内存的时间,提高了系统的实时性。
3.2 实时性
(1)在列出烟粒子的运动方程后,在保证整体效果不失真的前提下可简化算法,减少运算量,达到实时性要求。
(2)选用LOD技术,减少离视点较远处的粒子数目,从而缩短图形生成时间,更好地满足实时性要求[4]。
3.3 三角函数列表
在研究雨雪旋转时,需要进行三角函数的相关运算,这会降低虚
拟场景生成的实时性。在此,可以事先用线性表预存三角函数值的方式来避免耗时的函数运算[5]。
4 结语
本文提出的烟雾和雨雪的粒子系统模型均已应用在分布交互式虚拟仿真系统中,提高了虚拟自然环境的逼真程度,取得了良好的渲染效果。
参考文献参考文献:
[1] EDW ARD ANGEL.交互式计算机图形学——基于OpenGL的自顶向下方法[M]. 北京:电子工业出版社,2009.
[2] 尹勇.自然现象的实时仿真[J]. 系统仿真学报,2002,14(9).
[3] 张芹,谢隽毅,吴慧中. 火焰、烟、云等不规则物体的建模方法研究综述[J]. 中国图像图形学报,2000,5(3).
[4] 耿维忠,杨胜强. 基于动态纹理的火焰模拟[J]. 机械工程与自动化,2007(3).
[5] 蒋道琛.基于粒子系统的虚拟战场环境模拟[D]. 合肥:安徽大学,2012.