一种基于积分公式的粒子计算方法及粒子系统技术方案

技术编号:16646087 阅读:84 留言:0更新日期:2017-11-26 21:02
一种基于积分公式的粒子计算方法及粒子系统,所述方法包括步骤:预设粒子在关键帧的运动状态参数;根据粒子的当前时间,求得当前时间的粒子的上一关键帧和下一关键帧;对粒子的运动状态参数进行线性插值并对差值公式求时间的定积分,求得当前时间的粒子相对于上一关键帧的静态属性参数偏移量;将上一关键帧的时间作为新的粒子的当前时间,进行上一关键帧的静态属性参数偏移量计算,直至上一关键帧为初始关键帧;对求得的静态属性参数偏移量,以及初始关键帧的静态属性参数进行累加,求得当前时间的粒子的静态属性参数。本发明专利技术可以更直接的求出粒子的位置、旋转角度等静态属性,还可以解决低端显卡无法通过GPU来加速粒子计算的问题。

A particle computing method based on integral formula and particle system

A calculation method and integral formula based on particle particle system, the method includes the steps of: particle motion state parameters preset in key frame; according to the current time of particles, a key frame to obtain the current time of particles and the next key frame; motion state parameters of particles by linear interpolation and definite integral for the time of the interpolation formula, the static attribute parameters of offset obtained current time of the particle relative to the previous key frame; the key frames of a time as the time of the new particle, the number of offset calculation of static attributes of the key frames a parameter, until a key frame for the initial frame of the key; the static attribute parameters obtained offset, and the initial key frame static attribute parameters are accumulated, static attribute parameters obtained the current time of particles. The invention can directly calculate the static position of the particle position and rotation angle, and can also solve the problem that the low end graphics card can not accelerate the particle calculation through GPU.

【技术实现步骤摘要】
一种基于积分公式的粒子计算方法及粒子系统
本专利技术涉及粒子系统
,特别是涉及一种基于积分公式的粒子计算方法。
技术介绍
通常粒子的计算需要使用上一帧计算的结果来累计计算下一帧的结果,而当相邻帧的时间不同粒子的计算周期不同时,由于在每一次计算中粒子的速度又为定值,这样会导致同样的粒子在不同帧率下可能会有不同的结果,从而需要多次重复计算。上述问题的一种解决方法是让粒子的计算独立于每帧的绘制并保持每帧间隔相同,然后在每帧中插值,由于插值通常是线性,或者适当的使用曲线,因此计算结果必然和原始数据不相同。与此同时,由于浮点精度问题,上述的两种方法无论哪个都无法让粒子回滚同样时间得到与之前相同的结果,无法精确的模拟时间倒流的效果。另一方面,因每次计算需要重新计算上一帧的计算结果,导致GPU如DX9.0b、OpenGLES2.0及更低的设备无法在顶点上缓存上一帧的计算结果,从而无法用于粒子计算,使得粒子的计算只能由CPU承担,占用CPU及显卡带宽。
技术实现思路
为了解决现有技术存在的不足,本专利技术的目的在于提供一种基于积分公式的粒子计算方法及粒子系统,可以更直接的求出粒子的位置、旋转角度等静态属性状态,同时还可以解决低端显卡无法通过GPU来加速粒子计算的问题。为实现上述目的,本专利技术提供的基于积分公式的粒子计算方法,包括以下步骤:(1)预设粒子在关键帧的运动状态参数;(2)根据粒子的当前时间,求得当前时间的粒子的上一关键帧和下一关键帧;(3)对粒子的运动状态参数进行线性插值并对差值公式求时间的定积分,求得当前时间的粒子相对于上一关键帧的静态属性参数偏移量;(4)将上一关键帧的时间作为新的粒子的当前时间,进行上一关键帧的静态属性参数偏移量计算,直至上一关键帧为初始关键帧;(5)对求得的静态属性参数偏移量,以及初始关键帧的静态属性参数进行累加,求得当前时间的粒子的静态属性参数。进一步地,所述运动状态参数为用于控制粒子运动和形状的参数。进一步地,所述步骤(2)中,当前时间的粒子位于某一个关键帧上,则将某一个关键帧的时间作为粒子的当前时间。进一步地,所述步骤(2)是,根据粒子的当前时间,通过二分查找法求得当前时间的粒子位于哪两个关键帧之间。进一步地,所述静态属性参数,包括:当前时间的粒子的位置、旋转角度和大小。所述步骤(3)进一步包括以下步骤:当静态属性参数是当前时间的粒子的位置时,在两个关键帧之间,对粒子的发射速度进行线性插值并对差值公式求时间的定积分,得到当前时间的粒子相对于上一关键帧的位置偏移量。所述步骤(3)进一步包括以下步骤:当静态属性参数是当前时间的粒子的旋转角度时,在两个关键帧之间,对粒子的自旋速度进行线性插值并对差值公式求时间的定积分,得到当前时间的粒子相对于上一关键帧的旋转角度偏移量。所述步骤(3)进一步包括以下步骤:当静态属性参数是当前时间的粒子的大小时,在两个关键帧之间,对粒子的膨胀速度进行线性插值并对差值公式求时间的定积分,得到当前时间的粒子相对于上一关键帧的大小偏移量。进一步地,还包括步骤:根据粒子计算模式的不同,将粒子在关键帧的运动状态参数和静态属性参数存入内存或转入显存。进一步地,还包括步骤:根据粒子的当前静态属性参数,得到粒子的当前顶点的静态属性参数。为实现上述目的,本专利技术提供的粒子系统,采用上述任一项基于积分公式的粒子计算方法进行粒子计算。本专利技术的基于积分公式的粒子计算方法及粒子系统的有益效果在于:1、原始粒子参数转换为积分参数时只在粒子创建或参数被修改时生成,实际存放的粒子参数和传统的计算方式所需要的参数完全一致。2、CPU代码和GPU代码基本相同,所以同一个粒子因为负载的需要可以自由切换使用那种方法来实现。3、因不需要上一帧的计算结果,所以当使用GPU计算时即使在不支持顶点纹理或顶点纹理效率低下的硬件上依然可以完全的执行。4、因通过时间直接得出粒子位置和状态,所以即便是刚进入视野的粒子也不需要重新发射而直接展示出喷射了很久的结果。5、因通过时间直接得出粒子位置和状态,可以利用时间递减实现时间倒流的效果。6、对大量的粒子,如雨水、雪花等,因CPU计算需要Lock大量顶点,开销巨大,所以放在GPU端计算时因参数较少性能较高,同时当遇到较复杂的效果时也可以做出和正常粒子一样的效果。7、在低端GPU上,模拟顶点的删除,由于粒子总量固定,因此即使某个粒子尚未被发射或提前消失(小于最大生命值)其顶点始终存在,将其四个顶点都放置在同一位置,在光栅化后不发生有效填充,从而隐藏顶点。8、使用同样的随机数种子,可以使位置相关参数相同的粒子出现在同样的位置,如下落的雨水与地面溅起的水花。本专利技术能够用于粒子系统中表现游戏中的颗粒物,通过对原粒子的运动状态公式进行定积分,直接求得粒子位置、旋转角度、大小等静态属性并通过实际绘制来表现每片粒子效果,相较于传统的粒子计算方法最大的特点是时间的唯一性,使得粒子的计算结果不受帧率计算周期的影响,并且可以任意回滚/快进。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,并与本专利技术的实施例一起,用于解释本专利技术,并不构成对本专利技术的限制。在附图中:图1为根据本专利技术的基于积分公式的粒子计算方法流程图。具体实施方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。图1为根据本专利技术的基于积分公式的粒子计算方法流程图,下面将参考图1,对本专利技术的基于积分公式的粒子计算方法进行详细描述。在步骤101,预设粒子在每个关键帧的运动状态参数。其中,运动状态参数为用于控制粒子运动和形状的参数。控制粒子运动的参数包括:发射速度、加速度与方向、重力加速度、风力强度与方向、自旋速度等;控制粒子形状的参数包括:膨胀速度、粒子的大小、长短轴的比例等。在步骤102,根据粒子的当前时间,通过二分查找法求得当前时间的粒子位于哪两个关键帧之间。其中,粒子的当前时间是粒子被发射持续一段时间后所在的时间点。该步骤中,若当前时间的粒子位于某一个关键帧上,则将某一个关键帧的时间作为粒子的当前时间。当在GPU端进行二分查找时,将每个常量寄存器当作一个关键帧,用粒子的当前时间与存放关键帧对应时间的w分量进行比较,来判断增加或减少访问常量寄存器的下标,从而查找出当前时间的粒子位于哪两个关键帧之间。当前时间的粒子所位于的两个关键帧,称为上一关键帧和下一关键帧。在步骤103,在两个关键帧之间,对粒子的运动状态参数进行线性插值并对差值公式求时间的定积分,求得当前时间的粒子相对于两个关键帧中上一关键帧的静态属性参数偏移量。其中,静态属性参数是粒子在一个瞬间里与时间无关的属性,包括:当前时间的粒子的位置、旋转角度、大小等。该步骤中,当静态属性参数是当前时间的粒子的位置时,位置偏移量有多个,多个位置偏移量的结果可以叠加,其中,相对于加速度的位置偏移量的算法为:在两个关键帧之间,对粒子的加速度进行线性插值并对差值公式求时间的定积分,得到时间求速度的公式,再对时间求速度的公式求时间的定积分,得到当前时间的粒子相对于两个关键帧中上一关键帧的加速度本文档来自技高网...
一种基于积分公式的粒子计算方法及粒子系统

【技术保护点】
一种基于积分公式的粒子计算方法,其特征在于,包括以下步骤:(1)预设粒子在关键帧的运动状态参数;(2)根据粒子的当前时间,求得当前时间的粒子的上一关键帧和下一关键帧;(3)对粒子的运动状态参数进行线性插值并对差值公式求时间的定积分,求得当前时间的粒子相对于上一关键帧的静态属性参数偏移量;(4)将上一关键帧的时间作为新的粒子的当前时间,进行上一关键帧的静态属性参数偏移量计算,直至上一关键帧为初始关键帧;(5)对求得的静态属性参数偏移量,以及初始关键帧的静态属性参数进行累加,求得当前时间的粒子的静态属性参数。

【技术特征摘要】
1.一种基于积分公式的粒子计算方法,其特征在于,包括以下步骤:(1)预设粒子在关键帧的运动状态参数;(2)根据粒子的当前时间,求得当前时间的粒子的上一关键帧和下一关键帧;(3)对粒子的运动状态参数进行线性插值并对差值公式求时间的定积分,求得当前时间的粒子相对于上一关键帧的静态属性参数偏移量;(4)将上一关键帧的时间作为新的粒子的当前时间,进行上一关键帧的静态属性参数偏移量计算,直至上一关键帧为初始关键帧;(5)对求得的静态属性参数偏移量,以及初始关键帧的静态属性参数进行累加,求得当前时间的粒子的静态属性参数。2.根据权利要求1所述基于积分公式的粒子计算方法,其特征在于,所述运动状态参数为用于控制粒子运动和形状的参数。3.根据权利要求1所述基于积分公式的粒子计算方法,其特征在于,所述步骤(2)中,当前时间的粒子位于某一个关键帧上,则将某一个关键帧的时间作为粒子的当前时间。4.根据权利要求1所述基于积分公式的粒子计算方法,其特征在于,所述步骤(2)是,根据粒子的当前时间,通过二分查找法求得当前时间的粒子位于哪两个关键帧之间。5.根据权利要求1所述基于积分公式的粒子计算方法,其特征在于,所述静态属性参数,包括:当前时间的粒子的位置、旋转角度和大小。6.根据权利要求1所述基于积分公式的粒子计算方法,其特征在...

【专利技术属性】
技术研发人员:朱博
申请(专利权)人:苏州蜗牛数字科技股份有限公司
类型:发明
国别省市:江苏,32

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

1