一种粒子运动的控制方法和装置与流程

文档序号:16397810发布日期:2018-12-25 19:57阅读:288来源:国知局
一种粒子运动的控制方法和装置与流程

本发明涉及计算机图形学领域,特别是涉及一种粒子运动的控制方法,以及一种粒子运动的控制装置。



背景技术:

Reeves于1983年提出了粒子系统为模糊物体建模的方法,其基本思想是把模糊的物体看作众多粒子组成的粒子团,粒子可以看作简单的点。各粒子均具有自己的属性,如颜色、形状、大小、生存周期和速度等等,粒子的动力学性质决定了其在不同的时刻的状态,粒子随时间的推移而不断变化。

粒子由粒子系统发射,一个粒子系统是由一个粒子发射器、多个粒子影响器共同构成的,粒子发射效果是由多种参数共同作用的结果,参数越丰富,效果就越多样化。

粒子影响器(ParticleAffector)用于在粒子的生命周期内更新粒子的属性,在不同的时刻的状态,粒子随时间的推移而不断变化。

现有的粒子影响器类型较为单一,无法实现对粒子生命周期内的大小、速度、重力、旋转、运动范围、反弹效果等运动参数进行调节。



技术实现要素:

本发明提供了一种粒子运动的控制方法及装置,以实现对粒子生命周期内的大小、速度、重力、旋转、运动范围、反弹效果等运动参数进行调节。

本发明提供了一种粒子运动的控制方法,其特征在于,包括:

接收针对粒子在生命周期内的多个关键运动点设置的控制参数,所述控制参数包括所述关键运动点的时间参数和运动参数比例值;

在发射粒子时,计算粒子当前运动点所处在整个生命周期内的时间参数;

按照所述当前运动点的时间参数,以及所述关键运动点的时间参数和运动参数比例值,确定所述当前运动点的运动参数比例值;

依据预设的所述粒子的第一初始运动参数、运动参数变化值和所确定的运动参数比例值,确定粒子当前运动点的实际运动参数;

按照所述实际运动参数更新粒子当前运动点的运动状态。

优选地,所述实际运动参数为粒子大小参数、粒子速度参数、粒子重力参数、粒子旋转参数、粒子运动范围参数、粒子反弹效果参数其中的一种;

所述实际运动参数包括横坐标运动参数和纵坐标运动参数;

所述粒子运动参数初始值包括横坐标运动参数初始值和纵坐标运动参数初始值,所述纵坐标运动参数初始值与所述横坐标运动参数初始值的比值为预设比例;

粒子运动参数变化值包括横坐标运动参数变化值和纵坐标运动参数变化值,所述纵坐标运动参数变化值与所述横坐标运动参数变化值的比值为预设比例。

优选地,所述在发射粒子时,计算粒子当前运动点所处在整个生命周期内的时间参数的步骤包括:

依据所述当前运动点在整个生命周期内剩下的存活的时间,计算所述当前运动点在整个生命周期内已经存活的时间;

将所述当前运动点在整个生命周期内已经存活的时间与整个生命周期长度的相除,将相除的商作为所述当前运动点所处在整个生命周期内的时间参数。

优选地,所述按照所述当前运动点的时间参数,以及所述关键运动点的时间参数和运动参数比例值,确定所述当前运动点的运动参数比例值的步骤包括:

按照所述当前运动点的时间参数,以及各个关键运动点的时间参数,找到所述当前运动点前后两个关键运动点;

由所述当前运动点前后两个关键运动点的运动参数比例值,计算所述当前运动点的运动参数比例值。

优选地,所述依据预设的所述粒子的第一初始运动参数、运动参数变化值和所确定的运动参数比例值,确定粒子当前运动点的实际运动参数的步骤包括:

依据预设的所述粒子的第一初始运动参数和运动参数变化值,计算所述粒子的第二初始运动参数;

将所述第二初始运动参数与运动参数比例值相乘,作为粒子当前运动点的实际运动参数。

优选地,所述依据预设的所述粒子的第一初始运动参数和运动参数变化值,计算所述粒子的第二初始运动参数包括:

计算所述粒子的第一初始运动参数和运动参数变化值之和作为第一范围值,以及所述粒子的第一初始运动参数和运动参数变化值之差作为第二范围值;

按照所述第一范围值和第二范围值之间随机生成所述粒子的第二初始运动参数,所述粒子运动参数大于等于所述第一范围值,并且小于等于所述第二范围值。

本发明还提供了一种粒子运动的控制装置,包括:

参数接收模块,用于接收针对粒子在生命周期内的多个关键运动点设置的控制参数,所述控制参数包括所述关键运动点的时间参数和运动参数比例值;

时间参数确定模块,用于在发射粒子时,计算粒子当前运动点所处在整个生命周期内的时间参数;

运动参数确定模块,用于按照所述当前运动点的时间参数,以及所述关键运动点的时间参数和运动参数比例值,确定所述当前运动点的运动参数比例值;

实际参数确定模块,用于依据预设的所述粒子的第一初始运动参数、运动参数变化值和所确定的运动参数比例值,确定粒子当前运动点的实际运动参数;

更新模块,用于按照所述实际运动参数更新粒子当前运动点的运动状态。

优选地,所述实际运动参数为粒子大小参数、粒子速度参数、粒子重力参数、粒子旋转参数、粒子运动范围参数、粒子反弹效果参数其中的一种;

所述粒子大小参数包括横坐标运动参数和纵坐标运动参数;

所述粒子运动参数初始值包括横坐标运动参数初始值和纵坐标运动参数初始值,所述纵坐标运动参数初始值与所述横坐标运动参数初始值的比值为预设比例;

粒子运动参数变化值包括横坐标运动参数变化值和纵坐标运动参数变化值,所述纵坐标运动参数变化值与所述横坐标运动参数变化值的比值为预设比例。

优选地,所述时间参数确定模块包括:

时间计算子模块,用于依据所述当前运动点在整个生命周期内剩下的存活的时间,计算所述当前运动点在整个生命周期内已经存活的时间;

时间相除子模块,用于将所述当前运动点在整个生命周期内已经存活的时间与整个生命周期长度的相除,将相除的商作为所述当前运动点所处在整个生命周期内的时间参数。

优选地,所述运动参数确定模块包括:

关键点查找子模块,用于按照所述当前运动点的时间参数,以及各个关键运动点的时间参数,找到所述当前运动点前后两个关键运动点;

运动参数计算子模块,用于由所述当前运动点前后两个关键运动点的粒运动参数比例值,计算所述当前运动点的运动参数比例值。

与现有技术相比,本发明包括以下优点:

依据本发明实施例,接收用户针对粒子在生命周期内的多个关键运动点设置的控制参数后,在发射粒子时,首先计算粒子当前运动点所处在整个生命周期内的时间参数,然后按照当前运动点的时间参数、关键运动点的时间参数和运动参数比例值,确定当前运动点的运动参数比例值,并依据预设的所述粒子的第一初始运动参数、运动参数变化值和所确定的运动参数比例值,确定粒子当前运动点的实际运动参数,然后按照运动参数更新粒子当前运动点的运动状态。从而使粒子在整个生命周期内的运动,都按照用户设置的参数进行运动,可以实现对粒子生命周期内的大小、速度、重力、旋转、运动范围、反弹效果等运动参数进行调节,用户可以按照具体的需求得到相应的粒子发射效果。

附图说明

图1是本发明实施例所述一种粒子运动的控制方法的流程图;

图2是本发明实施例所述一种粒子运动的控制装置的结构框图;

图3a和3b是本发明实施例中不同时间参数下的运动点的粒子效果示意图;

图4是示例一中针对粒子大小进行控制的多个关键运动点的示意图;

图5是示例一中针对粒子大小进行控制的效果示意图;

图6是示例二中针对粒子大小进行控制的效果示意图;

图7是示例三中针对粒子大小进行控制的效果示意图;

图8是示例四中针对粒子速度进行控制的效果示意图;

图9是示例五中针对粒子速度进行控制的效果示意图;

图10是示例六中针对粒子重力进行控制的效果示意图;

图11为与示例六相对比,不针对粒子重力进行控制的效果示意图;

图12是示例七中针对粒子重力进行控制的效果示意图;

图13是示例八中针对粒子旋转变化进行控制的效果示意图;

图14是示例九中针对粒子旋转变化进行控制的效果示意图;

图15是示例十中针对粒子运动范围进行控制的效果示意图;

图16为与示例十相对比,不针对运动范围进行控制的效果示意图;

图17是示例十一中针对粒子反弹效果进行控制的效果示意图;

图18是示例十二中针对粒子反弹效果进行控制的效果示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

下面通过实施例对本发明所述方法的实现流程进行详细说明。

参照图1,其示出了本发明实施例所述一种粒子运动的控制方法的流程图。

步骤101、接收针对粒子在生命周期内的多个关键运动点设置的控制参数,所述控制参数包括所述关键运动点的时间参数和运动参数比例值。

粒子在生命周期内运动时运动状态会发生变化,通过对粒子的各个运动参数进行控制,可以是实现对粒子运动状态的控制。本发明实施例中,通过对粒子生命周期内设置多个运动关键点(例如20个),针对各运动关键点进一步设置相应的控制参数,粒子在生命周期内不同时间点的运动状态可以依据这些控制参数进行相应的调整,从而达到对粒子的运动状态进行控制的目的,用户可以按照具体的需求得到相应的粒子发射效果。

本发明实施例中,粒子的运动关键点控制参数包括所述关键运动点的时间参数(OverLifeAdj)和运动参数比例值,运动参数比例值用于对运动参数进行调整,得到实际的运动参数,例如,用户设定的粒子运动参数为55,运动参数比例值为200%,则实际的运动参数为55×200%=110。

粒子在生命周期内的运动参数可以包括大小参数、速度参数、重力参数、旋转参数、运动范围参数和反弹效果参数。

相应的,运动参数比例值可以为大小参数比例值(ScaleAdj)、速度参数比例值、重力参数比例值、旋转参数比例值、运动范围参数比例值、反弹效果参数比例值其中的一种。

运动参数比例值可以包括横坐标运动参数比例值和纵坐标运动参数比例值,例如,大小参数比例值(ScaleAdj)可以包括横坐标大小参数比例值(ScaleXAdj)和纵坐标大小参数比例值(ScaleYAdj)。

步骤102、在发射粒子时,计算粒子当前运动点所处在整个生命周期内的时间参数。

在发射粒子时,随着粒子在生命周期内运动时间的变化,需要计算出粒子当前运动点的粒子运动参数,以实现对粒子运动状态的控制。首先,需要确定粒子当前运动点所处在整个生命周期内的时间参数,具体可以通过以下步骤来计算:

子步骤S11、依据所述当前运动点在整个生命周期内剩下的存活的时间,计算所述当前运动点在整个生命周期内已经存活的时间;

子步骤S12、将所述当前运动点在整个生命周期内已经存活的时间与整个生命周期长度的相除,将相除的商作为所述当前运动点所处在整个生命周期内的时间参数。

时间参数是指当前运动点在整个生命周期内的时间比例,首先可以依据当前运动点在整个生命周期内剩下的存活的时间,计算当前运动点在整个生命周期内已经存活的时间,即将生命周期的长度减去当前运动点在整个生命周期内剩下的存活的时间,即可得到当前运动点在整个生命周期内已经存活的时间;然后进一步将已经存活的时间于整个生命周期长度的相除即可得到当前运动点所处在整个生命周期内的时间参数。

在具体的实现中,也可以先将当前运动点在整个生命周期内剩下的存活的时间与整个生命周期长度相除,然后用1减去相除的商,也可以得到当前运动点所处在整个生命周期内的时间参数,具体可以通过如下公式进行计算:

particle_time=1-particle.timetolive/particle.totaltimetolive

其中,particle_time即时间参数,是粒子已经存活的时间相对于整个存活时间为1的值,Particle.timetolive为粒子剩下的存活时间(单位:秒),Particle.totaltimetolive为粒子的生命总长(单位:秒)。

步骤103、按照所述当前运动点的时间参数,以及所述关键运动点的时间参数和运动参数比例值,确定所述当前运动点的运动参数比例值。

在得到了当前运动点的时间参数后,可以进一步依据关键运动点的时间参数和运动参数比例值确定当前运动点的运动参数比例值。

在本发明实施例中,所述步骤103可以包括:

子步骤S21、按照所述当前运动点的时间参数,以及各个关键运动点的时间参数,找到所述当前运动点前后两个关键运动点;

子步骤S22、由所述当前运动点前后两个关键运动点的运动参数比例值,计算所述当前运动点的运动参数比例值。

首先按照当前运动点的时间参数以及各个关键运动点的时间参数,找到当前运动点前后两个关键运动点,可以找出时间参数最接近当前运动点的两个关键运动点,也可以是时间并非最接近的前后两个关键运动点。在具体的实现中,可以对各个关键运动点进行编号,找到编号i满足:

particle_time>=OverLifeXAdj[i]&&particle_time<OverLifeXAdj[i+1]

其中,particle_time为当前时间点的时间参数,OverLifeXAdj为关键时间点的时间参数。

找到两个关键运动点之后,可以进一步由当前运动点前后两个关键运动点的运动参数比例值,计算所述当前运动点的运动参数比例值,具体而言,可以将前后两个关键运动点连线为一个线段,当前时间点为这个线段上的点,依据该线段的端点(即关键运动点)的运动参数比例值,以及关键运动点和当前时间点的时间参数即可以确定当前时间点的运动参数比例值。以大小参数的横坐标运动参数比例值为例(纵坐标运动参数比例值相似),可以按照如下公式进行计算:

curXScale=(ScaleXAdj[i+1]-ScaleXAdj[i])/(OverLifeXAdj[i+1]-OverLifeXAdj[i])×(particle_time-OverLifeXAdj[i])+ScaleXAdj[i]

其中:

curXScale为当前时间点的横坐标大小参数比例值;

ScaleXAdj[i+1]为当前运动点的后一个关键运动点的横坐标大小参数比例值;

ScaleXAdj[i]为当前运动点的前一个关键运动点的横坐标大小参数比例值;

OverLifeXAdj[i+1]为当前运动点的后一个关键运动点的时间参数;

OverLifeXAdj[i+1]为当前运动点的前一个关键运动点的时间参数,

particle_time为当前时间点的时间参数。

以运动参数为大小参数为例,运动点对应的不同时间参数以图像的帧数来标记,如图3a和3b示出了不同时间参数下的运动点的粒子效果示意图,用户设置第1帧图像的大小X值为20,第70帧图像的大小X值为78。在当前运动点(以第10帧图像为例)时,画面如图所示,计算第10帧的大小X值ScaleX=ScaleY=取整[(78-20)/(70-1)*(10-1)+20]=27。

同理,第80帧时粒子的大小X计算结果为78,在90000帧处有一默认关键帧,大小参数值保持与前一关键帧的值78相同,计算过程为(78-78)/(90000-70)*(80-70)+78=78。

步骤104、依据预设的所述粒子的第一初始运动参数、运动参数变化值和所确定的运动参数比例值,确定粒子当前运动点的实际运动参数。

粒子在生命周期内按照实际运动参数运动,本发明实施例中,可以通过预置链接针对各个粒子设置了第一初始运动参数和运动参数变化值,实际运动参数是依据这两个值来确定的。运动参数变化值用于对第一初始运动参数进行调整,然后按照运动参数比例值再进行进一步的调整,具体包括:

子步骤S31、依据预设的所述粒子的第一初始运动参数和运动参数变化值,计算所述粒子的第二初始运动参数;

子步骤S32、将所述第二初始运动参数与运动参数比例值相乘,作为粒子当前运动点的实际运动参数。

本发明实施例中,所述子步骤S31可以包括:

子步骤S31-1、计算所述粒子的第一初始运动参数和运动参数变化值之和作为第一范围值,以及所述粒子的第一初始运动参数和运动参数变化值之差作为第二范围值;

子步骤S31-2、按照所述第一范围值和第二范围值之间随机生成所述粒子的第二初始运动参数,所述粒子运动参数大于等于所述第一范围值,并且小于等于所述第二范围值。

首先计算第一初始运动参数和运动参数变化值之和作为第一范围值,以及第一初始运动参数和运动参数变化值之差作为第二范围值,在第一范围值和第二范围值之间随机取一个值作为所述粒子的第二初始运动参数,即在[Scale-scaleVariation,Scale+scaleVariation]范围内随机生成一个粒子运动参数,也即是rand[Scale-scaleVariation,Scale+scaleVariation]。

在本发明实施例中,运动参数比例值(ScaleAdj)可以包括横坐标运动参数比例值(ScaleXAdj)和纵坐标运动参数比例值(ScaleYAdj),相应的,第一初始运动参数(ScaleX)也包括横坐标第一初始运动参数(Scale)和纵坐标第一初始运动参数(ScaleY),运动参数变化值(scaleVariation)也包括横坐标运动参数变化值(scaleVariationX)和纵坐标运动参数变化值(scaleVariationY)。

在具体的实现中,可以通过预置链接提交横坐标第一初始运动参数和纵坐标第一初始运动参数,以及横坐标运动参数变化值和纵坐标运动参数变化值。也可以仅仅提交横坐标第一初始运动参数和横坐标运动参数变化值,并默认或设置一个预设比例,纵坐标第一初始运动参数与所述横坐标第一初始运动参数的比值为预设比例,纵坐标运动参数变化值与所述横坐标运动参数变化值的比值为预设比例。例如,粒子运动参数变化值为粒子大小变化值,运动点对应的不同时间参数以图像的帧数来标记,用户设置第1帧图像的大小变化X值为70。默认最大关键帧90000与前一关键帧值相同,所以在第123帧图像时,大小变化X值scaleVariationX=scaleVariationY=70。

得到粒子在当前运动点的第二初始运动参数后,还需要进一步将粒子第二初始运动参数与运动参数比例值相乘,作为粒子当前运动点的实际运动参数。以X轴方向的实际运动参数为例,可以表示为:

Particle.sizeX=Particle.EmitterScaleX×curXScale;

Particle.sizeX为粒子当前运动点的X轴方向的实际运动参数;

Particle.EmitterScaleX为粒子发射器的X轴方向的第二初始运动参数;

curXScale为粒子当前运动点的X轴方向的运动参数比例值。

particle.sizeY的计算过程与particle.sizeX相同。得到的实际运动参数来更新粒子当前运动点的实际状态,具体而言,可以调用第三方的renderOneFrame()更新画面,即按照实际运动参数来更新整个场景数据,从而得到在当前运动点的粒子发射效果。用户还可以通过点击播放链接,查看当前时间点下的粒子效果,或拖动时间线,查看不同当前时间点下的粒子效果。

通过本发明实施例,对于已发射出来的粒子,在每一次rendOneFrame之前,对当前运动点的运动参数进行更新,从而达到控制粒子运动效果的目的。

以下通过多个例子,说明采用本发明实施例对粒子在生命周期内的运动参数进行控制的效果:

首先,以粒子运动参数为大小参数为示例一,粒子第一初始运动参数(即大小参数初始值)为50,运动参数变化值(即大小参数变化值)为3,生命周期总长度为100,,关键运动点包括3个,分别为生命时刻为0时,对应的大小参数比例值为0%,生命时刻50时,对应的大小参数比例值为100%,生命时刻100时,对应的大小参数比例值为0。

参见图4是示例一中针对粒子大小进行控制的多个关键运动点的示意图,图5是示例一中针对粒子大小进行控制的效果示意图,由图5可见,粒子发射出来后,大小先从0开始,逐渐变大,在粒子存活了50%的生命时,粒子的大小达到最大,为产生粒子时大小的100%,之后粒子的大小逐渐变小,在粒子消亡时,大小变为0。

参见图6是示例二中针对粒子大小进行控制的效果示意图。粒子第一初始运动参数(即大小参数初始值)为50,运动参数变化值(即大小参数变化值)为3,生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的大小参数比例值为0%,生命时刻100时,对应的大小参数比例值为100%。由图6可见,粒子发射出来后,大小先从0开始,逐渐变大,直到粒子消亡时,大小变为产生粒子时大小的100%。

参见图7是示例三中针对粒子大小进行控制的效果示意图。粒子第一初始运动参数(即大小参数初始值)为50,运动参数变化值(即大小参数变化值)为50,生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的大小参数比例值为100%,生命时刻100时,对应的大小参数比例值为100%。由图7可见,发射出来的粒子大小不同,大小在[50-50,50+50]之间变化。

参见图8是示例四中针对粒子速度进行控制的效果示意图。点发射器类型,设置粒子产生时的速度,并且对粒子的速度在其生命存活期内,进行调节。粒子第一初始运动参数(即速度参数初始值)为11,运动参数变化值(即速度参数变化值)为0,生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的速度参数比例值为0%,生命时刻100时,对应的速度参数比例值为200%。由图8可见,粒子从发射点发射出来,粒子的速度在粒子的存活生命周期内从0逐渐增大到设置的粒子速度的200%,形成了中心的粒子比较集中(速度小),而四周的粒子发散(速度大)的效果。

参见图9是示例五中针对粒子速度进行控制的效果示意图。点发射器类型,设置粒子产生时的速度,并且对粒子的速度在其生命存活期内,进行调节。粒子第一初始运动参数(即速度参数初始值)为35,运动参数变化值(即速度参数变化值)为0,生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的速度参数比例值为200%,生命时刻100时,对应的速度参数比例值为0%。由图9可见,粒子从发射点发射出来,粒子的速度在粒子的存活生命周期内从设置的粒子速度的200%逐渐减小到0,形成了中心的粒子比较发散(速度大),而距离远的粒子集中(速度小)的效果。

参见图10是示例六中针对粒子重力进行控制的效果示意图。点发射器类型,设置粒子产生时的重力,并且对粒子的重力在其生命存活期内,进行调节。粒子第一初始运动参数(即速度参数初始值)为3,运动参数变化值(即速度参数变化值)为0,粒子第一初始运动参数(即重力参数初始值)为2,运动参数变化值(即重力参数变化值)为0,生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的重力参数比例值为100%,生命时刻100时,对应的重力参数比例值为100%。由图10可见,粒子的所受到的重力在粒子的存活生命周期内从设置的粒子重力的100%逐渐减小到0,形成了粒子仍然是向下运动,但是向下运动的速度没有上面一种快。

图11为与示例六相对比,不针对粒子重力进行控制的效果示意图,粒子从发射点发射出来,粒子受到重力的影响,由于生命周期内的重力值不发生变化,形成一个受到恒定重力的影响,粒子效果是发射的粒子在Y轴向下方向的运动会越来越快。

参见图12是示例七中针对粒子重力进行控制的效果示意图。点发射器类型,设置粒子产生时的重力,并且对粒子的重力在其生命存活期内,进行调节。粒子第一初始运动参数(即速度参数初始值)为3,运动参数变化值(即速度参数变化值)为0,粒子第一初始运动参数(即重力参数初始值)为2,运动参数变化值(即重力参数变化值)为0,生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的重力参数比例值为100%,生命时刻100时,对应的重力参数比例值为0%。由图12可见,粒子的所受到的重力在粒子的存活生命周期内从设置的粒子重力的100%逐渐减小到0,形成了粒子仍然是向下运动,但是向下运动的速度没有示例六快。

参见图13是示例八中针对粒子旋转变化进行控制的效果示意图。区域发射器类型,设置粒子产生时的旋转,并且对粒子的旋转在其生命存活期内,进行调节。粒子第一初始运动参数(即速度参数初始值)为28,运动参数变化值(即速度参数变化值)为0,粒子第一初始运动参数(即旋转参数初始值)为78,运动参数变化值(即旋转参数变化值)为0。生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的旋转参数比例值为100%,生命时刻100时,对应的旋转参数比例值为100%。由图13可见,粒子从产生后就围绕自身的中心点顺时针旋转(旋转值小于0时,逆时针旋转),由于生命周期内旋转值均为100,粒子从产生到结束,一直按设置的粒子的旋转值进行旋转。

参见图14是示例九中针对粒子旋转变化进行控制的效果示意图。区域发射器类型,设置粒子产生时的旋转,并且对粒子的旋转在其生命存活期内,进行调节。粒子第一初始运动参数(即速度参数初始值)为28,运动参数变化值(即速度参数变化值)为0,粒子第一初始运动参数(即旋转参数初始值)为78,运动参数变化值(即旋转参数变化值)为0。生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的旋转参数比例值为100%,生命时刻100时,对应的旋转参数比例值为0%。由图14可见,粒子从产生后就围绕自身的中心点顺时针旋转(旋转值小于0时,逆时针旋转),由于生命周期内旋转值由100到0变化,所以粒子从产生到结束,一直粒子的旋转从设置值开始,逐渐减小到旋转为0。

参见图15是示例十中针对粒子运动范围进行控制的效果示意图。设置粒子产生时的运动范围,并且对粒子的运动范围在其生命存活期内,进行调节。运动范围的效果是粒子在当前的粒子运动方向(由发射角度、发射范围、重力参数确定)上添加一个运动范围产生的新的运动方向,形成粒子最终的运动方向。运动范围使得粒子在运动时有一定的随机性,可形成乱舞的雪花等特效。

粒子第一初始运动参数(即速度参数初始值)为9,运动参数变化值(即速度参数变化值)为0,粒子第一初始运动参数(即运动范围参数初始值)为267,运动参数变化值(即运动范围参数变化值)为0。生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的运动范围参数比例值为100%,生命时刻100时,对应的运动范围参数比例值为100%。

图16为与示例十相对比,不针对运动范围进行控制的效果示意图。

计算过程与大小变化影响器的计算是一样的,得到当前运动范围的比例值为:

curRandomness=curRandomnessInLife*(mRandomness+Math::RangeRandom(-mRandomness Variation,mRandomnessVariation));

粒子的运动方向为:

particle.direction+=Vector3(Math::RangeRandom(-curRandomness,curRandomness),Math::RangeRandom(-curRandomness,curRandomness),

Math::RangeRandom(-curRandomness,curRandomness))。

其中:

curRandomness表示粒子当前的运动范围

curRandomnessInLife生命周期运动范围比例值)

mRandomness表示设置的粒子运动范围值

mRandomnessVariation表示设置的粒子运动范围变化值

Particle.direction表示粒子的运动方向

Math::RangeRandom(m,n)表示在范围(m,n)内取随机数

参见图17是示例十一中针对粒子反弹效果进行控制的效果示意图。粒子运动时,碰到反射线,可能有反弹的效果,用户设置粒子的反弹性、反弹性变化、生命周期内反弹的值,根据这些参数,计算粒子的反弹值(计算方法与大小变化影响器的计算类似),反弹值越大的,粒子反弹的效果越强,反之,越弱。

粒子第一初始运动参数(即反弹效果参数初始值)为97,运动参数变化值(即反弹效果参数变化值)为0。生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的反弹参数比例值为100%,生命时刻100时,对应的反弹参数比例值为100%。其中,反射线是一条水平线,且粒子的反射点位于线上。

参见图18是示例十二中针对粒子反弹效果进行控制的效果示意图。粒子第一初始运动参数(即反弹效果参数初始值)为19,运动参数变化值(即反弹效果参数变化值)为0。生命周期总长度为100,关键运动点包括2个,分别为生命时刻为0时,对应的反弹参数比例值为100%,生命时刻100时,对应的反弹参数比例值为100%。

依据本发明实施例,接收用户针对粒子在生命周期内的多个关键运动点设置的控制参数后,在发射粒子时,首先计算粒子当前运动点所处在整个生命周期内的时间参数,然后按照当前运动点的时间参数、关键运动点的时间参数和运动参数比例值,确定当前运动点的运动参数比例值,并依据预设的所述粒子的第一初始运动参数、运动参数变化值和所确定的运动参数比例值,确定粒子当前运动点的实际运动参数,然后按照运动参数更新粒子当前运动点的运动状态。从而使粒子在整个生命周期内的运动,都按照用户设置的参数进行运动,可以实现对粒子生命周期内的大小、速度、重力、旋转、运动范围、反弹效果等运动参数进行调节,用户可以按照具体的需求得到相应的粒子发射效果。

需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必需的。

基于上述方法实施例的说明,本发明还提供了相应的粒子运动的控制装置实施例,来实现上述方法实施例所述的内容。

参照图2,其示出了本发明实施例所述一种粒子运动的控制装置的结构框图,具体可以包括:

参数接收模块201,用于接收针对粒子在生命周期内的多个关键运动点设置的控制参数,所述控制参数包括所述关键运动点的时间参数和运动参数比例值;

时间参数确定模块202,用于在发射粒子时,计算粒子当前运动点所处在整个生命周期内的时间参数;

运动参数确定模块203,用于按照所述当前运动点的时间参数,以及所述关键运动点的时间参数和运动参数比例值,确定所述当前运动点的运动参数比例值;

实际参数确定模块204,用于依据预设的所述粒子的第一初始运动参数、运动参数变化值和所确定的运动参数比例值,确定粒子当前运动点的实际运动参数;

更新模块205,用于按照所述运动参数更新粒子当前运动点的运动状态。

本发明实施例中,所述粒子运动参数为粒子大小参数、粒子速度参数、粒子重力参数、粒子旋转参数、粒子运动范围参数、粒子反弹效果参数其中的一种;

所述粒子大小参数包括横坐标运动参数和纵坐标运动参数;

所述粒子运动参数初始值包括横坐标运动参数初始值和纵坐标运动参数初始值,所述纵坐标运动参数初始值与所述横坐标运动参数初始值的比值为预设比例;

粒子运动参数变化值包括横坐标运动参数变化值和纵坐标运动参数变化值,所述纵坐标运动参数变化值与所述横坐标运动参数变化值的比值为预设比例。

本发明实施例中,所述时间参数确定模块包括:

时间计算子模块,用于依据所述当前运动点在整个生命周期内剩下的存活的时间,计算所述当前运动点在整个生命周期内已经存活的时间;

时间相除子模块,用于将所述当前运动点在整个生命周期内已经存活的时间与整个生命周期长度的相除,将相除的商作为所述当前运动点所处在整个生命周期内的时间参数。

本发明实施例中,所述运动参数确定模块包括:

关键点查找子模块,用于按照所述当前运动点的时间参数,以及各个关键运动点的时间参数,找到所述当前运动点前后两个关键运动点;

运动参数计算子模块,用于由所述当前运动点前后两个关键运动点的粒运动参数比例值,计算所述当前运动点的运动参数比例值。

本发明实施例中,所述实际参数确定模块包括:

第二参数确定子模块,用于依据预设的所述粒子的第一初始运动参数和运动参数变化值,计算所述粒子的第二初始运动参数;

实际参数计算子模块,用于将所述第二初始运动参数与运动参数比例值相乘,作为粒子当前运动点的实际运动参数。

本发明实施例中,所述第二参数确定子模块包括:

初始参数接收子模块,用于接收针对各关键运动点设置的粒子运动参数初始值和粒子运动参数变化值;

范围计算子模块,用于计算所述粒子的第一初始运动参数和运动参数变化值之和作为第一范围值,以及所述粒子的第一初始运动参数和运动参数变化值之差作为第二范围值;;

参数生成子模块,用于按照所述第一范围值和第二范围值之间随机生成所述粒子的第二初始运动参数,所述粒子运动参数大于等于所述第一范围值,并且小于等于所述第二范围值。

对于上述粒子运动的控制装置的实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见图1所示方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本领域技术人员易于想到的是:上述各个实施例的任意组合应用都是可行的,故上述各个实施例之间的任意组合都是本发明的实施方案,但是由于篇幅限制,本说明书在此就不一一详述了。

本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

最后,还需要说明的是,在本文中,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种粒子运动的控制方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1