一种动画渲染方法、系统及动画播放器的制作方法

文档序号:6368979阅读:193来源:国知局
专利名称:一种动画渲染方法、系统及动画播放器的制作方法
技术领域
本发明属于图像处理技术领域,尤其涉及一种可对立体动画进行渲染的动画渲染方法、系统及动画播放器。
背景技术
立体动画是近年来随着计算机软硬件技术的发展而产生的一新兴技术,其是建立在计算机科学、数学、物理、人工智能等基础上的综合学科。近年兴起的应用iPhone操作系统、Adroid操作系统等的智能平台中,也都应用了立体动画显示效果。对于应用了立体动画显示的游戏或其它立体显示界面而言,为了增加画面的感染力和真实感,需要对立体动画进行实时渲染,而如何在智能平台中更有效率、更方便的控制 实时动画渲染是一技术瓶颈。若采用现有技术提供的动画渲染方法实现对智能平台中的立体动画实时渲染,则随着上层应用需求的增加,在满足对立体动画实时渲染控制的同时,还要满足设计效果,因而增加了立体动画的逻辑复杂性,降低了立体动画的可扩充性和可维护性。在本背景技术本部分所公开的上述信息仅仅用于增加对本发明背景技术的理解,因此其可能包括不构成对该国的本领域普通技术人员已知的现有技术。

发明内容
本发明实施例的目的在于提供一种动画渲染方法,旨在解决应用现有技术提供的动画渲染方法实现对智能平台中的立体动画实时渲染时,增加了立体动画的逻辑复杂性,降低了立体动画的可扩充性和可维护性的问题。本发明实施例是这样实现的,一种动画渲染方法,所述方法包括以下步骤预定义待渲染动画的多个状态,将预定义的所述多个状态中的源状态、相应的目标状态和触发事件作为关联信息存储;预定义所述多个状态中每一状态在扭曲时间轴下的状态渲染属性;在作为所述源状态的当前状态下,根据触发事件和存储的所述关联信息将所述当前状态切换到所述当前状态对应的目标状态;根据所述待渲染动画的当前状态与所述当前状态在扭曲时间轴下的状态渲染属性对所述待渲染动画进行渲染。本发明实施例的另一目的在于提供一种动画渲染系统,所述系统包括设置模块,用于预定义待渲染动画的多个状态,并设置每一状态在扭曲时间轴下的的状态渲染属性;存储模块,用于将所述设置模块预定义的所述多个状态中的源状态、相应的目标状态和触发事件作为关联信息存储;切换模块,用于在作为所述源状态的当前状态下,根据触发事件和所述存储模块存储的所述关联信息将所述当前状态切换到作为所述当前状态对应的目标状态;
渲染模块,用于根据所述待渲染动画的当前状态与所述当前状态在扭曲时间轴下的状态渲染属性对所述待渲染动画进行渲染。本发明实施例的另一目的在于提供一种动画播放器,包括一动画渲染系统,所述动画渲染系统是如上所述的动画渲染系统,并采用如上所述的动画渲染方法对待渲染动画进行渲染。本发明实施例提供的动画渲染方法和系统是基于有限状态机理论,通过预定义待渲染动画的多个状态及相应的状态渲染属性,由事件的触发实现不同状态之间的转换,其简化了对动画渲染的控制框架,计算量小,且结构清晰、逻辑关系简单明确,具有很高的操作性,易维护,易扩充,且在智能平台上简洁了上层控制逻辑,对于从3DS、MD2转换过来的模型动画,都可由此控制框架控制,具有一般性。


图I是本发明提供的动画渲染方法实施例的流程图; 图2是图I中,开始状态、运行状态、结束状态、挂起状态、恢复状态和重启状态的状态迁移图;图3是本发明提供的动画渲染系统提供的实施例的结构图; 图4是图3中切换模块的结构图;图5是图3中渲染模块的结构图。
具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。针对现有技术存在的问题,本发明实施例提供的动画渲染方法通过预定义待渲染动画的多个状态及其在扭曲时间轴下的相应状态渲染属性,由事件的触发实现不同状态之间的转换。图I示出了本发明提供的动画渲染方法实施例的流程。在步骤SlOl中,预定义待渲染动画的多个状态,将预定义的多个状态中的源状态、相应的目标状态和触发事件作为关联信息存储。该触发事件是指触发相应源状态向相应目标状态进行转换的事件。在步骤S102中,预定义多个状态中每一状态在扭曲时间轴下的状态渲染属性。该状态渲染属性是指为了实现待渲染动画显示预定渲染效果所需的各种属性,如待渲染动画绘制的焦点、方向、位置、大小、旋转等动画状态属性。在步骤S103中,在作为源状态的当前状态下,根据触发事件和存储的关联信息将当前状态切换到该当前状态对应的目标状态,切换后,下一状态即为待渲染动画的当前状态。步骤S104 :根据待渲染动画的当前状态与当前状态在扭曲时间轴下的状态渲染属性对待渲染动画进行渲染。本发明实施例提供的动画渲染方法是基于有限状态机理论,通过预定义待渲染动画的多个状态及相应的状态渲染属性,由事件的触发实现不同状态之间的转换,其简化了对动画渲染的控制框架,计算量小,且结构清晰、逻辑关系简单明确,具有很高的操作性,易维护,易扩充,且在智能平台上简洁了上层控制逻辑,对于从3DS、MD2转换过来的模型动画,都可由此控制框架控制,具有较强适应性。举例来说,假设预定义的多个状态包括开始状态Start、运行状态Running、结束状态End、挂起状态Suspend、恢复状态Resume、重启状态Restart,其相互之间的状态迁移如图2所示。其中的箭头起始状态即为源状态,箭头终止状态即为目标状态,可以看出,当源状态是开始状态时,相应的目标状态是运行状态或挂起状态;当源状态是运行状态时,相应的目标状态是结束状态或者挂起状态;当源状态是结束状态时,相应的目标状态是重启状态;当源状态是重启状态时,相应的目标状态是开始状态;当源状态是挂起状态时,相应的目标状态是恢复状态;当源状态是恢复状态时,相应的目标状态是运行状态,从而形成如下若干种迁移序列开始状态->运行状态-> 结束状态->重启状态-> 开始状态;开始状态->挂起状态->恢复状态->运行状态->结束状态->重启状态->开始状态;开始状态->运行状态->挂起状态->恢复状态->运行状态->重启状态->开始状态。当然,实际中,多个状态还可包括其它各种自定义状态。为了提高控制逻辑的简洁性,本发明实施例中,根据触发事件和存储的关联信息将当前状态切换到该当前状态对应的目标状态的步骤又可包括以下步骤接收用户输入或者系统发出的的用于切换下一状态的切换信号;根据接收到的切换信号,判断切换信号相应的下一状态与当前状态是否满足预存的约束条件,是则发出触发事件,将当前状态切换到作为与该当前状态、切换信号相关联的目标状态,否则保持当前状态。其中的约束条件可以包括并不限于是切换信号相应的下一状态与当前状态不相同;若当前状态是开始状态,则切换信号相应的下一状态不为恢复状态;若当前状态是结束状态,则切换信号相应的下一状态为重启状态。通过设定约束条件,大大降低了各状态之间切换的复杂性,提高了逻辑控制的简洁性,避免了潜在缺陷或漏洞的发生。本发明实施例中,待渲染动画又包括帧动画和时间控制动画,当待渲染动画为帧动画时,在动画运行状态下,不同巾贞的动画具有不同的显示属性;当动画为时间控制动画时,在动画运行状态下,不同的时间或时间段调用具有不同显示属性的动画,以实现动画显示。该显示属性是指动画在显示界面的显示位置、显示区域等显示属性,还可以包括状态渲染属性。本发明实施例中,若假设当前帧渲染所在的实际时间为Now,上次帧渲染的实际时间为LastNow,扭曲时间轴的扭曲时间为LocalTime,动画的起始时间为StartTime,动画的飞行时间为TimeForWay,时间扭曲系数为Radio,则时间扭曲函数可以表示为Radio =Radio + (Now-LastNow) /TimeForffay, JeL LocalTime = StartTime+TimeForWay*Radio。此时,进一步地,步骤S104又可以包括以下步骤根据扭曲时间轴的扭曲时间LocalTime,控制待渲染动画的运行状态;根据待渲染动画的每次渲染,更新扭曲时间轴的 扭曲时间LocalTime ;若待渲染动画在运行状态时间段内,根据当前状态在扭曲时间轴下的状态渲染属性,得到一扭曲时间下待渲染动画在显示界面的状态属性;根据得到的相对时间下动画在显示界面的状态属性,不断调用具有相应显示属性的动画帧,以进行动画特效显示渲染。
为了便于理解动画特效显示的步骤,下面以动画在运行状态下进行往返飞行和震荡衰减运行为例进行说明假设预设的动画运行状态时间段是从2012年2月21日12点整始到2012年2月21日12点10分止,则在调用的当前实际时间是2012年2月21日11点59分时,动画保持当前状态而未进入运行状态;在调用的当前实际时间是2012年2月21日12点10分时,发出触发事件,动画从运行状态映射入下一状态;在调用的当前实际时间是介于2012年2月21日12点整到2012年2月21日12点10分之间时,动画处于运行状态下。在扭曲时间轴下,由于扭曲时间收到帧间隔的控制,其状态机状态刚好受到动画播放的帧状态控制。当动画在运行状态下进行往返飞行时,假设动画的起始时间StartTime为0,飞行时间TimeForWay为2000毫秒,调用动画帧的当前实际时间Now为0,上次调用动画帧的实际时间LastNow为0,并设置时间扭曲系数Radio,该时间扭曲系数Radio介于0. 0与I. 0闭 区间里,0. 0代表动画在运行状态下刚开始运行,I. 0代表动画在运行状态下运行结束。当设置时间扭曲系数Radio小于1.0时,时间扭曲函数为Radio = Radio+ (Now-LastNow) /TimeForWay,则计算相对时间 LocalTime = StartTime+TimeForWay*Radio,之后以相对时间为基准,不断调用不同相对时间下具有相应显示属性的动画。在此期间,随着动画的多次调用,时间扭曲系数Radio会渐渐从0. 0增大到I. 0,当时间扭曲系数Radio大于或等于
I.0时,时间扭曲函数变为Radio = Radio-(Now-LastNow)/TimeForWay,使得时间扭曲系数Radio会渐渐从I. 0减少到0. 0,则相对时间Local Time会先慢慢增大到结束时间,然后再慢慢减少到开始时间,之后同样以相对时间为基准,不断调用不同相对时间下具有相应显示属性的动画,从而改变了动画根据相对时间的运行状态。虽然外部的实际时间会越来越多,但由于动画是以相对时间为基准,则动画内部的运行时间一直为0到2000毫秒。当动画在运行状态下进行震荡衰减运行时,假设动画的起始时间StartTime为0,飞行时间TimeForffay为2000毫秒,调用的动画的当前实际时间Now为0,上次调用动画中贞的实际时间LastNow为0,运行起始点坐标startPosition为(0,0,0),运行终点坐标endPostion为(X,0,0),并设置时间扭曲系数Radio,该时间扭曲系数Radio介于0. 0与I. 0闭区间里,0. 0代表动画在运行状态下刚开始运行,I. 0代表动画在运行状态下运行结束。此时,时间扭曲函数为Radio = Radio+(Now-LastNow)/TimeForWay。之后计算不同时间下动画在显示界面的位置属性CurrentPostion,表示为PRadio = ((I-Radio) * (I-Radio)) *sin(Radio氺PI氺Cycle) ;CurrentPostion = startPosition+(endPostion-startPostion) *PRadio ;其中,Cycle为预设的震荡衰减次数,PI为预设的圆周率常数,且优选地,Cycle为5,且PI为3. 1415926。之后不断调用不同时间下具有相应显示属性的动画,并将调用的动画显示在显示界面的相应位置,从而形成了动画的震荡衰减显示。图3示出了本发明实施例提供的动画渲染系统的结构,为了便于说明,仅示出了与本发明实施例相关的部分。本发明实施例提供的动画渲染系统包括设置模块11,用于预定义待渲染动画的多个状态,并设置每一状态在扭曲时间轴下的状态渲染属性;存储模块12,用于将设置模块11预定义的多个状态中的源状态、相应的目标状态和触发事件作为关联信息存储;切换模块13,用于在作为源状态的当前状态下,根据触发事件和存储模块12存储的关联信息将当前状态切换到作为该当前状态对应的目标状态,切换后,下一状态即为待渲染动画的当前状态;渲染模块14,用于根据所述待渲染动画的当前状态与设置模块11设置的、当前状态在扭曲时间轴下的状态渲染属性对待渲染动画进行渲染。为了提高控制逻辑的简洁性,如图4所示,切换模块13又可包括接收模块131,用于接收用户输入或者系统发出的用于切换下一状态的切换信号;判断模块132,用于根据接收模块131接收到的切换信号,判断切换信号相应的下一状态与当前状态是否满足预存的约束条件;状态转换模块133,用于当判断模块132判断切换信号相应的下一状态与当前状态满足预存的约束条件时发出触发事件,将当前状态切换到作为与该当前状态、切换信号相关联的目标状态的下一状态。本发明实施例中,如图5所示,渲染模块14又可包括扭曲系数计算模块141,用于根据公式Radio = Radio± (Now-LastNow)/TimeForWay 计算时间扭曲系数 Radio,其中,Now为当前帧渲染所在的实际时间,LastNow为上次帧渲染的实际时间,TimeForffay为动画的飞行时间;扭曲时间计算模块142,用于根据扭曲系数计算模块141计算得到的时间扭曲系数Radio计算扭曲时间轴的扭曲时间LocalTime,表示为LocalTime =StartTime+TimeForWay*Radio,其中,StartTime为动画的起始时间;状态切换模块143,用 于根据扭曲时间计算模块142计算得到的扭曲时间轴的扭曲时间LocalTime,以及设置模块11设置的、当前状态在扭曲时间轴下的状态渲染属性控制待渲染动画的渲染状态。本发明实施例还提供了一种动画播放器,包括一如上所述的动画渲染系统,并采用如上所述的动画渲染方法对待渲染动画进行渲染。本发明实施例提供的动画渲染方法和系统是基于有限状态机理论,通过预定义待渲染动画的多个状态及相应的状态渲染属性,由事件的触发实现不同状态之间的转换,其简化了对动画渲染的控制框架,计算量小,且结构清晰、逻辑关系简单明确,具有很高的操作性,易维护,易扩充,且在智能平台上简洁了上层控制逻辑,对于从3DS、MD2转换过来的模型动画,都可由此控制框架控制,具有一般性。再有,本发明实施例提供的动画渲染方法和系统在对时间控制动画进行渲染时,还可利用时间扭曲函数将绝对时间转换成内部相对时间,并根据相对时间实现动画的特效显示。另外,本发明实施例提供的动画渲染方法和系统还对多个状态的转换设置了约束条件,在满足约束条件下时才进行状态转换,,降低了各状态之间切换的复杂性,提高了逻辑控制的简洁性,避免了潜在缺陷或漏洞的发生。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来控制相关的硬件完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如R0M/RAM、磁盘、光盘等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种动画渲染方法,其特征在于,所述方法包括以下步骤 预定义待渲染动画的多个状态,将预定义的所述多个状态中的源状态、相应的目标状态和触发事件作为关联信息存储; 预定义所述多个状态中每一状态在扭曲时间轴下的状态渲染属性; 在作为所述源状态的当前状态下,根据触发事件和存储的所述关联信息将所述当前状态切换到所述当前状态对应的目标状态; 根据所述待渲染动画的当前状态与所述当前状态在扭曲时间轴下的状态渲染属性对所述待渲染动画进行渲染。
2.如权利要求I所述的动画渲染方法,其特征在于,所述根据触发事件和存储的所述关联信息将所述当前状态切换到所述当前状态对应的目标状态的步骤又包括以下步骤 接收用户输入或者系统发出的的用于切换下一状态的切换信号; 根据接收到的所述切换信号,判断所述切换信号相应的下一状态与所述当前状态是否满足预存的约束条件; 当判断所述切换信号相应的下一状态与所述当前状态满足预存的约束条件时发出触发事件,将所述当前状态切换到作为与所述当前状态、切换信号相关联的目标状态。
3.如权利要求I所述的动画渲染方法,其特征在于,所述多个状态包括开始状态、运行状态、结束状态、挂起状态、恢复状态和重启状态; 当所述源状态是所述开始状态时,所述相应的目标状态是所述运行状态或所述挂起状态;当所述源状态是所述运行状态时,所述相应的目标状态是所述结束状态或者挂起状态;当所述源状态是结束状态时,所述相应的目标状态是所述重启状态;当所述源状态是所述重启状态时,所述相应的目标状态是所述开始状态;当所述源状态是所述挂起状态时,所述相应的目标状态是所述恢复状态;当所述源状态是恢复状态时,所述相应的目标状态是所述运行状态。
4.如权利要求I所述的动画渲染方法,其特征在于,所述状态渲染属性为包括焦点、方向、位置、大小、旋转的动画状态属性;若所述当前帧渲染所在的实际时间为Now,上次帧渲染的实际时间为LastNow,所述扭曲时间轴的扭曲时间为LocalTime,动画的起始时间为StartTime,所述动画的飞行时间为TimeForWay,时间扭曲系数为Radio,则时间扭曲函数为Radio = Radio + (Now-LastNow) /TimeForffay,且 LocalTime =StartTime+T imeForWay*Radio。
5.如权利要求4所述的动画渲染方法,其特征在于,所述根据所述待渲染动画的当前状态与所述当前状态在扭曲时间轴下的状态渲染属性对所述待渲染动画进行渲染的步骤,具体又包括以下步骤 根据所述扭曲时间轴的扭曲时间LocalTime,控制所述待渲染动画的运行状态; 根据所述待渲染动画的每次渲染,更新所述扭曲时间轴的扭曲时间LocalTime ; 若所述待渲染动画在运行状态时间段内,根据所述当前状态在扭曲时间轴下的状态渲染属性,得到一扭曲时间下待渲染动画在显示界面的状态属性; 根据得到的相对时间下动画在显示界面的状态属性,不断调用具有相应显示属性的动画帧,以进行动画特效显示渲染。
6.如权利要求4所述的动画渲染方法,其特征在于,所述待渲染动画在所述运行状态时间段内进行往返飞行,则设置当所述时间扭曲系数Radio小于I. O时,所述时间扭曲函数为Radio = Radio+ (Now-LastNow) /TimeForffay ;当所述时间扭曲系数Radio大于或等于I. 0 时,所述时间扭曲函数为Radio = Radio-(Now-LastNow)/TimeForffay0
7.如权利要求4所述的动画渲染方法,其特征在于,所述待渲染动画在所述运行状态时间段内进行震荡衰减运行,则时间扭曲函数为Radio = Radio+(Now-LastNow)/TimeForffay,且 Radio G

8.如权利要求7所述的动画渲染方法,其特征在于,所述状态渲染属性中的位置属性为CurrentPostion = startPosition+(endPostion-startPostion)*PRadio,其中,endPostion为运行终点坐标,startPosition为运行起始点坐标;PRadio 满足PRadio = ((I-Radio) * (1-Radio)) *sin (Radio*PI*Cycle),其中,Cycle为预设的震荡衰减次数,PI为预设的圆周率常数。
9.一种动画渲染系统,其特征在于,所述系统包括 设置模块,用于预定义待渲染动画的多个状态,并设置每一状态在扭曲时间轴下的状态渲染属性; 存储模块,用于将所述设置模块预定义的所述多个状态中的源状态、相应的目标状态和触发事件作为关联信息存储; 切换模块,用于在作为所述源状态的当前状态下,根据触发事件和所述存储模块存储的所述关联信息将所述当前状态切换到作为所述当前状态对应的目标状态; 渲染模块,用于根据所述待渲染动画的当前状态与所述设置模块设置的、当前状态在扭曲时间轴下的状态渲染属性对所述待渲染动画进行渲染。
10.如权利要求9所述的动画渲染系统,其特征在于,所述切换模块又包括 接收模块,用于接收用户输入或者系统发出的用于切换下一状态的切换信号; 判断模块,用于根据所述接收模块接收到的所述切换信号,判断所述切换信号相应的下一状态与所述当前状态是否满足预存的约束条件; 状态转换模块,用于当所述判断模块判断所述切换信号相应的下一状态与所述当前状态满足预存的约束条件时发出触发事件,将所述当前状态切换到作为与所述当前状态、切换信号相关联的目标状态。
11.如权利要求9所述的动画渲染系统,其特征在于,所述渲染模块又包括 扭曲系数计算模块,用于根据公式Radio = Radio土(Now-LastNow)/TimeForWay计算时间扭曲系数Radio,其中,Now为所述当前帧渲染所在的实际时间,LastNow为上次帧渲染的实际时间,TimeForffay为所述动画的飞行时间; 扭曲时间计算模块,用于根据扭曲系数计算模块计算得到的时间扭曲系数Radio计算扭曲时间轴的扭曲时间 LocalTime,表不为LocalTime = StartTime+TimeForffay*Radio,其中,StartTime为动画的起始时间; 状态切换模块,用于根据扭曲时间计算模块计算得到的扭曲时间轴的扭曲时间LocalTime,控制待渲染动画的渲染状态。
12.—种动画播放器,包括一动画渲染系统,其特征在于,所述动画渲染系统是如权利要求9至11任一项所述的动画渲染系统,并采用如权利要求I至8任一项所述的动画渲染方法对待渲染动画进行渲染。
全文摘要
本发明于图像处理技术领域,提供了一种可对立体动画进行渲染的动画渲染方法、系统及动画播放器。方法包括预定义待渲染动画的多个状态、每一状态在扭曲时间轴下的状态渲染属性;将多个状态中的源状态、目标状态和触发事件作为关联信息存储;在作为源状态的当前状态下,根据触发事件和存储的关联信息将当前状态切换到作为当前状态相应的目标状态;根据当前状态与当前状态在扭曲时间轴下的状态渲染属性对待渲染动画进行渲染。该方法和系统是基于有限状态机理论,通过预定义待渲染动画的多个状态及相应的渲染属性,由事件的触发实现不同状态之间的转换,其简化了对动画渲染的控制框架,计算量小,且结构清晰、逻辑关系简单明确,具有很高的操作性。
文档编号G06T13/00GK102682461SQ20121013373
公开日2012年9月19日 申请日期2012年4月28日 优先权日2012年4月28日
发明者卢伟超, 张颖, 赵智宝 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1