发明内容
有鉴于此,本发明实施例提供一种粒子渲染方法、装置、电子设备及存储介质,能够有效解决视频播放进行粒子渲染时容易出现卡顿的问题。
第一方面,本发明实施例提供一种粒子渲染方法,包括:检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长,所述单位粒子集为具有预设粒子数量的粒子的集合;比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系;根据比较结果调整所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长。
结合第一方面,在第一方面的第一种实施方式中,所述检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长包括:检测所述待渲染的视频中渲染所述预设粒子数量的粒子所需要的时长。
结合第一方面,在第一方面的第二种实施方式中,所述根据比较结果调整所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长包括:如果所述实际渲染时长大于所述参考渲染时长,减少所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长;如果所述实际渲染时长小于或等于所述参考渲染时长,保持粒子渲染参数不变。
结合第一方面的第二种实施方式,在第一方面的第三种实施方式中,所述如果所述实际渲染时长大于所述参考渲染时长,减少所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长包括:如果所述实际渲染时长与所述参考渲染时长的时长比值大于1,将所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长减小所述时长比值倍。
结合第一方面,在第一方面的第四种实施方式中,所述比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系之前,所述方法还包括:检测所述待渲染的视频是否以变倍速方式播放;在所述待渲染的视频以变倍速方式播放的情况下,根据相应的倍速调整所述单位粒子集对应的参考渲染时长。
结合第一方面或第一方面的第一至第四中任一种实施方式,在第一方面的第五种实施方式中,所述检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长之前,所述方法还包括:根据所述待渲染的视频中所述参考渲染时长内渲染的最大粒子数量,确定所述单位粒子集对应的所述预设粒子数量。
结合第一方面的第五种实施方式,在第一方面的第六种实施方式中,所述根据所述待渲染的视频中所述参考渲染时长内渲染的最大粒子数量,确定所述单位粒子集对应的所述预设粒子数量包括:根据所述待渲染的视频的实际视频帧率与预设帧率的大小关系,确定所述待渲染的视频中单位时间内的最大粒子发射数量;根据所述待渲染的视频中单位时间内的最大粒子发射数量及每个粒子的生存时长,获取在每个视频帧中的最大渲染粒子数;根据每个视频帧中的最大渲染粒子数以及所述预设帧率,确定所述参考渲染时长内渲染的最大粒子数量;确定所述参考渲染时长内渲染的最大粒子数量为所述单位粒子集对应的所述预设粒子数量。
结合第一方面的第六种实施方式,在第一方面的第七种实施方式中,所述根据所述待渲染的视频的实际视频帧率与预设帧率的大小关系,确定所述待渲染的视频中单位时间内的最大粒子发射数量包括:在所述实际视频帧率大于所述预设帧率的情况下,按照预设速率逐渐增大单位时间内的粒子发射数量,直至所述实际视频帧率小于所述预设帧率,其中,所述预设速率小于预设阈值;确定所述实际视频帧率首次小于所述预设帧率时、单位时间内的粒子发射数量为所述单位时间内的最大粒子发射数量。
结合第一方面的第六种实施方式,在第一方面的第八种实施方式中,所述根据每个视频帧中的最大渲染粒子数以及所述预设帧率,确定所述参考渲染时长内渲染的最大粒子数量包括:将每个视频帧中渲染的最大粒子数与所述预设帧率的乘积再乘以所述参考渲染时长得到所述参考渲染时长内渲染的最大粒子数量。
结合第一方面的第六种实施方式,在第一方面的第九种实施方式中,所述确定所述参考渲染时长内渲染的最大粒子数量为所述单位粒子集对应的所述预设粒子数量包括:对至少两个所述参考渲染时长内渲染的最大粒子数量求平均值,得到所述单位粒子集对应的所述预设粒子数量。
第二方面,本发明的实施例还提供一种粒子渲染装置,包括:检测单元,用于检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长,所述单位粒子集为具有预设粒子数量的粒子的集合;比较单元,用于比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系;调整单元,用于根据所述比较单元的比较结果,调整所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长。
结合第二方面,在第二方面的第一种实施方式中,所述检测单元,具体用于检测所述待渲染的视频中渲染所述预设粒子数量的粒子所需要的时长。
结合第二方面,在第二方面的第二种实施方式中,所述比较单元包括:减少模块,用于如果所述实际渲染时长大于所述参考渲染时长,减少所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长;保持模块,用于如果所述实际渲染时长小于或等于所述参考渲染时长,保持粒子渲染参数不变。
结合第二方面的第二种实施方式,在第二方面的第三种实施方式中,所述减少模块,具体用于如果所述实际渲染时长与所述参考渲染时长的时长比值大于1,将所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长减小所述时长比值倍。
结合第二方面,在第二方面的第四种实施方式中,所述检测单元,还用于在比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系之前,检测所述待渲染的视频是否以变倍速方式播放;所述调整单元,还用于在所述待渲染的视频以变倍速方式播放的情况下,根据相应的倍速调整所述单位粒子集对应的参考渲染时长。
结合第二方面或第二方面的第一至第四中任一种实施方式,在第二方面的第五种实施方式中,所述装置还包括确定单元,用于在检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长之前,根据所述待渲染的视频中所述参考渲染时长内渲染的最大粒子数量,确定所述单位粒子集对应的所述预设粒子数量。
结合第二方面的第五种实施方式,在第二方面的第六种实施方式中,所述确定单元包括:第一确定模块,用于根据所述待渲染的视频的实际视频帧率与预设帧率的大小关系,确定所述待渲染的视频中单位时间内的最大粒子发射数量;获取模块,用于根据所述待渲染的视频中单位时间内的最大粒子发射数量及每个粒子的生存时长,获取在每个视频帧中的最大渲染粒子数;第二确定模块,用于根据每个视频帧中的最大渲染粒子数以及所述预设帧率,确定所述参考渲染时长内渲染的最大粒子数量;第三确定模块,用于确定所述参考渲染时长内渲染的最大粒子数量为所述单位粒子集对应的所述预设粒子数量。
结合第二方面的第六种实施方式,在第二方面的第七种实施方式中,所述第一确定模块,具体用于:在所述实际视频帧率大于所述预设帧率的情况下,按照预设速率逐渐增大单位时间内的粒子发射数量,直至所述实际视频帧率小于所述预设帧率,其中,所述预设速率小于预设阈值;确定所述实际视频帧率首次小于所述预设帧率时、单位时间内的粒子发射数量为所述单位时间内的最大粒子发射数量。
结合第二方面的第六种实施方式,在第二方面的第八种实施方式中,所述第二确定模块,具体用于:将每个视频帧中渲染的最大粒子数与所述预设帧率的乘积再乘以所述参考渲染时长得到所述参考渲染时长内渲染的最大粒子数量。
结合第二方面的第六种实施方式,在第二方面的第九种实施方式中,所述第三确定模块,具体用于:对至少两个所述参考渲染时长内渲染的最大粒子数量求平均值,得到所述单位粒子集对应的所述预设粒子数量。
第三方面,本发明的实施例还提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行本发明的实施例提供的任一种粒子渲染方法。
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明的实施例提供的任一种粒子渲染方法。
本发明的实施例提供的粒子渲染方法、装置、电子设备及存储介质,能够检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长,然后比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系,并根据比较结果调整所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长。这样,即可根据实际的渲染状态动态调整粒子的渲染参数,有效解决了视频播放进行粒子渲染时容易出现卡顿的问题。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
第一方面,本发明实施例提供一种粒子渲染方法,能够根据实际的渲染状态动态调整粒子的渲染参数,有效解决了视频播放进行粒子渲染时容易出现卡顿的问题。
如图1所示,本发明的实施例提供的粒子渲染方法,包括:
S11,检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长,所述单位粒子集为具有预设粒子数量的粒子的集合;
在粒子系统中,粒子随着视频的播放进行渲染,每个视频帧中都对应渲染一定数量的粒子。由于粒子的渲染效果需要通过一定数量的粒子集体呈现,为了便于描述粒子的渲染效果,在本发明的实施例中,提出单位粒子集的概念,单位粒子集也就是具有预设粒子数量的粒子的集合。在粒子渲染中,以单位粒子集为基本单位对粒子及其渲染效果进行描述。
单位粒子集渲染的时长与单位粒子集中包含的粒子数量有关,同等条件下,单位粒子集中包含的粒子数量越多,渲染该单位粒子集所需的时间越长,因此,在其他条件一定的情况下,单位粒子集所对应的渲染时长也是一定的。检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长,有利于对粒子渲染是否顺畅、是否卡顿作出判断。
本步骤中,可以在视频播放和粒子渲染的过程中,检测渲染的粒子数和所花费的时间,检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长具体可以包括:检测所述待渲染的视频中渲染所述预设粒子数量的粒子所需要的时长。
S12,比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系;
本步骤中,参考渲染时长是预先设置的时长参数。在本发明的一个实施例中,可以在标准的、不卡顿的情况下为单位粒子集确定一个对应的参考渲染时长,然后以该参考时长为标准,可以根据单位粒子集的实际渲染时长与参考渲染时长的关系,确定粒子渲染是否卡顿,是否需要调节,以及怎样调节。
S13,根据比较结果调整所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长。
本步骤中,需要根据步骤S12中的比较结果,调整粒子渲染参数,从而保证粒子渲染流畅。具体的,可以调整待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数,也可以调整每个粒子的生存时长,还可以二者一起调整。例如,可以减少当前帧中正在渲染的粒子数,同时减少每个粒子的生存时长,并且减少下一帧对应的渲染粒子数,同时保持下一帧中每个粒子的生存时长不变。具体的调整方案可以根据渲染需要进行,本发明的实施例对此不做限定。
本发明的实施例提供的粒子渲染方法,能够检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长,然后比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系,并根据比较结果调整所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长。这样,即可根据实际的渲染状态动态调整粒子的渲染参数,有效解决了视频播放进行粒子渲染时容易出现卡顿的问题。
具体而言,步骤S13中,根据比较结果调整所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长可包括:
如果所述实际渲染时长大于所述参考渲染时长,则可以减少所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长;
如果所述实际渲染时长小于或等于所述参考渲染时长,则可以保持粒子渲染参数不变。
也就是说,如果检测到的实际渲染时长大于参考渲染时长,则说明渲染同样的单位粒子集所需的时间比参考时间要长,因此可以推断出粒子渲染出现了卡顿,为了缓解卡顿情况,可以减少待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长。如果检测到的时间渲染时长小于或等于该参考渲染时长,则说明渲染同样的单位粒子集所需的时间并没有比参考时间长,因此可以推断出粒子渲染没有卡顿,可以保持原来的粒子渲染参数不变。
在需要对粒子渲染参数进行调整的情况下,如何进行调整关系到卡顿现象是否能及时解决,因此对粒子渲染参数调整的具体量也具有很大意义。在本发明的一个实施例中,如果所述实际渲染时长大于所述参考渲染时长,减少所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长可包括:
如果所述实际渲染时长与所述参考渲染时长的时长比值大于1,将所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长减小所述时长比值倍。
需要说明的是,只要将每个视频帧对应的渲染粒子数和每个粒子的生存时长这两者的乘积减小所述时长比值倍即可,以便保证渲染效果不失真,置于渲染粒子数减小多少倍,生存时长减小多少倍不做限定。
举例说明,在本发明的一个实施例中,假如检测到一个单位粒子集的实际渲染时长为12ms,而对应的参考渲染时长为10ms,二者的时长比值为1.2,则可以将当前帧及后续帧中每个视频帧对应的渲染粒子数减小1.2倍,或者将当前帧及后续帧中每个粒子的生存时长都减小1.2倍,或者将当前帧及后续帧中每个视频帧对应的渲染粒子数减小倍并且将当前帧及后续帧中每个粒子的生存时长减小倍。
需要说明的是,本发明的实施例中,粒子渲染参数的调整可以逐帧进行,每个视频帧中对应的渲染参数可以相同,也可以不同。例如,本实施例中,当前帧和后续帧的调整方式可以不同,例如可以将当前帧的每个粒子的生存时长都减小1.2倍,而将后续帧中的每个视频帧对应的渲染粒子数和每个粒子的生存时长分别减小倍。
在实际应用中,视频播放除了按照正常的速率播放外,还可以采用变速率的方式播放,例如,整段视频都按照正常速度的2倍速播放,或者视频的一段按照正常速度的5倍速播放,另一段按照正常速度的0.5倍速播放。对于这种变速率方式的视频播放,仍然需要解决粒子渲染的卡顿问题。
为此,在本发明的一个实施例中,在步骤S12比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系之前,本发明的实施例提供的粒子渲染方法还可包括:
检测所述待渲染的视频是否以变倍速方式播放;
在所述待渲染的视频以变倍速方式播放的情况下,根据相应的倍速调整所述单位粒子集对应的参考渲染时长,从而在步骤S12中,利用检测到的实际渲染时长与调整后的参考渲染时长进行比较,根据比较结果完成对粒子渲染参数的调整。
可以理解的,如果视频以X倍的变倍速方式播放,则视频帧率也变为原来的X倍,则渲染同样的单位粒子集所需要的参考渲染时长变为原来的1/X倍。
例如,在本发明的一个实施例中,正常速度的视频播放时,渲染单位粒子集的参考渲染时长为10ms,当以2倍速播放时,将参考渲染时长调整为10/2=5ms,然后检测渲染单位粒子集的实际渲染时长为6ms,实际渲染时长与参考渲染时长的时长之比为6/5=1.2,因此可以判定为有卡顿情况出现,需要调整粒子渲染参数。具体的调整方法已经在前文进行了详细说明,此处不再赘述。
以上实施例中,粒子渲染参数的调整主要以单位粒子集为基本单位,看渲染单位粒子集所需要的实际时长与参考时长之间的关系,然而,究竟一定的参考渲染时长内渲染多少粒子不会引起卡顿,渲染多少粒子会因此卡顿,渲染的粒子数量的临界值是什么还需要提前确定出来,才能够有一个比较准确的参数调整基础。
有鉴于此,在本发明的一个实施例中,在步骤S11检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长之前,本发明的实施例提供的粒子渲染方法还可包括:
根据所述待渲染的视频中所述参考渲染时长内渲染的最大粒子数量,确定所述单位粒子集对应的所述预设粒子数量。
也就是说,以参考渲染时长为一个基本的时间单位,可以首先测试一下在这段参考渲染时长内,最多渲染多少粒子可以仍然保持不卡顿,将这个对应的最大粒子数量确定为单位粒子集对应的预设粒子数量。
具体而言,根据所述待渲染的视频中所述参考渲染时长内渲染的最大粒子数量,确定所述单位粒子集对应的所述预设粒子数量可包括:
根据所述待渲染的视频的实际视频帧率与预设帧率的大小关系,确定所述待渲染的视频中单位时间内的最大粒子发射数量;
根据所述待渲染的视频中单位时间内的最大粒子发射数量及每个粒子的生存时长,获取在每个视频帧中的最大渲染粒子数;
根据每个视频帧中的最大渲染粒子数以及所述预设帧率,确定所述参考渲染时长内渲染的最大粒子数量;
确定所述参考渲染时长内渲染的最大粒子数量为所述单位粒子集对应的所述预设粒子数量。
可选的,所述根据所述待渲染的视频的实际视频帧率与预设帧率的大小关系,确定所述待渲染的视频中单位时间内的最大粒子发射数量可包括:
在所述实际视频帧率大于所述预设帧率的情况下,按照预设速率逐渐增大单位时间内的粒子发射数量,直至所述实际视频帧率小于所述预设帧率,其中,所述预设速率小于预设阈值;
确定所述实际视频帧率首次小于所述预设帧率时、单位时间内的粒子发射数量为所述单位时间内的最大粒子发射数量。
确定了单位时间内的最大粒子发射数量后,每帧视频渲染的粒子数N也会达到最大值,从而可以根据每个视频帧中的最大渲染粒子数以及所述预设帧率,确定所述参考渲染时长内渲染的最大粒子数量,具体可包括:
将每个视频帧中渲染的最大粒子数与所述预设帧率的乘积再乘以所述参考渲染时长得到所述参考渲染时长内渲染的最大粒子数量。
举例说明,在本发明的一个实施例中,根据所述待渲染的视频的实际视频帧率与预设帧率的大小关系,确定所述待渲染的视频中单位时间内的最大粒子发射数量可包括:
S201、播放视频,产生渲染粒子(为确保第一次产生不引起卡帧,第一次尽量少产生粒子);
S202、记录单位时间内产生粒子数量A,当前帧渲染粒子数为N,视频的实际帧率B’以及视频设置帧率B;
S203、B’是否大于B,如果是,执行步骤S204,如果否,执行步骤S205;
S204、对单位时间内产生的粒子数少量增加M,即单位时间内产生粒子数量A=A+M,当前视频帧渲染的粒子数量也相应增加,执行步骤S201;
S205、求出参考渲染时长内渲染的最大粒子数量;
首先求出当前帧每毫秒的粒子渲染数量P,P=N*B/1000;然后用P乘以时间段系数F,得到F毫秒内渲染的最大粒子数量E,E=P*F=N*B*F/1000;如果F毫秒即定义为参考渲染时长,则E即为单位粒子集所具有的预设粒子数量,也就是说,渲染单位粒子集E所需时间为F。
进一步的,为了减小统计误差,得到更为准确的预设粒子数量,在本发明的一个实施例中,确定所述参考渲染时长内渲染的最大粒子数量为所述单位粒子集对应的所述预设粒子数量可具体包括:
对至少两个所述参考渲染时长内渲染的最大粒子数量求平均值,得到所述单位粒子集对应的所述预设粒子数量。
也就是说,步骤S201至步骤S203的整个流程可以重复K次,取多次测验的单位粒子集数量值得平均值为最终单位粒子集数量值D,D=(E1+E2+E3+……+Ek)/K;得到数量为D的单位粒子集所需的参考渲染时长F。
下面通过具体实施例对本发明的实施例提供的粒子渲染方法进行详细说明。
如图3所示,本发明的实施例提供的粒子渲染方法可包括如下步骤:
S301、在应用中设置正常播放速度下待渲染的视频渲染单位粒子集所需的参考渲染时长F;
S302、播放视频产生并渲染粒子;
S303、检测待渲染视频是否变速播放,如果是,执行步骤S304,如果否,执行步骤S305;
S304、对参考渲染时长F进行调整,执行步骤S305;
S305、检测待渲染的视频中渲染单位粒子集所需的实际渲染时长F’,其中,每个粒子的生存时长为L,粒子产生速率为S,当前帧渲染的粒子数为T;
S306、F’是否大于F,如果是,执行步骤S307,如果否,执行步骤S309;
S307、计算得到比值R=F’/F,根据比值R减少当前帧正在渲染的粒子的生存时长和渲染粒子数量,例如
可选的,当同时存在多个粒子系统时,分别减少每个粒子系统中粒子的生存时长L和渲染的粒子数量T。
S308、根据比值R减少即将产生的粒子的生存时长L及粒子产生速率S,例如
S309、粒子渲染未卡顿,执行S302。
可选的,步骤S307和S308中,粒子的生存时长、正在渲染或即将产生的粒子数量中的调整系数,可以根据需求进行个性化动态配置,根据不同类型的粒子系统设置不同的除数系数。
本发明的实施例提供的粒子渲染方法,在使用任何性能或机型的播放器播放视频并渲染大量粒子系统时,能够实时监控粒子系统渲染状态,通过动态计算,实时调控粒子系统的参数,从而解决了大量粒子系统渲染卡顿的问题,大大提升了产品的用户体验。
第二方面,本发明的实施例还提供一种粒子渲染装置,能够根据实际的渲染状态动态调整粒子的渲染参数,有效解决了视频播放进行粒子渲染时容易出现卡顿的问题。
如图4所示,本发明的实施例提供粒子渲染装置,可包括:
检测单元41,用于检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长,所述单位粒子集为具有预设粒子数量的粒子的集合;
比较单元42,用于比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系;
调整单元43,用于根据所述比较单元的比较结果,调整所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长。
本发明的实施例提供的粒子渲染装置,能够检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长,然后比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系,并根据比较结果调整所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长。这样,即可根据实际的渲染状态动态调整粒子的渲染参数,有效解决了视频播放进行粒子渲染时容易出现卡顿的问题。
可选的,检测单元41,具体用于检测所述待渲染的视频中渲染所述预设粒子数量的粒子所需要的时长。
可选的,比较单元42可包括:
减少模块,用于如果所述实际渲染时长大于所述参考渲染时长,减少所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长;
保持模块,用于如果所述实际渲染时长小于或等于所述参考渲染时长,保持粒子渲染参数不变。
可选的,所述减少模块,具体用于如果所述实际渲染时长与所述参考渲染时长的时长比值大于1,将所述待渲染的视频的当前帧及后续帧中每个视频帧对应的渲染粒子数和/或每个粒子的生存时长减小所述时长比值倍。
可选的,检测单元41,还可用于在比较所述实际渲染时长与所述单位粒子集对应的参考渲染时长的大小关系之前,检测所述待渲染的视频是否以变倍速方式播放;
调整单元43,还可用于在所述待渲染的视频以变倍速方式播放的情况下,根据相应的倍速调整所述单位粒子集对应的参考渲染时长。
进一步的,如图5所示,本发明的实施例提供的粒子渲染装置还可包括确定单元44,用于在检测单元41检测待渲染的视频中渲染一个单位粒子集所需要的实际渲染时长之前,根据所述待渲染的视频中所述参考渲染时长内渲染的最大粒子数量,确定所述单位粒子集对应的所述预设粒子数量。
可选的,确定单元44可包括:
第一确定模块,用于根据所述待渲染的视频的实际视频帧率与预设帧率的大小关系,确定所述待渲染的视频中单位时间内的最大粒子发射数量;
获取模块,用于根据所述待渲染的视频中单位时间内的最大粒子发射数量及每个粒子的生存时长,获取在每个视频帧中的最大渲染粒子数;
第二确定模块,用于根据每个视频帧中的最大渲染粒子数以及所述预设帧率,确定所述参考渲染时长内渲染的最大粒子数量;
第三确定模块,用于确定所述参考渲染时长内渲染的最大粒子数量为所述单位粒子集对应的所述预设粒子数量。
可选的,所述第一确定模块,可具体用于:
在所述实际视频帧率大于所述预设帧率的情况下,按照预设速率逐渐增大单位时间内的粒子发射数量,直至所述实际视频帧率小于所述预设帧率,其中,所述预设速率小于预设阈值;
确定所述实际视频帧率首次小于所述预设帧率时、单位时间内的粒子发射数量为所述单位时间内的最大粒子发射数量。
可选的,所述第二确定模块,可具体用于:
将每个视频帧中渲染的最大粒子数与所述预设帧率的乘积再乘以所述参考渲染时长得到所述参考渲染时长内渲染的最大粒子数量。
可选的,所述第三确定模块,可具体用于:
对至少两个所述参考渲染时长内渲染的最大粒子数量求平均值,得到所述单位粒子集对应的所述预设粒子数量。
第三方面,本发明实施例提供一种电子设备,能够根据实际的渲染状态动态调整粒子的渲染参数,有效解决了视频播放进行粒子渲染时容易出现卡顿的问题。
如图6所示,本发明的实施例提供的电子设备,可以包括:壳体51、处理器52、存储器53、电路板54和电源电路55,其中,电路板54安置在壳体51围成的空间内部,处理器52和存储器53设置在电路板54上;电源电路55,用于为上述电子设备的各个电路或器件供电;存储器53用于存储可执行程序代码;处理器52通过读取存储器53中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例提供的人数统计方法。
处理器52对上述步骤的具体执行过程以及处理器52通过运行可执行程序代码来进一步执行的步骤,可以参见前述实施例的描述,在此不再赘述。
上述电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种粒子渲染方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。