著录项信息
专利名称 | 切屏动画实现方法及移动终端 |
申请号 | CN201010267563.9 | 申请日期 | 2010-08-25 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2010-12-29 | 公开/公告号 | CN101930367A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | 暂无 | IPC分类号 | 暂无查看分类表>
|
申请人 | 中兴通讯股份有限公司 | 申请人地址 | 广东省深圳市南山区科技南路55号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中兴通讯股份有限公司 | 当前权利人 | 中兴通讯股份有限公司 |
发明人 | 廖海亮;傅启洪;张驰 |
代理机构 | 北京康信知识产权代理有限责任公司 | 代理人 | 余刚;吴孟秋 |
摘要
本发明公开了一种切屏动画实现方法及移动终端,该方法包括:设置第一训练图和第二训练图的所有像素点的颜色值,其中,颜色值两两不相同;根据切屏动画的每一帧的变换规则将第一训练图和第二训练图中所有像素点的颜色值生成训练序列;根据训练序列对当前画面和下一画面进行切屏动画。通过本发明,提高了切屏动画的流程程度,提高了用户体验。
1.一种切屏动画实现方法,其特征在于,包括:
设置第一训练图和第二训练图的所有像素点的颜色值,其中,所述颜色值两两不相同;
根据切屏动画的每一帧的变换规则将所述第一训练图和所述第二训练图中所述所有像素点的颜色值生成训练序列;以及
根据所述训练序列对当前画面和下一画面进行切屏动画。
2.根据权利要求1所述的方法,其特征在于,设置第一训练图和第二训练图的所有像素点的颜色值包括:
通过以下公式设置第一训练图的所有像素点的颜色值:
inputFrame1[0]=1,
inputFrame1[i]=i+1;
其中,inputFrame1[i]表示所述第一训练图的第i个像素点的颜色值,
0≦i≦width*height-1,width是所述第一训练图的宽度,height是所述第一训练图的高度;
通过以下公式设置第二训练图的所有像素点的颜色值:
inputFrame2[0]=width*height+1,
inputFrame2[i]=width*height+i+1;
其中,inputFrame2[i]表示所述第二训练图的第i个像素点的颜色值,
0≦i≦width*height-1,width是所述第二训练图的宽度,height是所述第二训练图的高度,其中,所述第一训练图的高度等于所述第二训练图的高度,所述第一训练图的宽度等于所述第二训练图的高度。
3.根据权利要求1所述的方法,其特征在于,根据切屏动画的每一帧的变换规则将所述第一训练图和所述第二训练图中所述所有像素点的颜色值生成训练序列包括:
根据所述切屏动画的每一帧的变换规则分别将所述第一训练图和所述第二训练图对应像素的颜色值保存至队列;
将所述队列合并生成所述训练序列。
4.根据权利要求1所述的方法,其特征在于,根据所述训练序列对当前画面和下一画面进行切屏动画包括:
读取所述训练序列中的数据;
确定所述数据在所述第一训练图或第二训练图的像素对应的位置;
在所述当前画面或所述下一画面中读取所述对应的位置的颜色值,并将所述颜色值输出。
5.根据权利要求1-4任一项所述的方法,其特征在于,
在切屏动画操作中取消切屏动画的抗锯齿和位图过滤效果;
采用32位真彩色设置所述颜色值。
6.一种移动终端,其特征在于,包括:
设置模块,用于设置第一训练图和第二训练图的所有像素点的颜色值,其中,所述颜色值两两不相同;
生成模块,用于根据切屏动画的每一帧的变换规则将所述第一训练图和所述第二训练图中所述所有像素点的颜色值生成训练序列;以及
切屏动画模块,用于根据所述训练序列对当前画面和下一画面进行切屏动画。
7.根据权利要求6所述的移动终端,其特征在于,所述设置模块包括:
第一设置子模块,用于通过以下公式设置第一训练图的所有像素点的颜色值:
inputFrame1[0]=1,inputFrame1[i]=i+1;
其中,inputFrame1[i]表示所述第一训练图的第i个像素点的颜色值,
0≦i≦width*height-1,width是所述第一训练图的宽度,height是所述第一训练图的高度;
第二设置子模块,用于通过以下公式设置第二训练图的所有像素点的颜色值:
inputFrame2[0]=width*height+1,inputFrame2[i]=width*height+i+1;
其中,inputFrame2[i]表示所述第二训练图的第i个像素点的颜色值,
0≦i≦width*height-1,width是所述第二训练图的宽度,height是所述第二训练图的高度,其中,所述第一训练图的高度等于所述第二训练图的高度,所述第一训练图的宽度等于所述第二训练图的高度。
8.根据权利要求6所述的移动终端,其特征在于,所述生成模块包括:
保存子模块,用于根据所述切屏动画的每一帧的变换规则分别将所述第一训练图和所述第二训练图对应像素的颜色值保存至队列;
合并子模块,用于将所述队列合并生成所述训练序列。
9.根据权利要求6所述的移动终端,其特征在于,所述切屏动画模块包括:
第一读取子模块,用于读取所述训练序列中的数据;
确定子模块,用于确定所述数据在所述第一训练图或第二训练图的像素对应的位置;
第二读取子模块,用于在所述当前画面或所述下一画面中读取所述对应位置的颜色值;
输出子模块,用于将所述颜色值输出。
10.根据权利要求6-9任一项所述的移动终端,其特征在于,还包括:
处理模块,用于在切屏动画操作中取消切屏动画的抗锯齿和位图过滤效果。
切屏动画实现方法及移动终端\n技术领域\n[0001] 本发明涉及通信领域,具体而言,涉及一种切屏动画实现方法及移动终端。\n背景技术\n[0002] 随着移动终端技术的不断发展,用户对移动终端的娱乐性要求越来越高,出现了移动终端切屏动画技术,移动终端切屏动画指的是移动终端的界面从当前画面到下一画面切换过程中的衔接动画。目前的手机在用户接口(UserInterface,简称为UI)设计上采用了更多更复杂的切屏动画来提升移动终端的UI效果。\n[0003] 移动终端切屏动画技术可分为二维切屏动画和三维切屏动画。在移动终端UI设计上,二维切屏动画不含有三维效果,常用的二维切屏动画有:滑动渐入渐出、放大缩小渐入渐出、颜色渐变、图片渐变等等;三维切屏动画指的是一切含有三维效果的切屏动画。在移动终端UI设计上,常用的三维切屏动画有:立方体翻转效果、Flipper翻转效果等等。\n[0004] 三维动画的实质是对三维空间中的任何一个点,计算其投影在背景屏幕上的位置。三维切屏动画是一种特殊的三维动画,其目的是使用动画对两幅画面进行过渡,因此,三维切屏动画是对两幅画面进行三维变换。三维切屏动画技术是对输入的两幅画面进行运算,输出一系列的帧,当这些帧以一定的时间间隔在屏幕上播放时,就形成了三维切屏动画,在单位时间内输出的帧越多,动画就越流畅,效果就越好,但是也带来了运算量比较大的计算。一般的实时渲染的动画,其绘制流程如图1所示,一般由一个定时器驱动,逐帧绘制并显示出来。图1是根据相关技术的实时渲染动画绘制流程图,如图1所示,包括如下的步骤:\n[0005] 步骤S102:动画开始。\n[0006] 步骤S104:绘制动画的每一帧。\n[0007] 步骤S106:显示该帧。\n[0008] 步骤S108:判断动画是否结束,如果判断结果为是,则执行步骤S110,否则执行步骤S104。\n[0009] 相关技术中移动终端的三维切屏动画技术一般利用OpenGLES以及其它各种动画库完成(用于实现上述流程中的步骤S104)OpenGL ES是专为内嵌和移动设备设计的一个\n2D/3D轻量图形库,很多高端(智能)手机会采用一个专门的图形加速芯片对三维动画提供加速,且实现三维动画对手机CPU也提出了比较高的要求,而中低端手机由于没有相应的芯片则不能对三维动画提供加速,且由于三维切屏动画的计算量比较大,从而使得三维切屏动画在该类移动终端上的运行速度非常缓慢,远远达不到UI设计所需要的流畅程度,导致中低端手机无法实现三维切屏动画。\n发明内容\n[0010] 本发明的主要目的在于提供一种切屏动画实现方法及移动终端,以解决上述的相关技术中由于三维切屏动画需要通过大量的计算,在中低端手机上无法实现的问题。\n[0011] 为了实现上述目的,根据本发明的一个方面,提供了一种切屏动画实现方法。\n[0012] 根据本发明的切屏动画实现方法包括:设置第一训练图和第二训练图的所有像素点的颜色值,其中,上述颜色值两两不相同;根据切屏动画的每一帧的变换规则将第一训练图和第二训练图中所有像素点的颜色值生成训练序列;以及根据训练序列对当前画面和下一画面进行切屏动画。\n[0013] 进一步地,设置第一训练图和第二训练图的所有像素点的颜色值包括:\n[0014] 通过以下公式设置第一训练图的所有像素点的颜色值:\n[0015] inputFrame1[0]=1,inputFrame1[i]=i+1;其中,inputFrame1[i]表示第一训练图的第i个像素点的颜色值,0≤i≤width*height-1,width是第一训练图的宽度,height是第一训练图的高度;\n[0016] 通过以下公式设置第二训练图的所有像素点的颜色值:\n[0017] inputFrame2[0]=width*height+1,\n[0018] inputFrame2[i]=width*height+i+1;其中,inputFrame2[i]表示第二训练图的第i个像素点的颜色值,0≤i≤width*height-1,width是第二训练图的宽度,height是第二训练图的高度,其中,第一训练图的高度等于第二训练图的高度,第一训练图的宽度等于第二训练图的高度。\n[0019] 进一步地,根据切屏动画的每一帧的变换规则将第一训练图和第二训练图中所有像素点的颜色值生成训练序列包括:根据切屏动画的每一帧的变换规则分别将第一训练图和第二训练图对应像素的颜色值保存至队列;将队列合并生成训练序列。\n[0020] 进一步地,根据训练序列对当前画面和下一画面进行切屏动画包括:读取训练序列中的数据;确定数据在第一训练图或第二训练图的像素对应的位置;在当前画面或下一画面中读取对应的位置的颜色值,并将颜色值输出。\n[0021] 进一步地,在切屏动画操作中取消切屏动画的抗锯齿和位图过滤效果;采用32位真彩色设置颜色值。\n[0022] 为了实现上述目的,根据本发明的另一方面,提供了一种移动终端。\n[0023] 根据本发明的移动终端包括:设置模块,用于设置第一训练图和第二训练图的所有像素点的颜色值,其中,颜色值两两不相同;生成模块,用于根据切屏动画的每一帧的变换规则将第一训练图和第二训练图中所有像素点的颜色值生成训练序列;以及切屏动画模块,用于根据训练序列对当前画面和下一画面进行切屏动画。\n[0024] 进一步地,设置模块包括:第一设置子模块,用于通过以下公式设置第一训练图的所有像素点的颜色值:\n[0025] inputFrame1[0]=1,inputFrame1[i]=i+1;\n[0026] 其中,inputFrame1[i]表 示第 一训 练图 的第i个 像素 点的 颜色 值,\n0≤i≤width*height-1,width是第一训练图的宽度,height是第一训练图的高度;\n[0027] 第二设置子模块,用于通过以下公式设置第二训练图的所有像素点的颜色值:\n[0028] inputFrame12[0]=width*height+1,inputFrame2[i]=i width*height+i+1;\n[0029] 其中,inputFrame2[i]表 示第 二训 练图 的第i个 像素 点的 颜色 值,\n0≤i≤width*height-1,width是第二训练图的宽度,height是第二训练图的高度,其中,第一训练图的高度等于第二训练图的高度,第一训练图的宽度等于第二训练图的高度。\n[0030] 进一步地,生成模块包括:保存子模块,用于根据切屏动画的每一帧的变换规则分别将第一训练图和第二训练图对应像素的颜色值保存至队列;合并子模块,用于将队列合并生成训练序列。\n[0031] 进一步地,切屏动画模块包括:第一读取子模块,用于读取训练序列中的数据;确定子模块,用于确定数据在第一训练图或第二训练图的像素对应的位置;第二读取子模块,用于在当前画面或下一画面中读取对应位置的颜色值;输出子模块,用于将上述颜色值输出。\n[0032] 进一步地,上述移动终端还包括:处理模块,用于在切屏动画操作中取消切屏动画的抗锯齿和位图过滤效果。\n[0033] 通过本发明,采用设置第一训练图和第二训练图的所有像素点的颜色值,其中,颜色值两两不相同,根据切屏动画的每一帧的变换规则将第一训练图和第二训练图中所有像素点的颜色值生成训练序列,根据训练序列对当前画面和下一画面进行切屏动画,解决了相关技术中由于三维切屏动画需要通过大量的计算,在中低端手机上无法实现的问题,进而达到了实现了在中低端手机上实现三维切屏动画,达到了提高了用户体验的效果。\n附图说明\n[0034] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:\n[0035] 图1是根据相关技术的实时渲染动画绘制流程图;\n[0036] 图2是根据本发明实施例的切屏动画实现方法的流程图;\n[0037] 图3是根据本发明实施例的移动终端的结构框图;\n[0038] 图4是根据本发明实施例的移动终端的优选的结构框图;\n[0039] 图5是根据本发明实施例的三维动画渲染流程图;\n[0040] 图6为根据本发明实施例的训练过程的流程图;以及\n[0041] 图7为根据本发明实施例的绘制过程的流程图。\n具体实施方式\n[0042] 下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。\n[0043] 根据本发明的实施例,提供了一种切屏动画实现方法,图2是根据本发明实施例的切屏动画实现方法的流程图,如图2所示,包括:\n[0044] 步骤S202:设置第一训练图和第二训练图的所有像素点的颜色值,其中,颜色值两两不相同。\n[0045] 步骤S204:根据切屏动画的每一帧的变换规则将第一训练图和第二训练图中所有像素点的颜色值生成训练序列。\n[0046] 步骤S206:根据训练序列对当前画面和下一画面进行切屏动画。\n[0047] 通过上述步骤,首先设置第一训练图和第二训练图的所有像素点的颜色值,其中,颜色值两两不相同,然后根据切屏动画的每一帧的变换规则将第一训练图和第二训练图中所有像素点的颜色值生成训练序列,最后根据训练序列对当前画面和下一画面进行切屏动画,避免了相关技术中进行切屏动画时进行大量计算,由于中低端手机上没有相应的芯片为三维动画提供加速,使得三维切屏动画在该类移动终端上的运行速度非常缓慢,远远达不到UI设计所需要的流畅程度,导致中低端手机无法实现三维切屏动画的问题,提高了三维切屏动画的质量和流畅程度,从而提高了用户体验度。\n[0048] 下面对步骤S202中的设置第一训练图和第二训练图的所有像素点的颜色值的一个优选的实施方式进行说明。可以通过以下公式设置第一训练图的所有像素点的颜色值:\ninputFrame1[0]=1,inputFrame1[i]=i+1;其中,inputFrame1[i]表示第一训练图的第i个像素点的颜色值,0≤i≤width*height-1,width是第一训练图的宽度,height是第一训练图的高度;通过以下公式设置第二训练图的所有像素点的颜色值:inputFrame2[0]=width*height+1,inputFrame2[i]=width*height+i+1;其中,inputFrame2[i]表示第二训练图的第i个像素点的颜色值,0≤i≤width*height-1,width是第二训练图的宽度,height是第二训练图的高度。通过该优选实施例的设置步骤,使得第一训练图和第二训练图的每个像素点的颜色值都不同,且通过颜色值能够计算出该像素点在第一训练图和第二训练图的位置,实现了颜色值的准确定位。\n[0049] 下面对步骤S204中的根据切屏动画的每一帧的变换规则将第一训练图和第二训练图中所有像素点的颜色值生成训练序列的一个优选的实施方式进行说明。根据切屏动画的每一帧的变换规则分别将第一训练图和第二训练图对应像素的颜色值保存至队列;将队列合并生成训练序列。通过该优选实施例,将切屏动画每一帧的变化规则和在第一训练图和第二训练图的像素的颜色值对应起来,根据颜色值就能准确判断出该帧中对应颜色值的像素位置。\n[0050] 下面对步骤S206中的根据训练序列对当前画面和下一画面进行切屏动画的一个优选的实施方式进行说明。首先读取训练序列中的数据,其中数据为第一训练图或第二训练图的像素的颜色值,然后确定数据在第一训练图或第二训练图的像素对应的位置;最后在当前画面或下一画面中读取并上述对应的位置的颜色值,并将该颜色值输出。通过该优选实施例中的确定步骤,分别确定出对应于切屏动画每一帧的规则的像素的位置,在当前画面或下一画面中读取对应点的颜色值,并进行输出,实现了该帧的图像输出。\n[0051] 优选地,在切屏动画操作中取消切屏动画的抗锯齿和位图过滤效果。通过该优选实施例,避免了颜色的混合。本实施例中训练图像的实质是通过颜色来定位,如果在三维动画的绘制过程中,不仅对每个像素点作了三维的投影运算,还对颜色进行了混合处理的话,绘制画面的颜色也就失去了定位的能力,也就是说,经过混合处理后的颜色值不能确定目标帧的每一个像素的来源。\n[0052] 优选地,采用32位真彩色设置颜色值。采用现有的规则来定义颜色,减少了研发成本。\n[0053] 根据本发明的实施例,还提供了一种移动终端,图3是根据本发明实施例的移动终端的结构框图,该移动终端包括:设置模块32,生成模块34和切屏动画模块36,下面对上述结构进行详细描述:\n[0054] 设置模块32,用于设置第一训练图和第二训练图的所有像素点的颜色值,其中,颜色值两两不相同;生成模块34,连接至设置模块32,用于根据切屏动画的每一帧的变换规则将设置模块32设置的第一训练图和第二训练图中所有像素点的颜色值生成训练序列;\n以及切屏动画模块36,用于根据生成模块34生成的训练序列对当前画面和下一画面进行切屏动画。\n[0055] 图4是根据本发明实施例的移动终端的优选的结构框图,如图4所示,该移动终端还包括处理模块42,设置模块32包括:第一设置子模块322和第二设置子模块324;生成模块34包括:保存子模块342和合并子模块344;切屏动画模块36包括:第一读取子模块\n362,确定子模块364、第二读取子模块366和输出子模块368,下面对上述结构进行详细描述:\n[0056] 第一设置子模块322,用于通过以下公式设置第一训练图的所有像素点的颜色值:\ninputFrame1[0]=1,inputFrame1[i]=i+1;其中,inputFrame1[i]表示第一训练图的第i个像素点的颜色值,0≤i≤width*height-1,width是第一训练图的宽度,height是第一训练图的高度;第二设置子模块324,用于通过以下公式设置第二训练图的所有像素点的颜色值:inputFrame12[0]=width*height+1,inputFrame2[i]=i width*height+i+1;其中,inputFrame2[i]表示第二训练图的第i个像素点的颜色值,0≤i≤width*height-1,width是第二训练图的宽度,height是第二训练图的高度。\n[0057] 生成模块34包括:保存子模块342,连接至第一设置子模块322和第二设置子模块324,用于根据切屏动画的每一帧的变换规则分别将第一训练图和第二训练图对应像素的颜色值保存至队列;合并子模块344,连接至保存子模块342,用于将保存子模块342,保存的队列合并生成训练序列。\n[0058] 切屏动画模块36包括:第一读取子模块362,连接至合并子模块344,用于读取合并子模块344中合并的训练序列中的数据,其中数据为第一训练图或第二训练图的像素的颜色值;确定子模块364,连接至第一读取子模块362,用于确定第一读取子模块362读取的数据在第一训练图或第二训练图的像素对应的位置;第二读取子模块366,连接至确定子模块364,用于在第一训练图或第二训练图中读取确定子模块364确定的位置对应的颜色值并输出对应像素的颜色值,输出子模块368,连接至第二读取子模块366,用于将第二读取子模块366读取的颜色值输出。\n[0059] 处理模块42,连接至切屏动画模块36,用于在切屏动画操作中取消切屏动画的抗锯齿和位图过滤效果。\n[0060] 实施例一\n[0061] 本实施例综合了上述实施例及其中的优选实施方式,在本实施例中提供了一种三维动画渲染方法,该方法包括训练流程(过程)和绘制流程(过程),由帧保存队列衔接起来。图5是根据本发明实施例的三维动画渲染流程图,如图5所示:\n[0062] 训练流程是通过两幅特殊的图对三维切屏动画绘制引擎进行训练,具体的训练方法如下:\n[0063] 步骤S501:生成训练图片。\n[0064] 优选地,在步骤S501中,生成训练图片的具体方法如下:设置训练图1的第一个像素的颜色值为1,其余像素的颜色值为前一个像素颜色值加1;训练图2的第一个像素的颜色值为训练图1最后一个像素的颜色值加1,其余像素的颜色值为前一个像素颜色值加1。\n如此设置“训练图1”和“训练图2”是为了使得“训练图1”和“训练图2”的每个像素点的颜色值各不相同,且通过颜色值能够计算出这个像素点在“训练图1”或“训练图2”中的位置,达到了定位的效果。\n[0065] 步骤S502:绘制训练动画每一帧。\n[0066] 步骤S503:把训练动画的输出帧保存到帧保存队列中。\n[0067] 步骤S504:判断训练动画是否结束,如果判断结果为“是”,执行步骤S505,如果判断结果为“否”,执行步骤S502。\n[0068] 动画渲染流程就是具体的绘制过程,通过解析帧保存队列中的数据完成绘制,绘制过程需要输入实际的两幅画面(假设为“输入图1”和“输入图2”),具体方法如下:\n[0069] 步骤S506:读取帧保存队列中的数据并解析。\n[0070] 优选地,步骤S506中“读取帧保存队列中的数据并解析”指的是根据帧保存队列中的每一帧每个像素的颜色值计算这个像素的源位置是来源于“训练图1”还是“训练图\n2”,以及在“训练图1”或“训练图2”中的具体位置。\n[0071] 步骤S507:根据解析结果绘制动画的每一帧。\n[0072] 优选地,“根据解析结果绘制动画的每一帧”指的是如果像素来源于“训练图1”的某个位置的像素,则读取“输入图1”的相同位置像素的颜色值;反之,如果像素来源于“训练图2”的某个位置的像素,则读取“输入图2”的相同位置像素的颜色值。\n[0073] 步骤S508:显示该帧。\n[0074] 步骤S509:判断动画是否结束,如果判断结果为“是”,执行步骤S510,如果判断结果为“否”,执行步骤S506。\n[0075] 与现有技术相比,本发明的方法能够优化现有的三维切屏动画,使得三维切屏动画在相同手机上运行的流畅程度更好。\n[0076] 需要说明的是,采用三维切屏动画的实现方法分为训练流程和实际渲染流程,且训练流程是渲染流程的前提。\n[0077] 通过本优选实施例,通过颜色进行定位,因为三维渲染的大量计算来自对三维空间中每一个点投影位置的计算,对颜色定位保存两幅图片的投影位置,使得三维渲染时不需要对投影位置进行重复计算,从而大大节省了三维渲染的时间,提高了三维动画的流畅程度。\n[0078] 实施例二\n[0079] 本实施例提供了一种切屏动画实现过程中训练流程的实现方法,图6是根据本发明实施例的训练过程的流程图。在本实施例中,训练流程通过输入“训练图1”和“训练图\n2”进行绘制的训练,得到一系列的“训练帧”,保存在帧队列中,其具体实现步骤如下:\n[0080] 步骤S601:定义“训练图1”、“训练图2”和输出缓冲区的指针分别为:\ninputFrame1、inputFrame2、outputFrame,并生成训练序列。\n[0081] 步骤S602:为上述缓冲区分配内存空间,并初始化inputFrame1和inputFrame2。\n[0082] 优选地,步骤S602中初始化inputFrame1和inputFrame2,可以定义缓冲区为usigned long格式,因为每个像素的色彩值采用32位的格式,其中四个字节分别表示:\nalpha,red,green,blue。如下定义inputFrame1指向的缓冲区中的内容:inputFrame1[0]=1,inputFrame 1[1] = 2, ……,inputFrame1[width*height-1] = width*height。\n如下定义inputFrame2指向的缓冲区中的内容:inputFrame2[0]=width*height+1,inputFrame2[1] = width*height+2, ……,inputFrame2[width*height-1] =\n2*width*height。其中width是图的宽度,height是图的高度。\n[0083] 步骤S603:初始化立方体旋转动画类:AnimationCube*pAniCube=new AnimationCube。\n[0084] 步骤S604:设置总帧数:pAniCube->SetTotalFrames(frameNumber)。\n[0085] 步骤S605:关闭动画的抗锯齿和位图过滤效果。\n[0086] 需要说明的是,步骤S605采用关闭动画的抗锯齿和位图过滤效果的操作,这样做的目的是避免颜色的混合。训练的实质实际上是通过颜色来定位,如果在三维动画的绘制过程中,不仅对每个像素点作了三维的投影运算,还对颜色进行了混合处理的话,绘制画面的颜色也就失去了定位的能力,也就是说,经过混合处理后的颜色值不能告诉我们目标帧的每一个像素的来源。\n[0087] 步骤S606:设置动画的色彩方案为32位真彩色。\n[0088] 步骤S607:设置动画的输入为inputFrame1和inputFrame2,绘制训练动画的每一帧。\n[0089] 步骤S608:开始动画,训练帧保存在outputFrame中,再将outputFrame中的内容保存到帧队列中\n[0090] 步骤S609:判断动画是否结束,如果判断结果为“是”执行步骤S610,否则,执行步骤S607。\n[0091] 实施例三\n[0092] 本实施例提供了一种切屏动画实现过程中绘制流程的实现方法,图7是根据本发明实施例的绘制过程的流程图。在本实施例中,图7是绘制流程的详细流程图。绘制过程利用帧队列中的“训练帧”完成,绘制流程包括定位和拷贝过程。为了方便描述整个流程,在本实施例中,设innerFrame为帧队列中的一帧,inputFrame1为“输入图1”的指针,inputFrame2为“输入图2”的指针,outputFrame为输出缓冲区地址。其具体步骤包括:\n[0093] 步骤S701:读取帧保存队列中的一帧,将其帧缓冲区的地址传给innerFrame(帧队列)。\n[0094] 步骤S702:设置索引i=0。\n[0095] 步骤S703:读取其i位置处的颜色值:color=innerFrame[i]。\n[0096] 步骤S704:根据颜色值判断这个像素的源位置,即判断color是否大于width(宽)*height(高):如果color小于等于width*height,则这个像素属于“训练图\n1”,执行步骤S705;否则这个像素属于“训练图2”,执行步骤S706。\n[0097] 步骤S705:把“输入图1”中相应位置的颜色拷贝到输出缓冲区:outputFrame[i]=inputFrame1[color-1]。\n[0098] 步骤S706:把“输入图2”中相应位置的颜色拷贝到输出缓冲区:outputFrame[i]=inputFrame2[color-width*height-1]。\n[0099] 步骤S707:判断i是否小于width*height,如果判断结果为“是”,执行步骤S708,否则,执行步骤S709。\n[0100] 步骤S708:i加1。\n[0101] 步骤S709:判断该训练帧是否为帧保存队列的最后一帧,如果判断结果为“是”,执行步骤S710,否则执行步骤S701。\n[0102] 步骤S710,结束。\n[0103] 通过上述实施例,通过对三维动画绘制进行训练,并保存训练的结果,利用训练的结果对三维切屏动画提供加速,使得完成同样流畅程度的三维切屏动画所需的计算量大大减少,提高了动画的流程程度,提高了用户体验。\n[0104] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。\n[0105] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2014-04-30
- 2012-06-06
实质审查的生效
IPC(主分类): G06F 9/44
专利申请号: 201010267563.9
申请日: 2010.08.25
- 2010-12-29
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-05-27
|
2008-11-11
| | |
2
| |
2010-07-28
|
2010-01-27
| | |
3
| |
2005-10-12
|
2005-04-05
| | |
4
| | 暂无 |
2001-09-14
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |