一种粒子反弹效果的实现方法及装置与流程

文档序号:17530112发布日期:2019-04-29 13:27阅读:196来源:国知局

本发明涉及视音频编辑技术领域,特别是涉及一种粒子反弹效果的实现方法及装置。



背景技术:

粒子碰到反射线后,粒子运动速度的大小和方向都会发生改变,并以改变后的速度和方向反弹出去。目前第三方的软件开发工具包(Software Development Kit,SDK)并不能实现粒子的反弹效果。



技术实现要素:

本发明提供一种粒子反弹效果的实现方法及装置,以解决如何在粒子系统中实现粒子反弹效果的问题。

为了解决上述问题,本发明公开了一种粒子反弹效果的实现方法,包括:

在粒子系统中添加反射器;

在每一帧需要进行渲染时设置所述反射器的参数;

获取粒子系统的反弹值,作为粒子的反弹值;

依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果。

可选地,所述在粒子系统中添加反射器,包括:

在所述粒子系统中添加多个点作为反射器的初始端点;

将所述反射器的初始端点相连构成折线,并将所述折线作为所述反射器的反射线。

可选地,所述反射器的参数包括:反射器的活跃性参数、反射线的起点和反射线的终点;

所述在每一帧需要进行渲染时设置所述反射器的参数,包括:

设置所述反射器的活跃性参数,所述活跃性参数表征所述反射器是否有效;

调整所述反射器的初始端点,将调整之后的所述端点作为反射线的起点和终点。

可选地,所述依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果,包括:

判断当前帧在所述反射线一侧的粒子,在下一帧是否位于反射线的另一侧;

当所述粒子下一帧位于反射线的另一侧时,计算所述粒子在当前帧的位置与所述粒子在下一帧的位置构成的直线与所述反射线的交点;

计算经过所述交点与所述反射线垂直的垂直向量;

计算所述粒子在当前帧的位置与所述粒子在下一帧的位置构成的直线关于所述垂直向量对称的直线;

在所述对称的直线上,依据所述粒子的反弹值计算所述粒子在所述交点处反弹后的位置,并将所述粒子在所述交点处反弹后的位置作为所述粒子的反弹效果。

可选地,所述判断当前帧在所述反射线一侧的粒子,在下一帧是否位于反射线的另一侧,包括:

计算所述反射线起点和反射线的终点所在的直线方程,作为反射线的直线方程;

将所述粒子在当前帧的位置代入所述作为反射线的直线方程的表达式中,计算当前距离值;

将所述粒子在下一帧的位置代入所述反射线的直线方程的表达式中,计算下一距离值;

当所述当前距离值与所述下一距离值的乘积小于零时,判定所述粒子下一帧位于反射线的另一侧。

本发明还公开了一种粒子反弹效果的实现装置,包括:

添加模块,用于在粒子系统中添加反射器;

参数设置模块,用于在每一帧需要进行渲染时设置所述反射器的参数;

获取模块,用于获取粒子系统的反弹值,作为粒子的反弹值;

效果计算模块,用于依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果。

可选地,所述添加模块包括:

端点添加子模块,用于在所述粒子系统中添加多个点作为反射器的初始端点;

反射线子模块,用于将所述反射器的初始端点相连构成折线,并将所述折线作为所述反射器的反射线。

可选地,所述反射器的参数包括:反射器的活跃性参数、反射线的起点和反射线的终点;

所述参数设置模块包括:

活跃性设置子模块,用于设置所述反射器的活跃性参数,所述活跃性参数表征所述反射器是否有效;

端点调整子模块,用于调整所述反射器的初始端点,将调整之后的所述端点作为反射线的起点和终点。

可选地,所述效果计算模块包括:

判断子模块,用于判断当前帧在所述反射线一侧的粒子,在下一帧是否位于反射线的另一侧;

交点计算子模块,用于当所述粒子下一帧位于反射线的另一侧时,计算所述粒子在当前帧的位置与所述粒子在下一帧的位置构成的直线与所述反射线的交点;

垂直向量计算子模块,用于计算经过所述交点与所述反射线垂直的垂直向量;

对称直线计算子模块,用于计算所述粒子在当前帧的位置与所述粒子在下一帧的位置构成的直线关于所述垂直向量对称的直线;

反弹后位置计算子模块,用于在所述对称的直线上,依据所述粒子的反弹值计算所述粒子在所述交点处反弹后的位置,并将所述粒子在所述交点处反弹后的位置作为所述粒子的反弹效果。

可选地,所述判断子模块包括:

反射线直线计算子单元,用于计算所述反射线起点和反射线的终点所在的直线方程,作为反射线的直线方程;

当前距离计算子单元,用于将所述粒子在当前帧的位置代入所述作为反射线的直线方程的表达式中,计算当前距离值;

下一距离计算子单元,用于将所述粒子在下一帧的位置代入所述反射线的直线方程的表达式中,计算下一距离值;

判定子单元,用于当所述当前距离值与所述下一距离值的乘积小于零时,判定所述粒子下一帧位于反射线的另一侧。

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

本发明通过在粒子系统中添加反射器,然后在每一帧需要进行渲染时设置所述反射器的参数,接着获取粒子系统的反弹值,作为粒子的反弹值,最后依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果,从而在粒子系统中实现了粒子的反弹效果。

附图说明

图1是本发明实施例一种粒子反弹效果的实现方法的流程图;

图2是本发明实施例另一种粒子反弹效果的实现方法的流程图;

图3是本发明实施例一种粒子反弹效果的实现装置的结构框图。

具体实施方式

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

参照图1,示出了本发明一种粒子反弹效果的实现方法的流程图,本实施例具体可以包括以下步骤:

步骤100,在粒子系统中添加反射器。

本实施例扩展了第三方SDK的粒子系统,在粒子系统中添加了反射器来实现粒子的反射效果。本实施例在添加反射器的时候,可以在粒子系统的界面上点击鼠标左键添加一个点,通过多次点击添加多个点形成折线,最后点击鼠标右键,完成创建反射器。上述多个点形成的折线作为反射器的反射线。需要说明的是,在粒子系统的界面上创建的多个点的位置都是可以进行修改的,可以在每一帧需要进行渲染时修改这些创建的点。

步骤102,在每一帧需要进行渲染时设置所述反射器的参数。

当每一帧需要进行渲染时,需要在所要渲染的当前帧上根据具体的渲染需求调节步骤100中设置的反射器参数,具体可以设置反射器的活跃性参数、反射线的起点和反射线的终点。反射器的活跃性参数表征在当前帧上反射器是否有效,在各帧上活跃性参数可以不同,活跃性参数可以随时间变化。

步骤104,获取粒子系统的反弹值,作为粒子的反弹值。

粒子系统有对应的反弹值,可以获取粒子系统的反弹值,作为粒子的反弹值。反弹值有对应的反弹速度,例如,粒子的运动速度为V,反弹值为100的话,表明按照之前的粒子运动速度原速反弹,反弹后的速度仍为V;反弹值为200的话,表明以之前粒子运动速度的二倍,反弹后的速度为2V;反弹值为50的话,表明以之前粒子运动速度的一半反弹,反弹后的速度为V/2。

步骤106,依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果。

本实施例可以依据步骤102中设置的反射器参数和步骤104中获取的粒子的反弹值计算粒子受反射器作用后的反弹效果,即当前帧粒子接触反射线反弹之后的位置。

本实施例通过在粒子系统中添加反射器,然后在每一帧需要进行渲染时设置所述反射器的参数,接着获取粒子系统的反弹值,作为粒子的反弹值,最后依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果,从而在粒子系统中实现了粒子的反弹效果。

参照图2,示出了本发明一种粒子反弹效果的实现方法的流程图,本实施例具体可以包括以下步骤:

步骤200,在粒子系统中添加反射器。

本实施例扩展了第三方SDK的粒子系统,在粒子系统中添加了反射器来实现粒子的反射效果。本实施例在添加反射器的时候,具体可以包括以下子步骤:

子步骤2001,在所述粒子系统中添加多个点作为反射器的初始端点。

反射器的初始端点的位置都是可以进行修改的,可以在每一帧需要进行渲染时修改这些创建的点。

子步骤2002,将所述反射器的初始端点相连构成折线,并将所述折线作为所述反射器的反射线。

需要说明的是,添加反射器到粒子系统里,可以添加反射器的实现类到粒子系统里,根据粒子系统界面上添加的折线端点数,分成多个折线段,每个折线段对应一个反射器,粒子系统里可以是一个反射器,也可以是多个反射器。可以理解为多个折线段可以对应一个大的反射器,然后每一段折线段对应一个小的反射器。

步骤202,在每一帧需要进行渲染时设置所述反射器的参数。

当每一帧需要进行渲染时,需要在所要渲染的当前帧上根据具体的渲染需求调节步骤200中设置的反射器参数,具体可以设置反射器的活跃性参数、反射线的起点和反射线的终点。反射器的活跃性参数表征在当前帧上反射器是否有效,在各帧上活跃性参数可以不同,活跃性参数可以随时间变化。

本实施例在每一帧需要进行渲染时设置所述反射器的参数,具体可以包括以下子步骤:

子步骤1,设置所述反射器的活跃性参数,所述活跃性参数表征所述反射器是否有效。

例如,设置当前帧反射器的活跃性参数为1,代表在当前帧反射器有效,如果设置当前帧反射器的活跃性参数为0,代表在当前帧反射器无效。

子步骤2,调整所述反射器的初始端点,将调整之后的所述端点作为反射线的起点和终点。

调整步骤200中添加的反射器初始端点,在调整之后的端点中选择反射线的起点和终点。

步骤204,获取粒子系统的反弹值,作为粒子的反弹值。

粒子系统有对应的反弹值,可以获取粒子系统的反弹值,作为粒子的反弹值。反弹值有对应的反弹速度,例如,粒子的运动速度为V,反弹值为100的话,表明按照之前的粒子运动速度原速反弹,反弹后的速度仍为V;反弹值为200的话,表明以之前粒子运动速度的二倍,反弹后的速度为2V;反弹值为50的话,表明以之前粒子运动速度的一半反弹,反弹后的速度为V/2。

步骤206,依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果。

本实施例可以依据步骤202中设置的反射器参数和步骤204中获取的粒子的反弹值计算粒子受反射器作用后的反弹效果,即当前帧粒子接触反射线反弹之后的位置。

本实施例中依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果,具体可以通过以下方式来实现:

1)判断当前帧在所述反射线一侧的粒子,在下一帧是否位于反射线的另一侧。

需要说明的是,当前帧在所述反射线一侧,下一帧在反射线另一侧的粒子,说明粒子与反射线的距离足够近,粒子在当前帧必然会触碰到反射线,进而发生反弹,也就是产生反射效果。

本实施例中判断当前帧在所述反射线一侧的粒子,在下一帧是否位于反射线的另一侧,可以包括以下步骤:

步骤A,计算所述反射线起点和反射线的终点所在的直线方程,作为反射线的直线方程。

根据反射线的起点和终点,计算ax+by+c=0中a、b、c的参数值,可以将反射线的起点和终点的坐标代入ax+by+c=0来计算a、b、c的参数值。ax+by+c=0为反射线起点和反射线的终点所在的直线方程,即反射线的直线方程。

步骤B,将所述粒子在当前帧的位置代入所述作为反射线的直线方程的表达式中,计算当前距离值。

本实施例所说的直线方程的表达式是ax+by+c,在步骤A中已经计算得到了a、b、c的参数值,可以将粒子在当前帧的位置坐标代入ax+by+c中,计算出当前距离值D1。

步骤C,将所述粒子在下一帧的位置代入所述反射线的直线方程的表达式中,计算下一距离值。

可以将粒子在下一帧的位置坐标代入ax+by+c中,计算出下一距离值D2。

步骤D,当所述当前距离值与所述下一距离值的乘积小于零时,判定所述粒子下一帧位于反射线的另一侧。

如果步骤B中计算得到的当前距离值D1与步骤C中计算得到的下一距离D2的乘积D1*D2的值小于0,即D1*D2<0,则说明当前帧位于反射线一侧的粒子,下一帧位于反射线的另一侧,也就是说在当前帧粒子会碰触到反射线发生反弹,产生反射效果。

如果D1*D2>0,则说明当前帧和下一帧粒子位于反射线的同一侧,不会碰触反射线发生反弹,也就无需计算粒子的反弹效果了。

2)当所述粒子下一帧位于反射线的另一侧时,计算所述粒子在当前帧的位置与所述粒子在下一帧的位置构成的直线与所述反射线的交点。

当D1*D2<0,也就是说当前帧在反射线一侧的粒子,在下一帧位于反射线的另一侧,可以首先依据粒子在当前帧的位置坐标(x1,y1)与粒子在下一帧的位置坐标(x2,y2)构成的直线方程L1,其次计算L1与反射的交点P。

3)计算经过所述交点与所述反射线垂直的垂直向量。

计算经过交点P与反射线垂直的垂直向量K。

4)计算所述粒子在当前帧的位置与所述粒子在下一帧的位置构成的直线关于所述垂直向量对称的直线。

可以根据粒子在当前帧的位置坐标与粒子在下一帧的位置坐标构成的直线方程L1和L1与反射线的交点P,计算L1关于垂直向量K对称的直线L2。

5)在所述对称的直线上,依据所述粒子的反弹值计算所述粒子在所述交点处反弹后的位置,并将所述粒子在所述交点处反弹后的位置作为所述粒子的反弹效果。

可以在对称的直线L2上,依据所述粒子的反弹值计算所述粒子在所述交点P处反弹后的位置,并将所述粒子在所述交点P处反弹后的位置作为所述粒子的反弹效果。

本实施例通过在粒子系统中添加反射器,然后在每一帧需要进行渲染时设置所述反射器的参数,接着获取粒子系统的反弹值,作为粒子的反弹值,最后依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果,从而在粒子系统中实现了粒子的反弹效果。本实施例还介绍了判断当前帧在所述反射线一侧的粒子,在下一帧是否位于反射线的另一侧的具体实现方式,并且详细介绍了如何依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果。

参照图3,示出了本发明一种粒子反弹效果的实现装置的结构框图,本实施例具体可以包括:添加模块10、参数设置模块12、获取模块14和效果计算模块16,其中:

添加模块10,用于在粒子系统中添加反射器。

在本发明的一种优选实施例中,所述添加模块10具体可以包括:端点添加子模块和反射线子模块。端点添加子模块,用于在所述粒子系统中添加多个点作为反射器的初始端点;反射线子模块,用于将所述反射器的初始端点相连构成折线,并将所述折线作为所述反射器的反射线。

参数设置模块12,用于在每一帧需要进行渲染时设置所述反射器的参数。

本实施例中所述反射器的参数包括:反射器的活跃性参数、反射线的起点和反射线的终点。

在本发明的一种优选实施例中所述参数设置模块12具体可以包括:活跃性设置子模块和端点调整子模块。活跃性设置子模块,用于设置所述反射器的活跃性参数,所述活跃性参数表征所述反射器是否有效;端点调整子模块,用于调整所述反射器的初始端点,将调整之后的所述端点作为反射线的起点和终点。

获取模块14,用于获取粒子系统的反弹值,作为粒子的反弹值。

效果计算模块16,用于依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果。

在本发明的一种优选实施例中,所述效果计算模块具体可以包括:判断子模块、交点计算子模块、垂直向量计算子模块、对称直线计算子模块和反弹后位置计算子模块,其中:

判断子模块,用于判断当前帧在所述反射线一侧的粒子,在下一帧是否位于反射线的另一侧。

交点计算子模块,用于当所述粒子下一帧位于反射线的另一侧时,计算所述粒子在当前帧的位置与所述粒子在下一帧的位置构成的直线与所述反射线的交点。

垂直向量计算子模块,用于计算经过所述交点与所述反射线垂直的垂直向量。

对称直线计算子模块,用于计算所述粒子在当前帧的位置与所述粒子在下一帧的位置构成的直线关于所述垂直向量对称的直线。

反弹后位置计算子模块,用于在所述对称的直线上,依据所述粒子的反弹值计算所述粒子在所述交点处反弹后的位置,并将所述粒子在所述交点处反弹后的位置作为所述粒子的反弹效果。

在本发明的一种优选实施例中,所述判断子模块包括:反射线直线计算子单元、当前距离计算子单元、下一距离计算子单元和判定子单元,其中:

反射线直线计算子单元,用于计算所述反射线起点和反射线的终点所在的直线方程,作为反射线的直线方程;

当前距离计算子单元,用于将所述粒子在当前帧的位置代入所述作为反射线的直线方程的表达式中,计算当前距离值;

下一距离计算子单元,用于将所述粒子在下一帧的位置代入所述反射线的直线方程的表达式中,计算下一距离值;

判定子单元,用于当所述当前距离值与所述下一距离值的乘积小于零时,判定所述粒子下一帧位于反射线的另一侧。

本实施例提供的粒子反弹效果的实现装置通过添加模块10在粒子系统中添加反射器,然后参数设置模块12在每一帧需要进行渲染时设置所述反射器的参数,接着获取模块14获取粒子系统的反弹值,作为粒子的反弹值,最后效果计算模块16依据所述反射器的参数和粒子的反弹值计算粒子的反弹效果,从而在粒子系统中实现了粒子的反弹效果。

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

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

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

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