一种基于双重缓冲和线性插帧技术的动画实现方法及系统与流程

    专利查询2022-07-08  143



    1.本发明涉及动画实现技术领域,更具体地,涉及一种基于双重缓冲和线性插帧技术的动画实现方法及系统。


    背景技术:

    2.常规的动画实现方法,一般来说,就是将动画的数据按照一定的速度进行逐帧切换显示。比如电影中的速度通常为24帧每秒。动画中,非常重要的一个指标,就是动画的帧率。电影的24帧每秒,是人眼不觉得卡顿的最低帧率。低于这个帧率,人眼就会明显感受到动画不流畅、卡顿。
    3.当然动画分为多种类型,电影这种预先将动画的画面,逐帧生成好,处理成为可以直接播放的数据,是其中非常普遍的一种类型。还有三维动画中的骨骼动画,这种动画在游戏中使用非常普遍,通常用于表现某个角色的动作等等。
    4.其中有一类动画在实现过程中是需要进行实时渲染的,但是驱动动画的数据源,其读取的速度比较慢,无法满足每秒24帧数据的读取速度。这种情况下,基于双重缓冲和线性插帧的动画算法,就可以比较好的解决动画的帧率不够的问题。


    技术实现要素:

    5.本发明针对现有技术中存在的需要实时渲染的动画的帧率不够的技术问题。
    6.本发明提供了一种基于双重缓冲和线性插帧技术的动画实现方法,包括以下步骤:
    7.第一步,双重缓冲,根据动画对于数据的需要,异步动态的预先加载一帧数据;
    8.第二步,线性插帧,将原来的两帧数据,线性插帧为多帧数据。
    9.优选地,所述第一步具体包括:
    10.s1,设定插帧数量m,动画数据源的帧序号i设置为0,插帧序号设置为0,获取动画数据源总数据帧数c,计算动画总帧数c=(c*(m 1)),其中,m》1;
    11.s2,预先读取动画数据源的第0到1帧数据。
    12.优选地,所述第二步具体包括:
    13.s3,动画数据源的帧序号i,除以(m 1),得到整数商p,以及余数q;
    14.s4,使用整数商p到(p 1)之间的帧数据,异步插帧第q帧数据;
    15.s5,如果q为0,则异步加载(p 2)帧真实数据,并同步渲染第p帧真实数据;如果q不为0,同步渲染(q-1)帧插帧的数据;
    16.s6,动画帧序号i自增1,如果i小于c,则跳转到所述s3,直到i大于等于c则结束动画。
    17.优选地,所述第一步具体包括:采用多线程编程方式,异步动态的预先加载一帧数据。
    18.优选地,所述第二步具体包括:通过线性插帧得到的每一帧数据和原始数据源的
    数据格式相同。
    19.本发明还提供了一种基于双重缓冲和线性插帧技术的动画实现系统,所述检测提取系统用于实现基于双重缓冲和线性插帧技术的动画实现方法,包括:
    20.双重缓冲模块,用于根据动画对于数据的需要,异步动态的预先加载一帧数据;
    21.线性插帧模块,用于将原来的两帧数据,线性插帧为多帧数据。
    22.本发明还提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现基于双重缓冲和线性插帧技术的动画实现方法的步骤。
    23.本发明还提供了一种计算机可读存储介质,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现基于双重缓冲和线性插帧技术的动画实现方法的步骤。
    24.有益效果:本发明提供的一种基于双重缓冲和线性插帧技术的动画实现方法及系统,其中方法包括以下步骤:第一步,双重缓冲,根据动画对于数据的需要,异步动态的预先加载一帧数据;第二步,线性插帧,将原来的两帧数据,线性插帧为多帧数据。通过双重缓冲技术,提升动画数据源的读取速度;线性插帧技术,减缓动画对于数据源的数据的需求速度。两种方法结合,可以大幅改善动画的流畅度,比较容易达到24帧每秒的帧率。解决了动画数据源加载速度较慢且动画流畅度不够的问题。通过合理的设置插帧数量,可以比较容易的实现动画的流畅渲染。同时在一定程度上,通过插帧增加了动画的部分细节。
    附图说明
    25.图1为本发明提供的一种基于双重缓冲和线性插帧技术的动画实现方法的流程图;
    26.图2为本发明提供的一种可能的电子设备的硬件结构示意图;
    27.图3为本发明提供的一种可能的计算机可读存储介质的硬件结构示意图。
    具体实施方式
    28.下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
    29.图1为本发明提供的一种基于双重缓冲和线性插帧技术的动画实现方法及系统,其中方法包括以下步骤:第一步,双重缓冲,根据动画对于数据的需要,异步动态的预先加载一帧数据;第二步,线性插帧,将原来的两帧数据,线性插帧为多帧数据。通过双重缓冲技术,提升动画数据源的读取速度;线性插帧技术,减缓动画对于数据源的数据的需求速度。两种方法结合,可以大幅改善动画的流畅度,比较容易达到24帧每秒的帧率。解决了动画数据源加载速度较慢且动画流畅度不够的问题。通过合理的设置插帧数量,可以比较容易的实现动画的流畅渲染。同时在一定程度上,通过插帧增加了动画的部分细节。
    30.具体地,双重缓冲,即使用多线程等编程技术,根据动画对于数据的需要,异步动态的预先加载一帧数据,以减缓动画需要新的数据的时候的延迟,从而在一定程度上提升动画的帧率。同时又不需要将全部的动画数据都加载到内存中,可以降低内存的需求量;也将加载动画数据源的时间,分摊到整个动画的过程中,避免长时间的加载数据导致的卡顿。
    31.进一步的方案,当数据源读取的速度过慢,那么动画数据源的读取速度,始终无法
    跟上动画对于数据的需求。这时就需要使用某些方法,减缓动画对于动画数据源的需求的速度。即使用线性插帧技术来实现该目的。具体地,就是使用线性插帧方法,将原来的两帧数据,线性插帧为多帧数据。插帧得到的每一帧数据,和原始数据源的数据格式相同,即也可以驱动一帧动画的画面。具体的插帧数量,可以根据实际情况,进行调整,直到动画可以比较流畅的进行播放。
    32.总体来说,双重缓冲技术,提升动画数据源的读取速度;线性插帧技术,减缓动画对于数据源的数据的需求速度。两种方法结合,可以大幅改善动画的流畅度,比较容易达到24帧每秒的帧率。
    33.优选的方案,所述第一步具体包括:
    34.s1,设定插帧数量m,动画数据源的帧序号i设置为0,插帧序号设置为0,获取动画数据源总数据帧数c,计算动画总帧数c=(c*(m 1)),其中,m》1;
    35.s2,预先读取动画数据源的第0到1帧数据。
    36.读取动画数据源的总数据帧数c,根据经验设定插帧数量m,并将动画数据源的帧序号i设置为0,插帧序号j设置为0。预先读取第0到1帧数据,从头开始进行双重缓存。也可以是读取其他位置的帧数据,操作原理过程一样,在此不再赘述。
    37.优选的方案,所述第二步具体包括:
    38.s3,动画数据源的帧序号i,除以(m 1),得到整数商p,以及余数q;即p=i/(m 1);q=i%(m 1);
    39.s4,使用整数商p到(p 1)之间的帧数据,异步插帧第q帧数据;
    40.s5,如果q为0,则异步加载(p 2)帧真实数据,并同步渲染第p帧真实数据;如果q不为0,同步渲染(q-1)帧插帧的数据;
    41.s6,动画帧序号i自增1,如果i小于c,则跳转到所述s3,直到i大于等于c则结束动画。便可以得到流畅度更高的改善动画。
    42.在一个具体的实施场景中,采用基于双重缓冲和线性插帧技术的动画实现方法以提高水位动态模拟的流畅度为例进行距离说明如下:
    43.s001:获取用户设定的时间范围[tmin,tmax]内的监测时间点数据,即需要进行模拟的时刻列表,并进行升序排序。得到时间点有序集合a。
    [0044]
    s002:获取[tmin,tmax]内的水位最值[wmin,wmax],供后续使用。
    [0045]
    s003:实现获取指定时间t的所有水位数据的接口。至此动画数据源获取完毕。
    [0046]
    s004:按照本发明实施例中的基于双重缓冲和线性插帧技术的动画实现方法,实现水位动态模拟的功能。其中总数据帧数c为时间点有序集合a的元素数量;插帧数量m,用户自行调整即可。具体的动画实现如下:
    [0047]
    s1,设定插帧数量m,动画数据源的帧序号i设置为0,插帧序号设置为0,获取动画数据源总数据帧数c,计算动画总帧数c=(c*(m 1)),其中,m》1;
    [0048]
    s2,预先读取动画数据源的第0到1帧数据;
    [0049]
    s3,动画数据源的帧序号i,除以(m 1),得到整数商p,以及余数q;
    [0050]
    s4,使用整数商p到(p 1)之间的帧数据,异步插帧第q帧数据;
    [0051]
    s5,如果q为0,则异步加载(p 2)帧真实数据,并同步渲染第p帧真实数据;如果q不为0,同步渲染(q-1)帧插帧的数据;
    [0052]
    s6,动画帧序号i自增1,如果i小于c,则跳转到所述s3,直到i大于等于c则结束动画。
    [0053]
    本发明实施例还提供了一种基于双重缓冲和线性插帧技术的动画实现系统,所述检测提取系统用于实现基于双重缓冲和线性插帧技术的动画实现方法,包括:
    [0054]
    双重缓冲模块,用于根据动画对于数据的需要,异步动态的预先加载一帧数据;
    [0055]
    线性插帧模块,用于将原来的两帧数据,线性插帧为多帧数据。
    [0056]
    请参阅图2为本发明实施例提供的电子设备的实施例示意图。如图2所示,本发明实施例提了一种电子设备,包括存储器1310、处理器1320及存储在存储器1310上并可在处理器1320上运行的计算机程序1311,处理器1320执行计算机程序1311时实现以下步骤:第一步,双重缓冲,根据动画对于数据的需要,异步动态的预先加载一帧数据;
    [0057]
    第二步,线性插帧,将原来的两帧数据,线性插帧为多帧数据。
    [0058]
    请参阅图3为本发明提供的一种计算机可读存储介质的实施例示意图。如图3所示,本实施例提供了一种计算机可读存储介质1400,其上存储有计算机程序1411,该计算机程序1411被处理器执行时实现如下步骤:第一步,双重缓冲,根据动画对于数据的需要,异步动态的预先加载一帧数据;
    [0059]
    第二步,线性插帧,将原来的两帧数据,线性插帧为多帧数据。
    [0060]
    需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
    [0061]
    本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
    [0062]
    本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
    [0063]
    这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
    [0064]
    这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
    [0065]
    尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选
    实施例以及落入本发明范围的所有变更和修改。
    [0066]
    显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
    转载请注明原文地址:https://tc.8miu.com/read-2276.html

    最新回复(0)