CN110310348A - 一种基于粒子系统的三维火焰动态模拟方法 - Google Patents
一种基于粒子系统的三维火焰动态模拟方法 Download PDFInfo
- Publication number
- CN110310348A CN110310348A CN201910614193.2A CN201910614193A CN110310348A CN 110310348 A CN110310348 A CN 110310348A CN 201910614193 A CN201910614193 A CN 201910614193A CN 110310348 A CN110310348 A CN 110310348A
- Authority
- CN
- China
- Prior art keywords
- flame
- texture
- dimensional
- particles
- simulation method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000005094 computer simulation Methods 0.000 title claims abstract description 18
- 239000002245 particle Substances 0.000 claims abstract description 144
- 238000004088 simulation Methods 0.000 claims abstract description 30
- 238000013507 mapping Methods 0.000 claims abstract description 18
- 238000009877 rendering Methods 0.000 claims abstract description 13
- 230000007480 spreading Effects 0.000 claims abstract description 12
- 238000002485 combustion reaction Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 17
- 230000008859 change Effects 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000012937 correction Methods 0.000 claims description 8
- 230000009466 transformation Effects 0.000 claims description 7
- 230000000007 visual effect Effects 0.000 claims description 5
- 230000005484 gravity Effects 0.000 claims description 4
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 16
- 238000005516 engineering process Methods 0.000 abstract description 9
- 230000008901 benefit Effects 0.000 abstract description 4
- 238000004364 calculation method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000001133 acceleration Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 230000009191 jumping Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 230000004907 flux Effects 0.000 description 2
- 238000000053 physical method Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000005452 bending Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008033 biological extinction Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005553 drilling Methods 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 239000007789 gas Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000007921 spray Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/56—Particle system, point based geometry or rendering
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于粒子系统的三维火焰动态模拟方法,其包括以下步骤:S1.通过粒子系统模拟三维火焰;S2.对系统中的火焰粒子进行纹理渲染;S3.模拟火势蔓延。本发明提供的基于粒子系统的三维火焰动态模拟方法借鉴了粒子系统模拟火焰的优点,并使用纹理映射技术提高火焰渲染速度,实现了符合火焰运动规律的实时动画及火势蔓延效果。
Description
技术领域
本发明涉及一种基于粒子系统的三维火焰动态模拟方法。
背景技术
随着计算机技术的发展,利用计算机模拟自然场景越来越受欢迎。自然场景模拟特别是流体模拟已广泛应用于现实生活中许多领域。自然场景中的火焰也是流体的一种。随着相关技术的发展,火焰模拟广泛应用于森林火灾蔓延分析、消防模拟演练、虚拟现实游戏等领域中。目前,火焰模拟方法主要分为3种:
(1)基于粒子系统的方法。为了描述火焰、云等不规则、结构会随时间变化的物体,Reeves在1983年提出了粒子系统方法。使用此方法模拟火焰可以实现火焰的大致形态。
(2)基于纹理技术的方法。Perlin等在1985年提出一种使用实体纹理和添加噪声的方法来模拟火焰动画。
(3)数学物理方法。基于数学物理模型的火焰模拟方法主要有两种:一种是拉格朗日法,另一种是欧拉方法。使用数学物理方法模拟火焰虽然计算过程复杂,但是能表现出比较真实的火焰形态。
使用基于N-S方程和纹理映射的火焰模拟方法来实现火焰模拟,简化了外力项的计算,提高了计算速度,可以实现实时的火焰动态模拟,但只适用于二维层面上的火焰模拟。
相对于数学物理方法和纹理映射方法,粒子系统总体上具有相同的表现规律。在模拟火焰喷雾等场景时,根据模拟场景的特点,设置好粒子的属性,并对众多的粒子进行维护和显示,这种三维场景在目前先进的图像处理器中是可以实现的。
但现有的粒子系统模拟火焰的方法,存在火焰外观及燃烧时摇曳现象不够逼真的弊端,使得模拟的真实性欠佳。
发明内容
为了克服现有技术的上述缺点,本发明提出了一种基于粒子系统的三维火焰动态模拟方法。
本发明解决其技术问题所采用的技术方案是:
一种基于粒子系统的三维火焰动态模拟方法,包括以下步骤:
S1.通过粒子系统模拟三维火焰;
S2.对系统中的火焰粒子进行纹理渲染;
S3.模拟火势蔓延。
与现有技术相比,本发明的积极效果是:
本发明提供的基于粒子系统的三维火焰动态模拟方法借鉴了粒子系统模拟火焰的优点,并使用纹理映射技术提高火焰渲染速度,实现了符合火焰运动规律的实时动画及火势蔓延效果。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为本发明实施例所采用的三维火焰动态模拟系统的结构示意图。
图2为本发明实施例提供的粒子系统中粒子的循环过程示意图。
图3是本发明实施例提供的火焰基本粒子的几何模型示意图。
图4是本发明实施例提供的纹理渲染过程的示意图。
图5(a)是本发明实施例所采用的部分起始类纹理片的示意图;
图5(b)是本发明实施例所采用的部分燃烧类纹理片的示意图;
图5(c)是本发明实施例所采用的部分扩展类纹理片的示意图。
图6是本发明实施例中纹理片的大小变化的示意图。
图7是本发明实施例中,对火势蔓延过程模拟的示意图。
具体实施方式
本发明提供一种三维火焰动态模拟方法,其基于三维火焰动态模拟系统实现,这种三维火焰动态模拟系统对模拟火焰中的众多粒子的生命周期进行维护,并使用粒子循环过程来模拟火焰跳动燃烧的动画效果。为使动画效果更加逼真,借助纹理技术,为系统中每个粒子都添加了纹理渲染,使火焰模型更加真实。最后借助Huygens-Rothermel方法实现火势蔓延的处理。请参阅图1,本发明实施例采用的三维火焰动态模拟系统以粒子系统为基础,包括粒子系统模块、运动场模块、纹理模块、参数控制模块四个大部分。
本实施例提供的基于粒子系统的三维火焰动态模拟方法包括以下步骤:
步骤S1、通过粒子系统模拟三维火焰;
其中,由于火焰的三维模拟系统需要突出显示其不同区域及不同颜色边缘效果的显示。为此,本方法基于两个具有颜色衰减器和线性力作用的粒子系统。其工作原理是先初始化粒子,赋予粒子固定属性及可变属性,固定属性包括形状、生命值、颜色和大小,可变属性包括位置、衰减速率、速度和加速度。在火焰经过的区域,按照速率随机产生粒子,生成的粒子按照自己的运动速度等参数不停的运动,一定时间后,粒子的生命值降为0,说明该粒子的生命期已经结束,就将该粒子删除,随后产生新粒子。多个粒子循环该过程,就可以模拟火焰跳动燃烧的效果了。
在开始模拟前,首先对火焰粒子的属性进行设定以及初始化。具体的:
(1)火焰粒子的初始形状及大小
请参阅图2。本实施例中,采用正四面体作为火焰基本粒子的几何模型,这种模型既从根本上消灭了视点盲区,又可以提高运算效率,提高火焰模型的流畅度。
(2)粒子的初始速度和加速度设定
生成动态火焰的重要因素是粒子的初始速度和加速度。本实施例中,用一个矢量来表示火焰粒子的速度,首先对其均值及随机变化率进行确定。
假设:火焰粒子的平均速度:
火焰的速度变化率:V'={Vx',Vy',Vz'}
则:粒子的初始速度:
粒子的加速度主要是由火焰粒子所受的合外力构成的。因此可以假定初始时刻火焰粒子不受其它力作用的,且粒子始终向上运动(沿z轴正方向运动)。
则有:
(3)火焰粒子的初始颜色设定
火焰粒子的颜色用RGBA模式。R,G,B分别表示颜色的红绿蓝三个组成分量;A表示粒子的透明度:用于表现当粒子燃烬的时候,颜色渐渐变暗,最后融入背景。
Color(i)=k(i)
其中,Color(i)表示:粒子大小为i时的颜色;它可以表示为所处位置高度的函数。该函数的作用是:在距离粒子头较近处,颜色多为红色、蓝色;靠近链的中部,颜色渐变为炙黄色,再往上为橙黄色,最后变为暗红色,直至消失。其亮度:
Bright(i)=h(i)
(4)火焰粒子的初始生存周期
粒子的活动时间是由其的生存期决定的。假设火焰粒子的平均生存周期为火焰的生存期随机变化率为L'。
则粒子的初始生存周期为:
该三维火焰的粒子模拟具体包括以下步骤:
S11.生成火焰粒子;
具体的,本发明采用叠加随机数近似正态分布的方法生成火焰粒子的初始位置。
三维初始位置为:
其中,Pos X、Pos Y和Pos Z是新产生粒子的初始位置。Rand()在±1之间取值,火焰的中间位置的密度会随着n的取值的增大而增加。通过变化式中的n值与xi,yi,zi的值就可以把粒子的初始位置变化到任意区域内。
假设系统中的最大粒子数为MAX_P,则可以确定每帧产生的粒子数为:
NUM_P=MAX_P*Rand()
本方法生成的火焰密度成高斯分布,中心粒子密集、边界稀疏,能充分表现出现实中火焰的团簇性。另外,本算法还继承了传统粒子系统中随机数干扰的优点,可以在耗费时间较少的情况下近似地得到采用正态分布才得到的结果。
S12.模拟火焰粒子的运动变化;
具体的,为了真实的模拟火焰粒子的运动,引入运动场,将火焰活动时的复杂的运动场简化为重力场、风力场和热浮力场,这些运动场以及它们的组合就可以描述火焰及其他的气体的复杂运动场。其中重力场G方向为y轴负方向,重力加速度为g;y轴的正方向表示初始燃烧热浮力场中的力F,大小与粒子到燃点距离的平方成正比;风力场中力W的大小可以用随机函数设置,通常分解成x轴方向(即水平方向)的分量及y轴方向(即竖直方向)的分量。通常需要控制这些运动场的参数来控制粒子的运动轨迹。
根据经典力学可以得到粒子在三维空间中的运动位移与速度微分方程如下:
上式中,P(t)代表火焰粒子位置,V(t)代表运动速度,A(t)是运动加速度;P0与V0分别是火焰粒子的初始位置与初始速度。对上式进行积分运算可得出:火焰粒子在任意时刻t的运动状态可由下式计算得到:
然后根据牛顿第一定律,在笛卡尔坐标系中,对火焰粒子所受重力G,风力W和热浮力F各个力场进行力的分解,再由上式可得出合外力作用下的粒子在任意时间间隔Δt的运动状态如下:
式中,W表示风速,θ为水平方向上风向与坐标轴的夹角,Rand()则是风力W的随机函数。这样就可以计算出在任意时刻火焰粒子的位置P(t)与速度V(t)。
步骤S2、对系统中的火焰粒子进行纹理渲染;
纹理片的选择与大小对于整体的模拟场景而言是至关重要的。从实际燃烧的情况分析可知:
请参阅图5(a),火焰刚刚开始燃烧时亮度比较弱、燃烧的范围比较小,因而可以采用较小的纹理片(控制其边长值),并挑选低亮度的纹理图片。
请参阅图5(b),随着燃烧温度的升高,火焰的亮度和密度将迅速增加,此时就必须采用较大、较密集、较为明亮的纹理图片;
请参阅图5(c),经过火焰燃烧中心以后,火焰燃烧的形态发生了很大的变化;会出现衰减和涡流的现象,火焰亮度逐渐下降,直至为零时消失。
对于纹理片的大小,它的规律是:刚产生的时候纹理片比较小;运动变化的过程当中纹理片不断地增大(以不断增加显示的密度和亮度);随后又逐渐减小,直至消失为零。
根据上述火焰燃烧不同阶段纹理图变化的描述,采用图6所示的过程实现上述变化。
本发明中的粒子纹理渲染方法把传统中的大量粒子更换为具有一定大小的纹理片。其中的任意一张纹理片都可以代替数目众多的粒子,因而能够节省大量的存储空间和计算控制时间。在实际模拟的场景中,不断地产生新的纹理片,并不断地变化其属性值,直到其消亡为止。在进行火焰粒子的纹理渲染前,首先初始化纹理图属性,具体的:
纹理片的属性与粒子的属性类似,主要包含纹理片中心点的坐标值、边长、生命周期、透明度、图片编号、旋转角度等等。
单个纹理片的数据结构如下:
火焰粒子的纹理渲染具体包括以下步骤:
S21.描述纹理片的运动变化特征;
在初始化了纹理图的属性之后,为了准确表现火焰的视觉效果、克服粒子系统中的过分随机性,还要对纹理图的整体分布做约束,使之与火焰燃烧的轮廓一致。因此将火焰燃烧的“标准”外形轮廓抽象出来,构建类二次指数曲线函数,并通过调节公式中的常数来实现火焰曲线距离燃烧中心的距离不同,表现出的不同的弯曲程度。基于上述分析,纹理片的运动变化特征被描述为:
TextureP.y+=STEP
TextureP.z+=rand()
其中,为采用的类二次指数曲线函数,C1是整体调节常数;rand()用来产生随机扰动;STEP为变化步长。
为了调节纹理片的合理密度,使燃烧的场景中不至于出现“空白”的现象,往往要合理调节纹理片在各个方向上的运动,使相邻两帧不会出现“跳跃”现象。如果是间接控制纹理片的数量,就会造成一些不必要的开销。
S22.选择纹理片;
纹理片的选择与大小对于整体的模拟场景而言是至关重要的。从实际燃烧的情况分析可知:火焰刚刚开始燃烧时亮度比较弱、燃烧的范围比较小,因而可以采用较小的纹理片(控制其边长值),并挑选低亮度的纹理图片;
随着燃烧温度的升高,火焰的亮度和密度将迅速增加,此时就必须采用较大、较密集、较为明亮的纹理图片;经过火焰燃烧中心以后,火焰燃烧的形态发生了很大的变化;会出现衰减和涡流的现象,火焰亮度逐渐下降,直至为零时消失。
根据上述分析,选择的部分纹理片如图5(a)、图5(b)及图5(c)所示。
对于纹理片的大小,它的规律是:刚产生的时候纹理片比较小;运动变化的过程当中纹理片不断地增大(以不断增加显示的密度和亮度);随后又逐渐减小,直至消失为零。可以通过控制TextureP.size的值控制纹理片的大小。即:
当TextureP.life∈(0,b)时候,纹理片不断增大;在燃烧的中心b附近,纹理片达到最大值;表明在燃烧的中心,火焰中的化学反应最为剧烈;
当TextureP.life∈(b,∞)时候,纹理片不断减小。
图6为一片纹理片大小变化的示意图。
S23.确定纹理片的旋转角度;
由于算法中采用的是二维正方形的纹理片,所以必须要保证纹理片的显示平面与人的观察视线始终保持垂直,否则就会出现意想不到的“不良”后果。正常情况下的火焰模拟是“整体性”的,其外形结构比较连续和完整;在视线旋转过一定的角度以后,就会出现纹理片的“萎缩”,使场景中出现很多“空隙”,特别是在大角度的旋转以后,纹理片就几乎变成了一条线段。这种情况偏离了火焰模拟的效果。必须要控制纹理片的旋转角度;并且这样的控制过程必须要实时进行,可以通过下面的赋值语句来完成:
TextureP.rot_x=Rotated.rot_x;
TextureP.rot_y=Rotated.rot_y;
TextureP.rot_z=Rotated.rot_z;
其中Rotated.rot_x为三维场景视角下,x轴的视线偏移角;
Rotated.rot_y为三维场景视角下,y轴的视线偏移角;
Rotated.rot_z为三维场景视角下,z轴的视线偏移角。
运用这种方法,我们对火焰的燃烧进行了多种类型的模拟实验,取得了比较理想的效果。实验表明:模型的运算速度比较快,占用的系统资源大幅减少;而且模拟出来的效果也比较逼真,具有很好的燃烧细节;能够表现多种不同类型、不同燃烧方向、不同燃烧密度和不同外界干扰的燃烧效果;基本能够满足人们对于计算机图形学中的模拟的实时性的要求。
步骤S3、模拟火势蔓延。
建立了火灾的动态模型之后,就要进一步考虑如何对火势的蔓延进行模拟了。Huygens-Rothermel方法采用矢量模型较好的模拟了火势蔓延的过程。
Huygens-Rothermel模型是基于能量守恒定律的物理机理模型,其基本思想是:火势的蔓延过程实际上是火焰前方未燃可燃物被连续点燃的过程。火焰区以辐射、对流、传导的方式向前方未燃物传热,当未燃的可燃物吸热升温达到燃点时,这些可燃物就被引燃,火焰前锋也就蔓延到该处。
Huygens-Rothermel模型用一个随时间变化的连续扩展的多边形来表示火势的蔓延区域。多边形的形状由一系列的周边控制点(认为是独立的火点)决定,通过计算每个控制点下一单位时间的蔓延椭圆来确定新的火场边界。并且这些控制点随着多边形的增大而增加,以保证一定的精度。蔓延方向由风速矢量和坡度矢量叠加决定,蔓延速率则由风速、坡向、可燃物(类型、静载量、密度、反应速率等等)等因子通过计算火势蔓延速率模型得到。
Rothermel模型虽然给出了有风速修正系数和坡度修正系数,但并未考虑风向与坡向夹角对火势蔓延的影响,因此本方法在使用Huygens-Rothermel模型建模时,使用线性几何方法构建风向坡度夹角对火势蔓延的影响。在利用该方法计算时,认为在计算的单位时间内,外界环境的参数保持不变。由于城市火灾火势蔓延时,外界参数变化较小,而且不像森林火灾那样,火势蔓延受风向和坡向的影响很大。因此,可以很好的使用该方法对城市火灾进行模拟。
火势蔓延模型的实现过程可以如图7中所示。
首先定义变量;
具体的:
σ:可燃物表面积体积比;
Pb:可燃物密度(kg/m3);
Qig:可燃物的点燃热(kJ/kg);
Vo:可燃物净载量理想反应速率(m/s);
Ipo:理想热通量;
IR:可燃物反应强度;
Φw:风速修正系数;
Φs:坡速修正系数;。
火势蔓延模型的实现过程包括以下步骤:
S31.确定蔓延过程中的参数;
依据能量守恒方程,可以计算出火焰蔓延的速率:
其中,Ipo为理想热通量;IR为火焰反映强度(kJ/min/m2);ζ为林火的蔓延率;Pb为可燃物密度(kg/m3);ε为有效热系数;Qig为可燃物的点燃热(kJ/kg)。
风速计算及其修正系数计算如下:
其中,Cw、bw为修正常数β为燃料紧密度;U为风速。
坡度计算及其修正系数计算如下:
Φs=5.275σ-0.3(tanθs)2
其中θs为坡度。
火焰反映强度计算如下:
βop=3.348σ-0.8189
S32.粒子系统实现;
粒子系统主要包括四个模块:粒子模块、粒子系统模块、运动场模块、纹理模块。
粒子模块的主要作用是对粒子的各个属性进行设置和更新。粒子主要包括的属性有:颜色及其变化率,位置,大小及其变化率,透明度等等。在粒子系统中,由于粒子是不断在运动的,每隔一定的时间,粒子运动到不同的位置时,它的其他的属性也会跟着发生不同的变化,这就需要用这个模块来对它们进行更新。这个模块主要是由类Particle来负责的,它的结构如下:
在上面的定义中,把粒子系统设为友元主要是为了使粒子系统能够更好地控制各个火焰粒子。Update()函数的功能主要是对新火焰粒子的各属性进行更新。其算法可描述为:首先要判断火焰粒子是否超过其生命期,如果超过了生命期,则表明该火焰粒子已死亡,就跳出Update()函数;如果没有超过其生命期,则更新火焰粒子的颜色、大小和透明度等属性。
粒子系统模块的主要功能是:生成新的火焰粒子并对粒子属性进行赋值;调用相应的更新函数对运动场作用下的火焰粒子的属性值进行更新;将满足消亡条件的粒子进行删除操作;对满足衍生条件的粒子进行衍生处理;采用纹理映射及混色处理技术绘制火焰粒子等。
S33.坐标变换;
通常来讲,二维纹理是定义在一个平面区域上的,它既可以用数学函数解析地表达,也能用各种数字化图像来离散的进行定义。在火焰粒子系统中,一般是采用二维纹理映射的方法进行渲染。在处理之后通常需要进行坐标变换将二维纹理平面映射到三维场景中。在图形绘制时,关键点就是建立物体空间坐标(x,y,z)与纹理空间坐标(u,v)之间的一一对应关系。在景物表面上任意一可见点P在纹理空间中都可以方便地找到其对应位置(u,v),在(u,v)处所定义的纹理值或颜色值,最终生成了三维图形表面上的纹理图案。
因此纹理映射问题实质可以简化成为从一个坐标系到另一个坐标系的变换问题。其中至少要涉及到两个映射,一是参数映射,即纹理空间坐标和景物空间坐标的映射,二是取景变换,即从景物空间到屏幕空间之间的一个投影映射。本发明将这两个变换将被合成一个变换,并设计了双向映射函数实现映射关系。
这里假设纹理图案是定义在纹理空间中的一个正交坐标系(u,v)中,三维场景是定义在景物空间的正交坐标系(x,y,z)中,而它在参数空间(θ,φ)中的表示是x(θ,φ),y(θ,φ),z(θ,φ),那么从纹理空间到参数空间的映射关系为:
θ=f(u,v),φ=g(u,v)
从参数空间到纹理空间的逆映射是:
u=r(θ,φ),v=s(θ,φ)
在系统中,可以使用如下代码完成其转换过程:
整个模拟方法在模拟系统中的工作流程总结如下:先将以往火灾中的数据(可燃物的具体信息)输入数据库中。系统将这些数据转换为火势蔓延模型中的变量。后台处理函数结合这些数据,以气流传感器,陀螺仪等提供一些室内气流速度、坡度为辅助参数,计算出风速和坡度的实时修订系数、火焰反应强度等等。接着,这些参数又会作为变量,传入实现粒子系统的接口函数里,粒子系统会根据这些参数来确定新粒子的生成方向、粒子的生命周期等等。经粒子合成,纹理渲染后,会生成逼真的小火簇。最后通过坐标转化,将这些小火簇的位置转化为三维坐标,显示在虚拟场景中。
本发明实施例提供的基于粒子系统的三维火焰动态模拟方法的有益效果包括:
1.从有限状态机的角度出发,对粒子系统进行了重新认识,并在粒子系统中添加了衍生的处理,以增加火焰的真实感;
2.采用三棱锥作为基本的火焰粒子提高了绘制速度,并避免了场景中的盲区;
3.考虑到火焰实际的影响因素与燃烧效果,引入了运动场,从而更加逼真的表现火焰燃烧时左右摆动的摇曳效果;
4.在绘制时,采用纹理映射与混色技术,使绘制的火焰效果更具真实性;
5.采用Huygens-Rothermel方法较为真实的模拟了三维场景中火势蔓延根据坡度、风势、可燃密度等的蔓延过程;
6.结合粒子系统方法、数学和物理方法以及纹理技术本身的优点,控制过程非常简单明了,易于实现,计算的复杂度很小,很容易实现高速计算,因此可以实现较快的模拟速度;
7.由于采用纹理片的叠加技术,从而节省了大量的粒子存储和计算的空间,大大节省了宝贵的计算机资源,提高了程序运行的效率。
Claims (10)
1.一种基于粒子系统的三维火焰动态模拟方法,其特征在于,包括以下步骤:
S1.通过粒子系统模拟三维火焰;
S2.对系统中的火焰粒子进行纹理渲染;
S3.模拟火势蔓延。
2.根据权利要求1所述的基于粒子系统的三维火焰动态模拟方法,其特征在于,所述步骤S1包括以下步骤:
S11.生成火焰粒子;
S12.模拟火焰粒子的运动变化。
3.根据权利要求2所述的基于粒子系统的三维火焰动态模拟方法,其特征在于,在所述步骤S11中,采用正四面体作为火焰基本粒子的几何模型。
4.根据权利要求2所述的基于粒子系统的三维火焰动态模拟方法,其特征在于,在所述步骤S12中,将火焰活动时的运动场简化为重力场、风力场和热浮力场;
所述重力场中的力沿Y轴负方向;
所述风力场中的力通过随机函数设置;
所述热浮力场中的力沿Y轴正方向,且所述热浮力场中的力的大小与粒子到燃点的距离的平方呈正比。
5.根据权利要求1所述的基于粒子系统的三维火焰动态模拟方法,其特征在于,所述步骤S2包括以下步骤:
S21.描述纹理片的运动变化特征;
S22.选择纹理片;
S23.确定纹理片的旋转角度。
6.根据权利要求5所述的基于粒子系统的三维火焰动态模拟方法,其特征在于,所述步骤S21中,所述纹理片的运动变化特征为:
TextureP.y+=STEP
TextureP.z+=rand()
其中,为采用的类二次指数曲线函数,C1是整体调节常数;rand()用来产生随机扰动;STEP为变化步长;TextureP为第P号纹理图片;x、y、z为纹理片的中心在三维直角坐标系中的坐标值。
7.根据权利要求6所述的基于粒子系统的三维火焰动态模拟方法,其特征在于,通过控制TextureP.size的值控制纹理片的大小:
当TextureP.life∈(0,b)时候,纹理片不断增大;
当TextureP.life∈(b,∞)时候,纹理片不断减小;
TextureP.life为第P号纹理图片的生命期;
b为燃烧的中心。
8.根据权利要求7所述的基于粒子系统的三维火焰动态模拟方法,其特征在于,在所述步骤S23中,通过以下赋值语句实现纹理片旋转角度的确定:
TextureP.rot_x=Rotated.rot_x
TextureP.rot_y=Rotated.rot_y
TextureP.rot_z=Rotated.rot_z
其中Rotated.rot_x为三维场景视角下,x轴的视线偏移角;
Rotated.rot_y为三维场景视角下,y轴的视线偏移角;
Rotated.rot_z为三维场景视角下,z轴的视线偏移角。
9.根据权利要求1所述的基于粒子系统的三维火焰动态模拟方法,其特征在于,所述步骤S3中包括以下步骤:
S31.确定蔓延过程中的参数;
S32.粒子系统实现;
S33.坐标变换。
10.根据权利要求9所述的基于粒子系统的三维火焰动态模拟方法,其特征在于,在所述步骤S31中,所述蔓延过程中的参数包括火焰蔓延的速率、风速、所述风速的修正系数、坡度、所述坡度的修正系数以及火焰反应强度;
在所述步骤S33中,假设纹理图案定义在纹理空间中的一个正交坐标系(u,v)中,三维场景定义在景物空间的正交坐标系(x,y,z)中,三维场景在参数空间(θ,φ)中的表示是x(θ,φ),y(θ,φ),z(θ,φ),则从纹理空间到参数空间的映射关系为:
θ=f(u,v),φ=g(u,v)
从参数空间到纹理空间的逆映射是:
u=r(θ,φ),v=s(θ,φ)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910614193.2A CN110310348A (zh) | 2019-07-09 | 2019-07-09 | 一种基于粒子系统的三维火焰动态模拟方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910614193.2A CN110310348A (zh) | 2019-07-09 | 2019-07-09 | 一种基于粒子系统的三维火焰动态模拟方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110310348A true CN110310348A (zh) | 2019-10-08 |
Family
ID=68078201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910614193.2A Pending CN110310348A (zh) | 2019-07-09 | 2019-07-09 | 一种基于粒子系统的三维火焰动态模拟方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110310348A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111612877A (zh) * | 2020-05-15 | 2020-09-01 | 北京林业大学 | 基于高度场的纹理模拟方法 |
CN111768480A (zh) * | 2020-07-03 | 2020-10-13 | 网易(杭州)网络有限公司 | 火焰动画生成方法及装置、计算机存储介质、电子设备 |
CN113468790A (zh) * | 2021-07-12 | 2021-10-01 | 湖北工业大学 | 一种基于改进粒子群算法的风速特征模拟方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426691A (zh) * | 2011-10-24 | 2012-04-25 | 克拉玛依红有软件有限责任公司 | 一种基于gpu的实时火焰效果的模拟方法 |
CN102915552A (zh) * | 2012-09-18 | 2013-02-06 | 中国科学院计算技术研究所 | 一种可控的火焰动画生成方法及其系统 |
CN103942839A (zh) * | 2014-05-13 | 2014-07-23 | 福州大学 | 树冠火蔓延三维可视化方法 |
-
2019
- 2019-07-09 CN CN201910614193.2A patent/CN110310348A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426691A (zh) * | 2011-10-24 | 2012-04-25 | 克拉玛依红有软件有限责任公司 | 一种基于gpu的实时火焰效果的模拟方法 |
CN102915552A (zh) * | 2012-09-18 | 2013-02-06 | 中国科学院计算技术研究所 | 一种可控的火焰动画生成方法及其系统 |
CN103942839A (zh) * | 2014-05-13 | 2014-07-23 | 福州大学 | 树冠火蔓延三维可视化方法 |
Non-Patent Citations (3)
Title |
---|
刘红霞: "基于粒子系统的火焰模拟方法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
李建微: "面向林火蔓延的虚拟地理环境构建技术研究", 《中国优秀博硕士学位论文全文数据库 (硕士) 农业科技辑》 * |
王继州: "基于改进的粒子系统的火焰模拟",", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111612877A (zh) * | 2020-05-15 | 2020-09-01 | 北京林业大学 | 基于高度场的纹理模拟方法 |
CN111612877B (zh) * | 2020-05-15 | 2023-09-01 | 北京林业大学 | 基于高度场的纹理模拟方法 |
CN111768480A (zh) * | 2020-07-03 | 2020-10-13 | 网易(杭州)网络有限公司 | 火焰动画生成方法及装置、计算机存储介质、电子设备 |
CN111768480B (zh) * | 2020-07-03 | 2024-04-09 | 网易(杭州)网络有限公司 | 火焰动画生成方法及装置、计算机存储介质、电子设备 |
CN113468790A (zh) * | 2021-07-12 | 2021-10-01 | 湖北工业大学 | 一种基于改进粒子群算法的风速特征模拟方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chiba et al. | Two‐dimensional visual simulation of flames, smoke and the spread of fire | |
Lamorlette et al. | Structural modeling of flames for a production environment | |
Beaudoin et al. | Realistic and controllable fire simulation | |
Sims | Particle animation and rendering using data parallel computation | |
CN110310348A (zh) | 一种基于粒子系统的三维火焰动态模拟方法 | |
US9619920B2 (en) | Method and system for efficient modeling of specular reflection | |
Zhao et al. | Voxels on fire [computer animation] | |
WO2023185262A1 (zh) | 光照渲染方法、装置、计算机设备和存储介质 | |
US11688108B2 (en) | Generating procedural textures with the aid of particles | |
CN106340053A (zh) | 动画特效的流体动力学框架 | |
CN101615300B (zh) | 一种屏幕空间微结构表面对象环境光遮挡方法 | |
CN102867336B (zh) | 一种基于热力学模型的固体燃烧过程模拟方法 | |
Balci et al. | Real-time 3d fire simulation using a spring-mass model | |
CN112473135B (zh) | 移动游戏的实时光照模拟方法、装置、设备及存储介质 | |
Yu et al. | A fire model for 2-D computer animation | |
Rødal et al. | Physically based simulation and visualization of fire in real-time using the gpu | |
Rose et al. | Real-time photorealistic stereoscopic rendering of fire | |
Hladký et al. | Fire Simulation in 3D Computer Animation with Turbulence Dynamics including Fire Separation and Profile Modeling | |
Kang et al. | Extending the photon mapping method for realistic rendering of hot gaseous fluids | |
Zhang | Research on Virtual Scene Design Methods for Unity3D Games | |
Pszczółkowska | Visual model of fire | |
Hu et al. | Large-scale realistic cloud rendering based on game engine | |
Eyman | Rediscovering Fire: A Survey of Current Fire Models and Applications to 3-D Studio Max | |
CN117274451A (zh) | 二维粒子动画的渲染方法、装置、电子设备及存储介质 | |
CN104091025A (zh) | 烟熏效果真实感模拟方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191008 |