CN103455323A - 一种粒子效果的实现方法及装置 - Google Patents
一种粒子效果的实现方法及装置 Download PDFInfo
- Publication number
- CN103455323A CN103455323A CN2013102823846A CN201310282384A CN103455323A CN 103455323 A CN103455323 A CN 103455323A CN 2013102823846 A CN2013102823846 A CN 2013102823846A CN 201310282384 A CN201310282384 A CN 201310282384A CN 103455323 A CN103455323 A CN 103455323A
- Authority
- CN
- China
- Prior art keywords
- particle
- present frame
- time
- parameter
- particie system
- 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.)
- Granted
Links
Images
Landscapes
- Medical Treatment And Welfare Office Work (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种粒子效果的实现方法及装置,以解决当前帧的帧数越大,实现当前帧粒子效果所需时间越长的问题。一种粒子效果的实现方法包括:获取所需实现粒子效果的帧数,记为当前帧的帧数;新建粒子系统的更新函数和影响器的更新函数;调用粒子系统的清空函数,将粒子系统的粒子全部去除;设置粒子系统的发射速率和最大存活时间;调用所述粒子系统的更新函数创建当前帧粒子并修改所述当前帧粒子的发射速率、最大存活时间和位置信息;调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新;调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果。本发明节省了实现当前帧粒子效果所需的时间。
Description
技术领域
本发明涉及视音频编辑技术领域,特别是涉及一种粒子效果的实现方法及装置。
背景技术
粒子效果是使用第三方的软件开发工具包(Software Development Kit,SDK)实现底层的控制及渲染的,第三方的SDK提供的方法是个顺序播放的过程,而粒子编辑器在使用过程中,会经常使用到seek。seek就是得到当前帧的粒子效果。为了达到seek效果与播放效果一致,seek操作其实是将seek这一帧上显示出来的粒子,让其都经历从出生到当前状态的变化过程后的数据,而后读取一帧数据。
如果读取一帧时间为t0,seek的帧为n,则seek所需的时间为:n*t0。例如,当seek的帧n=1时,seek花费的时间为t0,时间最短;当seek的帧n=10时,seek花费的时间为10*t0。因此目前的获取粒子效果的方法中,获取当前帧的粒子效果所需要的时间与当前帧的帧数有关,当前帧的帧数越大,获取当前帧的粒子效果所需要的时间越长,即seek的n值越大,seek花费的时间越长。
发明内容
本发明提供一种粒子效果的实现方法及装置,以解决当前帧的帧数越大,实现当前帧粒子效果所需时间越长的问题。
为了解决上述问题,本发明公开了一种粒子效果的实现方法,包括:
获取所需实现粒子效果的帧数,记为当前帧的帧数;
新建粒子系统的更新函数和影响器的更新函数;
调用粒子系统的清空函数,将粒子系统的粒子全部去除;
设置粒子系统的发射速率和最大存活时间;
调用所述粒子系统的更新函数创建当前帧粒子并修改所述当前帧粒子的发射速率、最大存活时间和位置信息;
调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新;
调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果。
可选地,所述调用所述粒子系统的更新函数创建当前帧粒子,包括:
将所述粒子的最大存活时间和粒子系统从创建到当前帧经历的时间中较小的值,乘以所述粒子系统的发射速度,所得积值为粒子系统正常发射时,播放到当前帧的粒子数目,将所述粒子数目作为在所述当前帧产生的粒子数目;
调用创建粒子函数,创建与所述当前帧产生的粒子数目一致的粒子作为当前帧粒子。
可选地,所述修改所述当前帧粒子的发射速率、最大存活时间和位置信息,包括:
依据所述粒子系统的发射速率修改所述当前帧粒子的发射速率;
依据所述粒子系统的最大存活时间修改所述当前帧粒子的最大存活时间;
计算当前帧粒子的生命剩余时间并记录所述当前帧粒子的关键帧,当所述当前帧粒子吸附于发射器时,修改所述当前帧粒子的位置信息为当前帧数对应的位置信息;当所述当前帧粒子不吸附于发射器时,依据当前帧粒子的生命剩余时间计算出粒子产生时的帧数,修改所述当前帧粒子的位置信息为所述产生时的帧数对应的位置信息。
可选地,所述计算当前帧粒子的生命剩余时间,包括:
计算当前帧粒子从出生到当前时刻,经历的生命周期数;
用所述当前帧粒子从出生到当前时刻所经历的时间减去所述生命周期数的时间长度,所得差值作为中间值;
用所述当前帧粒子的生命周期减去所述中间值,所得差值作为当前帧粒子的生命剩余时间。
可选地,所述当前帧粒子的各参数包括:粒子速度、粒子重力、粒子运动范围、粒子大小、粒子颜色、粒子反弹、粒子旋转;
当所述当前帧粒子的参数为粒子速度时,所述调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新,包括:
调用粒子速度影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;
计算每一个当前帧粒子的运动方向参数;
计算每一个当前帧粒子的位置参数;
当所述当前帧粒子的参数为粒子大小时,所述调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新,包括:
调用粒子大小影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;
计算每一个当前帧粒子的尺寸的宽参数;
计算每一个当前帧粒子的尺寸的高参数。
本发明还公开了一种粒子效果的实现装置,包括:
帧数获取模块,用于获取所需实现粒子效果的帧数,记为当前帧的帧数;
新建模块,用于新建粒子系统的更新函数和影响器的更新函数;
去除模块,用于调用粒子系统的清空函数,将粒子系统的粒子全部去除;
设置模块,用于设置粒子系统的发射速率和最大存活时间;
创建模块,用于调用所述粒子系统的更新函数创建当前帧粒子;
修改模块,用于修改所述当前帧粒子的发射速率、最大存活时间和位置信息;
更新模块,用于调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新;
渲染模块,用于调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果。
可选地,所述创建模块包括:
粒子数计算子模块,用于将所述粒子的最大存活时间和粒子系统从创建到当前帧经历的时间中较小的值,乘以所述粒子系统的发射速度,所得积值为粒子系统正常发射时,播放到当前帧的粒子数目,将所述粒子数目作为在所述当前帧产生的粒子数目;
粒子创建子模块,用于调用创建粒子函数,创建与所述当前帧产生的粒子数目一致的粒子作为当前帧粒子。
可选地,所述修改模块包括:
发射速率修改子模块,用于依据所述粒子系统的发射速率修改所述当前帧粒子的发射速率;
存活时间修改子模块,用于依据所述粒子系统的最大存活时间修改所述当前帧粒子的最大存活时间;
位置信息修改子模块,用于计算当前帧粒子的生命剩余时间并记录所述当前帧粒子的关键帧,当所述当前帧粒子吸附于发射器时,修改所述当前帧粒子的位置信息为当前帧数对应的位置信息;当所述当前帧粒子不吸附于发射器时,依据当前帧粒子的生命剩余时间计算出粒子产生时的帧数,修改所述当前帧粒子的位置信息为所述产生时的帧数对应的位置信息。
可选地,所述位置信息修改子模块用于:计算当前帧粒子从出生到当前时刻,经历的生命周期数;用所述当前帧粒子从出生到当前时刻所经历的时间减去所述生命周期数的时间长度,所得差值作为中间值;用所述当前帧粒子的生命周期减去所述中间值,所得差值作为当前帧粒子的生命剩余时间。
可选地,所述当前帧粒子的各参数包括:粒子速度、粒子重力、粒子运动范围、粒子大小、粒子颜色、粒子反弹、粒子旋转;
所述更新模块,用于在所述当前帧粒子的参数为粒子速度时,调用粒子速度影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;计算每一个当前帧粒子的运动方向参数;计算每一个当前帧粒子的位置参数;
所述更新模块,用于在所述当前帧粒子的参数为粒子大小时,调用粒子大小影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;计算每一个当前帧粒子的尺寸的宽参数;计算每一个当前帧粒子的尺寸的高参数。
与现有技术相比,本发明包括以下优点:
本发明通过扩展第三方SDK的粒子系统,增加了粒子系统的更新函数和影响器的更新函数,用于seek调用,实现了粒子系统的seek功能。具体通过调用粒子系统的清空函数,将粒子系统的粒子全部去除,之后设置粒子系统的发射速率和最大存活时间,然后调用所述粒子系统的更新函数创建当前帧粒子并修改所述当前帧粒子的发射速率、最大存活时间和位置信息,接着调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新,最后调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果,使得不论需要实现第几帧的粒子效果,只需要进行一次数据计算,即本实施例中实现当前帧粒子效果所需的时间与当前帧的帧数没有直接关系,可以节省实现粒子效果所需的时间,提高了实现当前帧粒子效果的效率,从而解决了当前帧的帧数越大,实现当前帧粒子效果所需时间越长的问题。
附图说明
图1是本发明实施例一种粒子效果的实现方法的流程图;
图2是本发明实施例一种粒子效果的实现装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明一种粒子效果的实现方法的流程图,本实施例具体可以包括以下步骤:
步骤101,获取所需实现粒子效果的帧数,记为当前帧的帧数。
例如,需要实现粒子效果的是第5帧,帧数为5,那么当前帧的帧数也记为5,即当前帧记为第5帧。
步骤102,新建粒子系统的更新函数和影响器的更新函数。
本实施例对第三方的SDK进行了扩展,增加了粒子系统的更新函数和影响器的更新函数。粒子系统的更新函数用于创建粒子以及通过粒子系统的更新函数计算当前帧时,生成的粒子数,每一粒子的生命剩余时间、粒子的位置信息修改等内容。粒子系统有几种类型的影响器,例如:粒子速度影响器、粒子大小影响器等,每一类型的影响器有其对应的更新函数。可以通过调用影响器的更新函数,对粒子的各参数进行更新,设置发射器距离下一次发射已经经历的时间,如果大于1,则发射粒子。
步骤103,调用粒子系统的清空函数,将粒子系统的粒子全部去除。
为了节省实现当前帧的粒子效果所用的时间,本实施例首先调用粒子系统的清空函数,将粒子系统的粒子全部取去除。之后再新建与当前帧生成的粒子数一致的粒子(在后续步骤中具体说明)。
步骤104,设置粒子系统的发射速率和最大存活时间。
例如,本实施例中可以设置粒子系统的发射速率为25帧/秒。
步骤105,调用所述粒子系统的更新函数创建当前帧粒子并修改所述当前帧粒子的发射速率、最大存活时间和位置信息。
在本发明的一种优选实施例中,所述调用所述粒子系统的更新函数创建当前帧粒子,具体可以包括以下子步骤:
子步骤1,将所述粒子的最大存活时间和粒子系统从创建到当前帧经历的时间中较小的值,乘以所述粒子系统的发射速度,所得积值为粒子系统正常发射时,播放到当前帧的粒子数目,将所述粒子数目作为在所述当前帧产生的粒子数目;
可以结合以下程序段理解子步骤1的内容:
if(timeElapsedFromCreat<=mTimeToLive)
mParticleCount=mEmissionRate*timeElapsedFromCreat;
else
mParticleCount=mEmissionRate*mTimeToLive;
其中,mEmissionRate为粒子系统的发射速率,mTimeToLive为粒子的最大存活时间,timeElapsedFromCreat为粒子系统创建到当前帧经历的时间,mParticleCount为当前帧产生的粒子数目
需要说明的是,对于单一粒子本实施例可以采取单一处理的方式,对于单一粒子来说,不论播放了多少帧,粒子数一直为1,即当前帧产生的粒子数目为1。
子步骤2,调用创建粒子函数,创建与所述当前帧产生的粒子数目一致的粒子作为当前帧粒子。
例如,上述子步骤1中获得的当前帧产生的粒子数目为10,那么子步骤2调用创建粒子函数,创建10个粒子作为当前帧粒子。
在本发明的一种优选实施例中,所述修改所述当前帧粒子的发射速率、最大存活时间和位置信息,具体可以通过以下方式来实现:
1)依据所述粒子系统的发射速率修改所述当前帧粒子的发射速率;
即将步骤104设置的粒子系统的发射速率作为当前帧粒子的发射速率,也就是说将当前帧粒子的发射速率修改为步骤104设置的粒子系统的发射速率。
2)依据所述粒子系统的最大存活时间修改所述当前帧粒子的最大存活时间;
即将步骤104设置的粒子系统的最大存活时间作为当前帧粒子的最大存活时间,也就是说将当前帧粒子的最大存活时间修改为步骤104设置的粒子系统的最大存活时间。
3)计算当前帧粒子的生命剩余时间并记录所述当前帧粒子的关键帧,当所述当前帧粒子吸附于发射器时,修改所述当前帧粒子的位置信息为当前帧数对应的位置信息;当所述当前帧粒子不吸附于发射器时,依据当前帧粒子的生命剩余时间计算出粒子产生时的帧数,修改所述当前帧粒子的位置信息为所述产生时的帧数对应的位置信息。
本实施例中计算当前帧粒子的生命剩余时间,可以通过以下方式来实现:
首先,计算当前帧粒子从出生到当前时刻,经历的生命周期数。
例如,计算得到的生命周期数记为k。
其次,用所述当前帧粒子从出生到当前时刻所经历的时间减去所述生命周期数的时间长度,所得差值作为中间值。
例如当前帧粒子的每个生命周期为T,那么k*T即为生命周期数的时间长度,如果当前帧粒子从出生到当前时刻所经历的时间为tn,(tn-k*T)即为上述中间值。
最后,用所述当前帧粒子的生命周期减去所述中间值,所得差值作为当前帧粒子的生命剩余时间。
即用当前帧粒子的生命周期T减去上述中间值(tn-k*T),就可以得到当前帧粒子的生命剩余时间tm。
即当前帧粒子的生命剩余时间tm=T-(tn-k*T)。
本实施例中当前帧粒子位置信息的计算方法为:将粒子的位置关键帧均记录下来,在粒子seek时,根据粒子是否吸附于发射器来做不同的处理。
当所述当前帧粒子吸附于发射器时,修改所述当前帧粒子的位置信息为当前帧数对应的位置信息。由于吸附于发射器时,产生的粒子均在当前帧的位置上发射,并受其他参数的作用,形成效果,因此对于吸附于发射器的当前帧粒子,可以将当前帧数对应的位置信息作为当前帧的位置信息。
当所述当前帧粒子不吸附于发射器时,依据当前帧粒子的生命剩余时间计算出粒子产生时的帧数,修改所述当前帧粒子的位置信息为所述产生时的帧数对应的位置信息。由于不吸附于发射器时,产生的粒子将根据粒子生命的剩余时间计算出粒子产生时的帧数,因此需要改变粒子的发射位置为该帧数对应下的位置信息,即将粒子产生数的帧数对应的位置信息作为当前帧粒子的位置信息。本实施例中所说位置信息即为粒子的发射位置。
本实施例中关键帧对应的位置X数组通过以下方式计算:
PosX=ValueX[iIndex-1]+(ValueX[iIndex]-ValueX[iIndex-1])/(float)(Key[iIndex]-Key[iIndex-1])*(float)(cFrame-Key[iIndex-1]);
其中,ValueX表示关键帧对应的位置X数组,Key表示关键帧数组,cFrame表示当前帧,并满足:cFrame>=iIndex-1;cFrame<iIndex;PosX表示位置X。位置PosY及PosZ的计算方法与位置X类似,本实施例在此不作赘述。
步骤106,调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新。
本实施例中所述当前帧粒子的各参数具体可以包括:粒子速度、粒子重力、粒子运动范围、粒子大小、粒子颜色、粒子反弹、粒子旋转等参数。
需要说明的是,上述当前帧粒子的参数中有些参数的当前参数值受到之前参数值的影响,例如:粒子速度、粒子重力和粒子的运动范围,其分别对应粒子速度影响器、粒子重力影响器和粒子运动范围影响器。另外有些参数的参数值不受之前参数值的影响,例如粒子大小、粒子颜色、粒子反弹和粒子旋转等参数,分别对应粒子大小影响器、粒子颜色影响器、粒子反射影响器和粒子旋转影响器。
在本发明的一种优选实施例中,当所述当前帧粒子的参数为粒子速度时,所述调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新,具体可以包括:
一、调用粒子速度影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化。
例如,可以根据当前帧粒子的剩余存活时间(timeToLive)、总存活时间(totalTimeToLive),计算粒子的已存活时间(particle_time),并归一化到[0,1],采用的公式为下列公式一:
particle_time=1.0f-(p->timeToLive)/p->totalTimeToLive (公式一)
二、计算每一个当前帧粒子的运动方向参数。
本实施例具体可以根据已存活时间particle_time,得到当前时间值在关键帧数组上的前一关键帧时间值OverLifeAdj[i]和后一关键帧时间值OverLifeAdj[i+1],同时,既能得到前一关键帧速度值VelocityAdj[i]和后一关键帧速度值VelocityAdj[i+1],具有相同的i值。计算速度curVelocity可以采用以下公式二:
curVelocity=(VelocityAdj[i]-VelocityAdj[i-1])/
(OverLifeAdj[i]-OverLifeAdj[i-1])*(particle_time-OverLifeAdj[i-1])+VelocityAdj[i-1] (公式二)
当前帧粒子的方向值为发射的方向p->emitterDirection与速度curVelocity的乘积,采用以下公式三:
p->direction=p->emitterDirection*curVelocity (公式三)
三、计算每一个当前帧粒子的位置参数。
根据已存活时间particle_time,得到当前时间值在关键帧数组上的前一关键帧时间值OverLifeAdj[i]和后一关键帧时间值OverLifeAdj[i+1],同时,既能得到前一关键帧速度值VelocityAdj[i]和后一关键帧速度值VelocityAdj[i+1],具有相同的i值。
当前帧粒子的位置的计算过程如下:
Forj=0,j<=i;
关键帧时间OverLifeAdj[j],OverLifeAdj[j+1];
关键帧速度VelocityAdj[j],VelocityAdj[j+1];
计算平均速度fVelocity=VelocityAdj[j]+VelocityAdj[j+1]/2; (公式四)
计算对应的时间:
fTime=(OverLifeAdj[j+1]-OverLifeAdj[j])*ptotalTimeToLive (公式五)
(当j=i时,fTime=(particle_time-OverLifeAdj[j])*ptotalTimeToLive)
计算此时间段的位置偏移量fValue=Velocity*fTime; (公式六)
计算此时间段后粒子的位置p->position+fValue;直到循环结束。
在本发明的一种优选实施例中,当所述当前帧粒子的参数为粒子大小时,所述调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新,具体可以包括:
一、调用粒子大小影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化。
例如,可以根据粒子的剩余存活时间(timeToLive)、总存活时间(totalTimeToLive),计算粒子的已存活时间(particle_time),并归一化到[0,1],所采用的公式为下列公式七:
particle_time=1.0f-(p->timeToLive)/p->totalTimeToLive; (公式七)
二、计算每一个当前帧粒子的尺寸的宽参数。
根据以存活时间particle_time,得到当前时间值在关键帧数组上的前一关键帧时间值OverLifeAdj[i]和后一关键帧时间值OverLifeAdj[i+1],同时,既能得到前一关键帧宽值ScaleWAdj[i]和后一关键帧宽值ScaleWAdj[i+1],具有相同的i值。
计算当前宽比例值curScaleW采用下列公式八:
curScaleW=(ScaleWAdj[i]-ScaleWAdj[i-1])/
(OverLifeAdj[i]-OverLifeAdj[i-1])*(particle_time-OverLifeAdj[i-1])+ScaleWAdj[i-1]; (公式八)
计算当前宽值采用下列公式九:
NewWide=p->emitterWidth*curScaleW (公式九)
设置粒子的尺寸宽值p->mWidth=NewWide。
三、计算每一个当前帧粒子的尺寸的高参数。
计算每一个当前粒子的尺寸的高参数与计算每一个当前帧粒子的尺寸的宽参数类似,本实施例在此不做赘述。
步骤107,调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果。
前述步骤101-步骤106相当于获取了渲染所需的当前帧粒子的各参数,本步骤107需要调用渲染函数,依据所述当前帧粒子的各参数进行渲染,就可以实现所述当前帧粒子的粒子效果了。
本实施例通过扩展第三方SDK的粒子系统,增加了粒子系统的更新函数和影响器的更新函数,用于seek调用,实现了粒子系统的seek功能。具体通过调用粒子系统的清空函数,将粒子系统的粒子全部去除,之后设置粒子系统的发射速率和最大存活时间,然后调用所述粒子系统的更新函数创建当前帧粒子并修改所述当前帧粒子的发射速率、最大存活时间和位置信息,接着调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新,最后调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果,使得不论需要实现第几帧的粒子效果,只需要进行一次数据计算,即本实施例中实现当前帧粒子效果所需的时间与当前帧的帧数没有直接关系,可以节省实现粒子效果所需的时间,提高了实现当前帧粒子效果的效率,从而解决了当前帧的帧数越大,实现当前帧粒子效果所需时间越长的问题。
参照图2,示出了本发明一种粒子效果的实现装置的结构框图,本实施例具体可以包括:帧数获取模块21、新建模块22、去除模块23、设置模块24、创建模块25、修改模块26、更新模块27和渲染模块28,其中,
帧数获取模块21,用于获取所需实现粒子效果的帧数,记为当前帧的帧数。
例如,帧数获取模块21获取到的需要实现粒子效果的是第5帧,帧数为5,那么当前帧的帧数也记为5,即当前帧记为第5帧。
新建模块22,用于新建粒子系统的更新函数和影响器的更新函数。
本实施例对第三方的SDK进行了扩展,通过新建模块22增加了粒子系统的更新函数和影响器的更新函数。粒子系统的更新函数用于创建粒子以及通过粒子系统的更新函数计算当前帧时,生成的粒子数,每一粒子的生命剩余时间、粒子的位置信息修改等内容。粒子系统有几种类型的影响器,例如:粒子速度影响器、粒子大小影响器等,每一类型的影响器有其对应的更新函数。可以通过调用影响器的更新函数,对粒子的各参数进行更新,设置发射器距离下一次发射已经经历的时间,如果大于1,则发射粒子。
去除模块23,用于调用粒子系统的清空函数,将粒子系统的粒子全部去除。
为了节省实现当前帧的粒子效果所用的时间,本实施例通过去除模块23调用粒子系统的清空函数,将粒子系统的粒子全部取去除。之后再新建与当前帧生成的粒子数一致的粒子(在后续模块中具体说明)。
设置模块24,用于设置粒子系统的发射速率和最大存活时间。
例如,本实施例中设置模块24可以设置粒子系统的发射速率为25帧/秒。
创建模块25,用于调用所述粒子系统的更新函数创建当前帧粒子;
在本发明的一种优选实施例中创建模块25具体可以包括:粒子数计算子模块和粒子创建子模块,其中,
粒子数计算子模块,用于将所述粒子的最大存活时间和粒子系统从创建到当前帧经历的时间中较小的值,乘以所述粒子系统的发射速度,所得积值为粒子系统正常发射时,播放到当前帧的粒子数目,将所述粒子数目作为在所述当前帧产生的粒子数目;
粒子创建子模块,用于调用创建粒子函数,创建与所述当前帧产生的粒子数目一致的粒子作为当前帧粒子。
修改模块26,用于修改所述当前帧粒子的发射速率、最大存活时间和位置信息。
在本发明的一种优选实施例中,所述修改模块26具体可以包括:发射速率修改子模块、存活时间修改子模块和位置信息修改子模块,其中,
发射速率修改子模块,用于依据所述粒子系统的发射速率修改所述当前帧粒子的发射速率;
存活时间修改子模块,用于依据所述粒子系统的最大存活时间修改所述当前帧粒子的最大存活时间;
位置信息修改子模块,用于计算当前帧粒子的生命剩余时间并记录所述当前帧粒子的关键帧,当所述当前帧粒子吸附于发射器时,修改所述当前帧粒子的位置信息为当前帧数对应的位置信息;当所述当前帧粒子不吸附于发射器时,依据当前帧粒子的生命剩余时间计算出粒子产生时的帧数,修改所述当前帧粒子的位置信息为所述产生时的帧数对应的位置信息。
在本发明的另一种优先实施例中,所述位置信息修改子模块用于:计算当前帧粒子从出生到当前时刻,经历的生命周期数;用所述当前帧粒子从出生到当前时刻所经历的时间减去所述生命周期数的时间长度,所得差值作为中间值;用所述当前帧粒子的生命周期减去所述中间值,所得差值作为当前帧粒子的生命剩余时间。
更新模块27,用于调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新;
所述当前帧粒子的各参数具体可以包括:粒子速度、粒子重力、粒子运动范围、粒子大小、粒子颜色、粒子反弹、粒子旋转;
在本发明的一种优选实施例中,所述更新模块27可以用于在所述当前帧粒子的参数为粒子速度时,调用粒子速度影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;计算每一个当前帧粒子的运动方向参数;计算每一个当前帧粒子的位置参数;
在本发明的一种优选实施例中,所述更新模块27可以用于在所述当前帧粒子的参数为粒子大小时,调用粒子大小影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;计算每一个当前帧粒子的尺寸的宽参数;计算每一个当前帧粒子的尺寸的高参数。
渲染模块28,用于调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果。
前述模块21-27相当于获取了渲染所需的当前帧粒子的各参数,渲染模块28需要调用渲染函数,依据所述当前帧粒子的各参数进行渲染,就可以实现所述当前帧粒子的粒子效果了。
本实施例通过新建模块22扩展第三方SDK的粒子系统,增加了粒子系统的更新函数和影响器的更新函数,用于seek调用,实现了粒子系统的seek功能。具体通过去除模块23调用粒子系统的清空函数,将粒子系统的粒子全部去除,之后设置模块24设置粒子系统的发射速率和最大存活时间,然后创建模块25调用所述粒子系统的更新函数创建当前帧粒子,修改模块26修改所述当前帧粒子的发射速率、最大存活时间和位置信息,接着更新模块27调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新,最后渲染模块28调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果,使得不论需要实现第几帧的粒子效果,只需要进行一次数据计算,即本实施例中实现当前帧粒子效果所需的时间与当前帧的帧数没有直接关系,可以节省实现粒子效果所需的时间,提高了实现当前帧粒子效果的效率,从而解决了当前帧的帧数越大,实现当前帧粒子效果所需时间越长的问题。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见图1方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本发明所提供的一种粒子效果的实现方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种粒子效果的实现方法,其特征在于,包括:
获取所需实现粒子效果的帧数,记为当前帧的帧数;
新建粒子系统的更新函数和影响器的更新函数;
调用粒子系统的清空函数,将粒子系统的粒子全部去除;
设置粒子系统的发射速率和最大存活时间;
调用所述粒子系统的更新函数创建当前帧粒子并修改所述当前帧粒子的发射速率、最大存活时间和位置信息;
调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新;
调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果。
2.根据权利要求1所述的方法,其特征在于,所述调用所述粒子系统的更新函数创建当前帧粒子,包括:
将所述粒子的最大存活时间和粒子系统从创建到当前帧经历的时间中较小的值,乘以所述粒子系统的发射速度,所得积值为粒子系统正常发射时,播放到当前帧的粒子数目,将所述粒子数目作为在所述当前帧产生的粒子数目;
调用创建粒子函数,创建与所述当前帧产生的粒子数目一致的粒子作为当前帧粒子。
3.根据权利要求1所述的方法,其特征在于,所述修改所述当前帧粒子的发射速率、最大存活时间和位置信息,包括:
依据所述粒子系统的发射速率修改所述当前帧粒子的发射速率;
依据所述粒子系统的最大存活时间修改所述当前帧粒子的最大存活时间;
计算当前帧粒子的生命剩余时间并记录所述当前帧粒子的关键帧,当所述当前帧粒子吸附于发射器时,修改所述当前帧粒子的位置信息为当前帧数对应的位置信息;当所述当前帧粒子不吸附于发射器时,依据当前帧粒子的生命剩余时间计算出粒子产生时的帧数,修改所述当前帧粒子的位置信息为所述产生时的帧数对应的位置信息。
4.根据权利要求3所述的方法,其特征在于,所述计算当前帧粒子的生命剩余时间,包括:
计算当前帧粒子从出生到当前时刻,经历的生命周期数;
用所述当前帧粒子从出生到当前时刻所经历的时间减去所述生命周期数的时间长度,所得差值作为中间值;
用所述当前帧粒子的生命周期减去所述中间值,所得差值作为当前帧粒子的生命剩余时间。
5.根据权利要求1所述的方法,其特征在于,所述当前帧粒子的各参数包括:粒子速度、粒子重力、粒子运动范围、粒子大小、粒子颜色、粒子反弹、粒子旋转;
当所述当前帧粒子的参数为粒子速度时,所述调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新,包括:
调用粒子速度影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;
计算每一个当前帧粒子的运动方向参数;
计算每一个当前帧粒子的位置参数;
当所述当前帧粒子的参数为粒子大小时,所述调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新,包括:
调用粒子大小影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;
计算每一个当前帧粒子的尺寸的宽参数;
计算每一个当前帧粒子的尺寸的高参数。
6.一种粒子效果的实现装置,其特征在于,包括:
帧数获取模块,用于获取所需实现粒子效果的帧数,记为当前帧的帧数;
新建模块,用于新建粒子系统的更新函数和影响器的更新函数;
去除模块,用于调用粒子系统的清空函数,将粒子系统的粒子全部去除;
设置模块,用于设置粒子系统的发射速率和最大存活时间;
创建模块,用于调用所述粒子系统的更新函数创建当前帧粒子;
修改模块,用于修改所述当前帧粒子的发射速率、最大存活时间和位置信息;
更新模块,用于调用所述影响器的更新函数,对所述当前帧粒子的各参数进行更新;
渲染模块,用于调用渲染函数,依据所述当前帧粒子的各参数进行渲染,实现所述当前帧粒子的粒子效果。
7.根据权利要求6所述的装置,其特征在于,所述创建模块包括:
粒子数计算子模块,用于将所述粒子的最大存活时间和粒子系统从创建到当前帧经历的时间中较小的值,乘以所述粒子系统的发射速度,所得积值为粒子系统正常发射时,播放到当前帧的粒子数目,将所述粒子数目作为在所述当前帧产生的粒子数目;
粒子创建子模块,用于调用创建粒子函数,创建与所述当前帧产生的粒子数目一致的粒子作为当前帧粒子。
8.根据权利要求6所述的装置,其特征在于,所述修改模块包括:
发射速率修改子模块,用于依据所述粒子系统的发射速率修改所述当前帧粒子的发射速率;
存活时间修改子模块,用于依据所述粒子系统的最大存活时间修改所述当前帧粒子的最大存活时间;
位置信息修改子模块,用于计算当前帧粒子的生命剩余时间并记录所述当前帧粒子的关键帧,当所述当前帧粒子吸附于发射器时,修改所述当前帧粒子的位置信息为当前帧数对应的位置信息;当所述当前帧粒子不吸附于发射器时,依据当前帧粒子的生命剩余时间计算出粒子产生时的帧数,修改所述当前帧粒子的位置信息为所述产生时的帧数对应的位置信息。
9.根据权利要求8所述的装置,其特征在于,所述位置信息修改子模块用于:计算当前帧粒子从出生到当前时刻,经历的生命周期数;用所述当前帧粒子从出生到当前时刻所经历的时间减去所述生命周期数的时间长度,所得差值作为中间值;用所述当前帧粒子的生命周期减去所述中间值,所得差值作为当前帧粒子的生命剩余时间。
10.根据权利要求6所述的装置,其特征在于:
所述当前帧粒子的各参数包括:粒子速度、粒子重力、粒子运动范围、粒子大小、粒子颜色、粒子反弹、粒子旋转;
所述更新模块,用于在所述当前帧粒子的参数为粒子速度时,调用粒子速度影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;计算每一个当前帧粒子的运动方向参数;计算每一个当前帧粒子的位置参数;
所述更新模块,用于在所述当前帧粒子的参数为粒子大小时,调用粒子大小影响器的更新函数,根据当前帧粒子的剩余存活时间、总存活时间计算得到当前帧粒子的已存活时间,并归一化;计算每一个当前帧粒子的尺寸的宽参数;计算每一个当前帧粒子的尺寸的高参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310282384.6A CN103455323B (zh) | 2013-07-05 | 2013-07-05 | 一种粒子效果的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310282384.6A CN103455323B (zh) | 2013-07-05 | 2013-07-05 | 一种粒子效果的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103455323A true CN103455323A (zh) | 2013-12-18 |
CN103455323B CN103455323B (zh) | 2018-12-25 |
Family
ID=49737730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310282384.6A Active CN103455323B (zh) | 2013-07-05 | 2013-07-05 | 一种粒子效果的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103455323B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870650A (zh) * | 2014-03-24 | 2014-06-18 | 罗炳金 | 一种计算机辅助绘制纹织图案燥笔泥地的方法 |
CN106293565A (zh) * | 2015-06-05 | 2017-01-04 | 福建星网视易信息系统有限公司 | 一种基于粒子运动模型的模拟显示方法及装置 |
CN106503188A (zh) * | 2016-10-25 | 2017-03-15 | 天脉聚源(北京)传媒科技有限公司 | 一种粒子效果的生成方法及装置 |
CN106780767A (zh) * | 2016-11-25 | 2017-05-31 | 上海野火网络科技有限公司 | 粒子编辑方法及粒子编辑器 |
CN107392935A (zh) * | 2017-07-06 | 2017-11-24 | 苏州蜗牛数字科技股份有限公司 | 一种基于积分公式的粒子计算方法及粒子系统 |
CN108665531A (zh) * | 2018-05-08 | 2018-10-16 | 阿里巴巴集团控股有限公司 | 3d粒子模型的变换方法及装置 |
CN108803876A (zh) * | 2018-06-08 | 2018-11-13 | 华北水利水电大学 | 基于增强现实的水利工程展示交互方法及系统 |
CN108921927A (zh) * | 2018-06-12 | 2018-11-30 | 阿里巴巴集团控股有限公司 | 一种基于粒子的烟花特效实现方法、装置以及设备 |
CN110415326A (zh) * | 2019-07-18 | 2019-11-05 | 成都品果科技有限公司 | 一种粒子效果的实现方法及装置 |
CN112612569A (zh) * | 2020-12-29 | 2021-04-06 | 杭州趣链科技有限公司 | 页面动画显示方法、装置、设备及存储介质 |
CN112785722A (zh) * | 2021-01-22 | 2021-05-11 | 福建天晴在线互动科技有限公司 | 一种实现粒子表现多样化的系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100315410A1 (en) * | 2006-10-27 | 2010-12-16 | Dong-Qing Zhang | System and method for recovering three-dimensional particle systems from two-dimensional images |
CN102147928A (zh) * | 2011-03-16 | 2011-08-10 | 美通日用品(杭州)有限公司 | 一种基于粒子系统的火焰模拟加速改进算法 |
CN102426691A (zh) * | 2011-10-24 | 2012-04-25 | 克拉玛依红有软件有限责任公司 | 一种基于gpu的实时火焰效果的模拟方法 |
CN102722859A (zh) * | 2012-05-31 | 2012-10-10 | 北京像素软件科技股份有限公司 | 一种计算机仿真场景渲染方法 |
-
2013
- 2013-07-05 CN CN201310282384.6A patent/CN103455323B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100315410A1 (en) * | 2006-10-27 | 2010-12-16 | Dong-Qing Zhang | System and method for recovering three-dimensional particle systems from two-dimensional images |
CN102147928A (zh) * | 2011-03-16 | 2011-08-10 | 美通日用品(杭州)有限公司 | 一种基于粒子系统的火焰模拟加速改进算法 |
CN102426691A (zh) * | 2011-10-24 | 2012-04-25 | 克拉玛依红有软件有限责任公司 | 一种基于gpu的实时火焰效果的模拟方法 |
CN102722859A (zh) * | 2012-05-31 | 2012-10-10 | 北京像素软件科技股份有限公司 | 一种计算机仿真场景渲染方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870650A (zh) * | 2014-03-24 | 2014-06-18 | 罗炳金 | 一种计算机辅助绘制纹织图案燥笔泥地的方法 |
CN106293565B (zh) * | 2015-06-05 | 2019-02-12 | 福建星网视易信息系统有限公司 | 一种基于粒子运动模型的模拟显示方法及装置 |
CN106293565A (zh) * | 2015-06-05 | 2017-01-04 | 福建星网视易信息系统有限公司 | 一种基于粒子运动模型的模拟显示方法及装置 |
CN106503188A (zh) * | 2016-10-25 | 2017-03-15 | 天脉聚源(北京)传媒科技有限公司 | 一种粒子效果的生成方法及装置 |
CN106780767A (zh) * | 2016-11-25 | 2017-05-31 | 上海野火网络科技有限公司 | 粒子编辑方法及粒子编辑器 |
CN107392935A (zh) * | 2017-07-06 | 2017-11-24 | 苏州蜗牛数字科技股份有限公司 | 一种基于积分公式的粒子计算方法及粒子系统 |
CN107392935B (zh) * | 2017-07-06 | 2021-06-29 | 苏州蜗牛数字科技股份有限公司 | 一种基于积分公式的粒子计算方法及粒子系统 |
CN108665531A (zh) * | 2018-05-08 | 2018-10-16 | 阿里巴巴集团控股有限公司 | 3d粒子模型的变换方法及装置 |
CN108803876A (zh) * | 2018-06-08 | 2018-11-13 | 华北水利水电大学 | 基于增强现实的水利工程展示交互方法及系统 |
CN108921927A (zh) * | 2018-06-12 | 2018-11-30 | 阿里巴巴集团控股有限公司 | 一种基于粒子的烟花特效实现方法、装置以及设备 |
CN108921927B (zh) * | 2018-06-12 | 2022-12-23 | 创新先进技术有限公司 | 一种基于粒子的烟花特效实现方法、装置以及设备 |
CN110415326A (zh) * | 2019-07-18 | 2019-11-05 | 成都品果科技有限公司 | 一种粒子效果的实现方法及装置 |
CN112612569A (zh) * | 2020-12-29 | 2021-04-06 | 杭州趣链科技有限公司 | 页面动画显示方法、装置、设备及存储介质 |
CN112612569B (zh) * | 2020-12-29 | 2022-09-30 | 杭州趣链科技有限公司 | 页面动画显示方法、装置、设备及存储介质 |
CN112785722A (zh) * | 2021-01-22 | 2021-05-11 | 福建天晴在线互动科技有限公司 | 一种实现粒子表现多样化的系统 |
CN112785722B (zh) * | 2021-01-22 | 2023-06-16 | 福建天晴在线互动科技有限公司 | 一种实现粒子表现多样化的系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103455323B (zh) | 2018-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103455323A (zh) | 一种粒子效果的实现方法及装置 | |
CN110909460B (zh) | 车联网v2x仿真测试方法、装置、设备和存储介质 | |
CN110494895A (zh) | 使用稀疏体积数据的渲染操作 | |
CN105407259A (zh) | 虚拟摄像方法 | |
CN109876448B (zh) | 一种游戏技能实时调试方法、设备、装置及系统 | |
WO2020118608A1 (zh) | 一种反卷积神经网络的硬件加速方法、装置和电子设备 | |
CN1896985A (zh) | 计算机游戏开发系统以及方法 | |
CN104091607A (zh) | 一种基于ios设备的视频编辑方法及装置 | |
CN102857701A (zh) | 一种三维场景中虚拟摄像机的跟踪方法 | |
CN103870496A (zh) | 互动页面样板的编辑系统及方法 | |
KR20090088905A (ko) | 인터랙티브 시각 효과 합성을 위한 시스템 및 방법 | |
JP2021182410A (ja) | 自動運転システムのテスト方法、自動運転システムのテスト装置、電子デバイス、記憶媒体、及びプログラム | |
CN104091608A (zh) | 一种基于ios设备的视频编辑方法及装置 | |
US20110175913A1 (en) | Modular radiance transfer | |
CN103425469A (zh) | 基于mda技术的手机游戏代码生成方法 | |
CN102938160B (zh) | 基于细节捕获和形态校正的流体动画渲染方法 | |
WO2024067159A1 (zh) | 视频生成方法、装置、电子设备及存储介质 | |
CN113784167A (zh) | 一种基于3d渲染的互动视频制作和播放的方法及终端 | |
CN104506920A (zh) | 一种播放全媒体数据信息的方法及装置 | |
CN111857948A (zh) | 自动驾驶仿真平台的数据运行总线技术的设计方法、系统 | |
JP2010257459A (ja) | プリント回路基板の設計仕様をシミュレーションするシステム及びその方法 | |
CN116433832A (zh) | 数字水厂的工艺流程三维动态展示构造方法及设备 | |
CN109799975B (zh) | 一种基于神经网络的动作游戏制作方法和系统 | |
CN114708372A (zh) | 一种三维数字孪生场景的生成方法及相关装置 | |
CN113067788A (zh) | 一种多用户信号模拟方法以及多用户信号模拟装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |