一种基于粒子系统的火焰模拟加速改进算法技术方案

技术编号:6091485 阅读:286 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于粒子系统的火焰模拟加速改进算法,包括如下步骤:(1)预处理生成轨迹来记录粒子的加速度、颜色和生命值属性;(2)粒子发射器生成粒子;(3)为每个粒子分配一条轨迹;(4)从轨迹获得粒子的以上三种属性并更新粒子其他属性,若粒子达到轨迹末帧则转第5步;渲染粒子;更新轨迹信息,若轨迹生命为0则转步骤(6);本步骤循环直至系统退出;(5)重新生成粒子并分配轨迹;(6)重新计算轨迹并重新生成该轨迹上所有粒子。本发明专利技术与传统粒子系统的方法以及轨迹法相比,其优点是一方面大幅降低了传统方法的计算量,起到了加速的作用;另一方面克服了轨迹法渲染的失真问题,并能支持大规模表面燃烧的渲染,起到了改进的作用。

An improved accelerated algorithm for flame simulation based on particle system

The invention discloses a simulation algorithm of flame based on particle system, which comprises the following steps: (1) pretreatment path to record particle acceleration, color and life values; (2) the particle emitter particles; (3) to assign a trajectory for each particle; (4) obtained from the particle the trajectory of the above three kinds of properties and other properties of the particle is updated, if the particle trajectory is reached at the end of the frame turn to step fifth; particle rendering; update trajectory information, if the trajectory of life for 0 to a step (6); exit this step cycle until the system; (5) new generation and distribution of particle trajectories; (6) re to calculate the trajectory and rebuild all the particle trajectory. Compared with the traditional method of particle system of the invention and the trajectory method, the utility model has the advantages of a significantly reduces the computational complexity of the traditional method, played the role of accelerated; on the other hand, overcomes the problem of distortion trajectory rendering, and can support large-scale burning surface rendering, played a role in improving.

【技术实现步骤摘要】

本专利技术涉及一种基于粒子系统的火焰模拟加速改进算法
技术介绍
在计算机图形学中,如何渲染模糊物体一直是一个研究的热点。所谓的模糊物体 (Fuzzy Object)是指像火,云之类的没有固定边界的物体。这类物体是自然的重要组成部 分,因而在游戏,电影,动画以及虚拟现实技术中都占据了重要的地位。这类物体在真实感 图形的研究领域中一直是一个难题。传统的计算机模拟手段通常是通过三角曲面片来逼近 自然物体的表面。然而在模拟模糊边界的物体时,这种方法就不适用了。边界的复杂性和 动态性使得三角片的构造异常复杂,并且在更新时需要大量的计算,这些都不符合实时性 的要求。因此人们开始寻求新的模拟模糊物体的方式。现有的模拟方法主要有两种,一种是基于纹理模型的,比如Perlin噪声算法 (Perlin Noise algorithm),这种方式主要是通过计算对纹理映射进行扰动,以产生更加 接近自然的纹理。另一种是基于物理模型的,也就是粒子系统。粒子系统是由William Reeves在1982年提出的。他详细描述了粒子系统的概念和粒子系统的构架方式。在之后 的近30年间,他的粒子系统模型一直是现代粒子系统的基础。Reeves的粒子系统可以概述 为以下模型每个粒子的属性都可以表示为一个均值和一个随机值的加和。均值表现出粒 子的基本形态,随机值在渲染的时候生成,以产生模糊边界的效果。粒子具有生命周期。生 命周期内,每一帧可通过加速度计算粒子的速度,进而计算粒子的位移。粒子的颜色由初始 颜色与末端颜色以粒子生命为参数插值得到。当粒子生命结束时,系统将重新给粒子赋予 新的生命和属性。在现代的粒子系统中,主要有以下两个新的结构1、粒子发射器。粒子发射器主 要是由于决定粒子出生时的初始速度和位移。这样使得用户或开发者对粒子的形态有更 好的控制。另外,粒子发射器可以很好的模拟燃烧物的几何形态,如圆柱,球等。这样可以 处理更多不同类型的火焰。2、作用力管理器。作用力是用于决定每一帧中粒子的加速度。 粒子系统中的作用力主要分为两种常规作用力(如风场,涡旋力,拉力等)和随机作用力 (如气流等)。通过常规作用力可以很好的塑造火焰的外观,随机作用力则用于增强火焰的 动态和自然感。在火焰模拟中,最影响效率的主要是两个步骤计算和渲染。对于渲染步骤通常 的做法是采用GPU(Graphic Processing Unit,图形处理器)程序设计,将需要绘制的数 据直接写入显卡的缓存中。在计算上,刘宁等在第31届IEEE国际计算机软件与应用年会 上提出了一种轨迹法来减少粒子系统的计算量(可参见文献Ning Liu, Rong Li, Zhenyu Yang, Hongyang Chao.An OptimizationMethod for Real-Time Natural Phenomena Simulation on WinCE Platform.3IstAnnual IEEE International Computer Software and Applications Conference,2007,Vol. 2,pp. 57-62)。对于大规模渲染而言,假定需要 渲染m个粒子,轨迹法先挑出η个粒子进行预处理,其中η << m。预处理的过程就是让这η个粒子在给定的粒子系统中经历一次生命周期,并且将每一帧这些粒子的属性都记录下 来。假定一个粒子总共有k帧的话,这k帧就构成了这个例子的一个轨迹。预处理结束后 粒子系统就有了η条轨迹。之后再进行真正的粒子数据的计算和渲染。粒子属性计算的方 式如下对于m个粒子,每个粒子出生时选定随机一条轨迹,之后每一帧都复制选定轨迹的 下一帧的属性。当粒子到达轨迹的末端时,再重新选择一条轨迹开始进行新的一轮的计算, 直到系统退出。可以看到轨迹法极大的减少了粒子系统的计算量。事实上,每一帧的计算量仅仅 是复制m个粒子属性结构所花的时间。但是,相应的这个方法付出的代价是火焰的真实感 大大下降。由于大量的粒子只能沿较少的轨迹运动,而且轨迹时静态的,即在预处理阶段生 成后就不再更新,因此火焰的自然性得不到保证。另外,对于大规模表面燃烧而言,当η个 轨迹无法覆盖整个表面时这个方法是不适用的,因为粒子仅能选取η个固定的发射点。
技术实现思路
考虑到上述技术问题,本专利技术人开始寻找能够提高火焰模拟效率同时能不丢失真 实感的方法。通过对粒子系统的分析,本专利技术人发现计算量最大的部分在于粒子的加速度, 达到了约84%的计算量。而事实上越复杂的粒子系统在这部分的计算开销也越大。因此本 专利技术人考虑对轨迹法进行改进。鉴于此,本专利技术提出了一种基于粒子系统的火焰模拟加速 改进算法,它一方面保持了轨迹法所带来的计算上的高效性,另一方面它克服了轨迹法模 拟火焰时出现的失真现象,同时它还能够适用于大规模表面燃烧的情况,拓广了轨迹法的 适用范围。本专利技术采用如下技术方案来实现一种基于粒子系统的火焰模拟加速改进算法,包括如下步骤假定当前系统模拟 的火焰需要η个粒子和m条轨迹;步骤1 预处理对η个粒子进行模拟计算,直到所有m个粒子都完成一整个生命周期,并且在模 拟过程中记录下粒子每一帧的属性,从而形成轨迹,所述轨迹包括以下属性加速度、颜色、 生命值;模拟计算的具体操作包括由作用力管理器生产下一帧的加速度,生命值=生命 值-更新时间X系数,颜色=初始颜色+(最终颜色-初始颜色)X生命值;预处理后得到 m条轨迹;步骤2:生成粒子由粒子发射器按照定义的规则随机产生η个粒子的初始位移和速度;步骤3:分配粒子轨迹对于生成的每一个粒子,为其选择一条轨迹;步骤4:更新和渲染(1)更新粒子属性对于每个粒子,拷贝其所属轨迹中对应当前帧的属性作为粒 子当前属性,即粒子加速度=轨迹加速度,粒子颜色=轨迹颜色,粒子生命值=轨迹生命 值,然后更新粒子其他属性,若粒子已经到达轨迹的最后一帧,则进入步骤5 ;(2)渲染粒子;(3)更新轨迹生命值属性,即生命值=生命值-更新时间X系数,其中系数为步骤51中所述的系数,如果轨迹的生命小于0,进入步骤6 ;(4)循环步骤4,直到系统退出;步骤5:重新生成粒子若有1个粒子完成了生命周期,则粒子发射器重新生成一个粒子,具体操作如步 骤2;步骤6:重新计算轨迹若有1条轨迹完成了生命周期,则用1个粒子重新进行一次模拟计算,具体操作如 步骤1,完成后得到一条新的轨迹,将新的轨迹的属性覆盖原有轨迹的属性,然后将原粒子 链表中的粒子全部进行一次重新生成,具体操作如步骤4。进一步的,在上述步骤2中,粒子的位移是依据选定的概率模型在发射器的表面 或内部随机产生的,而粒子的速度则是依据发射方向和发射角形成的圆锥内随机选择发射 方向。在上述步骤3中,为一个粒子选择一条轨迹对应的具体操作如下将该粒子的地 址添加进这条轨迹的结构中的粒子链表里,同时在粒子自身的属性里添加上该轨迹的编 号,并把当前帧数设为第一帧;在步骤5中,不再为该新生成的粒子分配新的轨迹,而是将 旧粒子从原轨迹的粒子链表中删除,把新粒子添加进粒子链表中,同时在新粒子的属性中 添加该轨迹的编号,并把当前帧数设为第一帧,然后返回步骤4。在上述步骤4的更新粒子属性中,所述其他属性包括粒子速度、粒子本文档来自技高网
...

【技术保护点】
1.一种基于粒子系统的火焰模拟加速改进算法,其特征在于包括如下步骤:假定当前系统模拟的火焰需要n个粒子和m条轨迹;步骤1:预处理对n个粒子进行模拟计算,直到所有m个粒子都完成一整个生命周期,并且在模拟过程中记录下粒子每一帧的属性,从而形成轨迹,所述轨迹包括以下属性:加速度、颜色、生命值;模拟计算的具体操作包括:由作用力管理器生产下一帧的加速度,生命值=生命值-更新时间×系数,颜色=初始颜色+(最终颜色-初始颜色)×生命值;预处理后得到m条轨迹;步骤2:生成粒子由粒子发射器按照定义的规则随机产生n个粒子的初始位移和速度;步骤3:分配粒子轨迹对于生成的每一个粒子,为其选择一条轨迹;步骤4:更新和渲染(1)更新粒子属性:对于每个粒子,拷贝其所属轨迹中对应当前帧的属性作为粒子当前属性,即粒子加速度=轨迹加速度,粒子颜色=轨迹颜色,粒子生命值=轨迹生命值,然后更新粒子其他属性,若粒子已经到达轨迹的最后一帧,则进入步骤5;(2)渲染粒子;(3)更新轨迹生命值属性,即生命值=生命值-更新时间×系数,其中系数为步骤1中所述的系数,如果轨迹的生命小于0,进入步骤6;(4)循环步骤4,直到系统退出;步骤5:重新生成粒子若有1个粒子完成了生命周期,则粒子发射器重新生成一个粒子,具体操作如步骤2;步骤6:重新计算轨迹若有1条轨迹完成了生命周期,则用1个粒子重新进行一次模拟计算,具体操作如步骤1,完成后得到一条新的轨迹,将新的轨迹的属性覆盖原有轨迹的属性,然后将原粒子链表中的粒子全部进行一次重新生成,具体操作如步骤4。...

【技术特征摘要】

【专利技术属性】
技术研发人员:吴庆标张寻李冬平刘春玲
申请(专利权)人:美通日用品杭州有限公司
类型:发明
国别省市:86

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1