专利名称:一种动画制作方法、装置和动画播放方法、装置的制作方法
技术领域:
本发明涉及电脑动画领域,尤其涉及一种动画制作方法、装置和动画播放方法、装置。
背景技术:
动画产业在最近的几年进入了一条快速发展的轨道,动画制作产量迅猛上升,而 大量的动画制作工具也应运而生。抛开相对复杂的3D动画制作,在相对简单的2D动画制 作中,虽然有大量不同的制作、播放工具,但动画制作、播放的基本原理相同将一个或多个 编辑好的图片编入一个文件,并设置好每个图片之间的播放时间间隔,然后以每个图片作 为单独的一帧进行播放,达到2D动画的效果。发明人在实施本发明的过程中发现,现有的动画制作技术存在明显的缺点首先,现有的动画制作工具对动画图片的利用率较低,例如在相同背景下的动画, 每一帧都必须添加该背景信息,造成该背景信息的浪费;其次,现有的动画制作工具不支持 对动画包围盒的计算,不利于动画的后期合成制作。
发明内容
本发明提供一种动画制作方法、装置和动画播放方法、装置,可以提高对动画图片 的利用率,减少动画制作过程中的工作量,同时支持对动画包围盒的计算,便于动画的后期 制作。为达到上述技术效果,本发明提供的动画制作方法包括确定动画单元的关键帧;所述动画单元在播放过程中,出现非线性变化时所在的 帧为所述动画单元的关键帧;设置所述动画单元的关键帧数据;所述关键帧数据中记录该动画单元在所述关键 帧的参数。优选的,所述动画单元在播放过程中,进行线性变化时所在的帧为所述动画单元 的过渡帧;动画单元的过渡帧数据中记录该动画单元在所述过渡帧的参数;所述过渡帧数 据在所述动画单元播放过程中,根据该动画单元的过渡帧数据实时计算得出。优选的,所述动画单元包括图元和\或骨骼;所述关键帧和过渡帧的参数包括动 画单元在当前帧的水平位置参数、垂直位置参数、旋转角度参数、缩放比例参数。对应的,本发明提供的动画播放方法包括在当前帧遍历动画的所有动画单元;获取各动画单元在当前帧的关键帧数据;若动画单元在当前帧不存在关键帧数 据,则根据所述动画单元在其它帧的关键帧数据,计算该动画单元在当前帧的过渡帧数 据;在当前根据各动画单元的关键帧数据或过渡帧数据进行变换更新。优选的,动画单元在播放过程中,出现非线性变化时所在的帧为所述动画单元的
5关键帧;所述关键帧数据中记录该动画单元在所述关键帧的参数;所述关键帧的参数在动 画制作过程中进行设置;所述动画单元的过渡帧数据中记录该动画单元在所述过渡帧的参 数;所述过渡帧数据在所述动画单元播放过程中,根据该动画单元的过渡帧数据实时计算 得出;所述关键帧和过渡帧的参数包括动画单元在当前帧的水平位置参数、垂直位置参 数、旋转角度参数、缩放比例参数。优选的,所述动画单元包括图元和\或骨骼;所述在当前帧遍历动画的所有动画 单元包括当所述动画单元为图元时,反向遍历图元队列;当所述动画单元为骨骼时,依次 遍历骨骼队列。优选的,当动画单元为骨骼和与所述骨骼绑定的图元时,骨骼在当前帧根据该骨 骼的关键帧数据或过渡帧数据进行变换更新后,保存所述骨骼的关键帧数据或过渡帧数 据;与所述骨骼绑定的图元在当前帧根据该图元的关键帧数据或过渡帧数据进行变换更新 后,再根据所述骨骼的关键帧数据或过渡帧数据进行变换更新。优选的,所述在当前帧遍历动画的所有动画单元之后,还包括计算动画在当前帧 的包围盒。优选的,所述计算动画在当前帧的包围盒包括预置包围盒四个顶点的初始化坐标;预置包围盒四个顶点的最小X轴坐标和最小 Y轴为正无穷大、最大X轴坐标和最大Y轴坐标为负无穷大;在当前帧遍历所有动画单元,各动画单元在当前帧根据其关键帧数据或过渡帧数 据进行变换更新;完成遍历后,以当前帧各动画单元中最小X轴坐标、最小Y轴坐标作为包围盒的最 小X轴坐标、最小Y轴坐标;以当前最大X轴坐标、最大Y轴坐标作为包围盒的最大X轴坐 标、最大Y轴坐标;以所述包围盒的最小X轴坐标、最小Y轴坐标、最大X轴坐标、最大Y轴坐标作为 所述包围盒的四个顶点,生成所述动画在当前帧的包围盒。本发明提供的动画制作装置包括动画单元创建模块,用于创建动画单元;所述动画单元包括图元和/或骨骼;动画数据设置模块,用于设置动画单元的关键帧数据;动画单元在播放过程中,出 现非线性变化时所在的帧为所述动画单元的关键帧;所述关键帧数据中记录所述动画单元 在所述关键帧的参数。优选的,所述动画单元在播放过程中,进行线性变化时所在的帧为所述动画单元 的过渡帧;动画单元的过渡帧数据中记录该动画单元在所述过渡帧的参数;所述过渡帧数 据在所述动画单元播放过程中,根据该动画单元的关键帧数据实时计算得出。优选的,所述关键帧和过渡帧的参数包括动画单元在当前帧的水平位置参数、垂 直位置参数、旋转角度参数、缩放比例参数。本发明提供的动画播放装置包括动画播放模块,用于播放动画;动画播放模块在每一帧均遍历所有动画单元,根据 各动画单元在当前帧的关键帧数据或过渡帧数据进行变换更新;过渡帧获取模块,用于动画单元在当前帧不存在关键帧数据时,根据所述动画单 元在其它帧的关键帧数据,计算该动画单元在当前帧的过渡帧数据,并通过所述动画播放模块进行播放。优选的,所述动画播放模块包括动画遍历单元,用于在动画单元创建模块创建的动画单元为图元时,在每一帧均 反向遍历图元队列;在动画单元创建模块创建的动画单元为骨骼时,在每一帧均依次遍历 骨骼队列;帧数据获取单元,用于获取在当前帧各动画单元的关键帧数据;在当前帧动画单 元不存在关键帧数据时,通过过渡帧获取模块获取该动画单元在当前帧的过渡帧数据;动画播放单元,用将各动画单元在当前帧根据其关键帧数据或过渡帧数据变换更 新后进行播放。优选的,所述动画播放模块还包括临时存储单元,用于当动画单元为骨骼和与所述骨骼绑定的图元时,骨骼在当前 帧根据其关键帧数据或过渡帧数据进行变换更新后,保存所述骨骼的关键帧数据或过渡帧 数据;与所述骨骼绑定的图元在当前帧根据该图元的关键帧数据或过渡帧数据进行变 换更新后,再根据所述临时存储单元中存储的所述骨骼的关键帧数据或过渡帧数据进行变 换更新。优选的,所述动画播放装置还包括包围盒计算模块,用于在动画播放过程中,动画播放模块完成对所有动画单元的 遍历更新之后,根据各动画单元的关键帧数据或过渡帧数据,计算动画在当前帧的包围盒。优选的,所述包围盒计算模块包括坐标初始化单元,用于预置包围盒四个顶点的初始化坐标;预置包围盒四个顶点 的最小X轴坐标和最小Y轴为正无穷大,设置包围盒的最大X轴坐标和最大Y轴坐标为负 无穷大;顶点数据获取单元,用于在动画播放模块在当前帧对所有动画单元进行遍历更新 的过程中,获取各动画单元的顶点数据;顶点计算单元,用于将顶点数据获取单元获取的所有动画单元的顶点数据中,以 最小X轴坐标和最小Y轴坐标作为包围盒的最小X轴坐标和最小Y轴坐标;以当前最大X 轴坐标和最大Y轴坐标作为包围盒的最大X轴坐标和最大Y轴坐标;包围盒生成单元,用于以所述顶点计算单元计算得出的包围盒最小X轴坐标、最 小Y轴坐标、最大X轴坐标、最大Y轴坐标作为所述包围盒的四个顶点,生成所述动画在当 前帧的包围盒。本发明提供的动画制作方法、装置和动画播放方法、装置,将一个动画分为多个并 行的动画单元,在每一帧动画图片中,用户只需要针对出现变化的动画单元进行相应的关 键帧数据设置,在播放过程中就可自动生成过渡帧数据,既减少动画制作的工作量,又使动 画帧与帧之间衔接更加流畅、动作更加自然。同时,本发明提供的动画制作方法、装置和动 画播放方法、装置支持对动画当前帧的包围盒计算,便于动画的后期合成制作。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1为本发明提供的动画制作方法实施例流程示意图;图2为本发明提供的动画播放方法实施例流程示意图;图3为本发明提供的动画制作及播放方法第一实施例流程示意图;图4为本发明提供的动画制作及播放方法第二实施例流程示意图;图5为本发明提供的动画制作及播放方法图元变换示意图;图6为本发明提供的动画制作及播放方法动画播放示意图;图7为本发明提供的动画包围盒计算流程示意图;图8为本发明提供的动画制作装置实施例结构示意图;图9为本发明提供的动画播放装置第一实施例结构示意图;图10为本发明提供的动画制作装置及播放装置施例结构示意图;图11为本发明提供的动画播放装置动画播放示意图;图12为本发明提供的动画播放装置第二实施例结构示意图。
具体实施例方式本发明提供一种动画制作方法、装置和动画播放方法、装置,可以提高对动画图片 的利用率,减小动画制作过程中的工作量。在本发明各实施例中,所述动画单元可以是图 元、或骨骼、或两者的结合。所述图元是可编辑的最小图形单位,是用于操作和组织画面的 最基本的元素。一幅画面由一个或多个图元组成。图元是一组简单的、通用的几何图形或 字符。所述骨骼在动画中一般通过改变其朝向和位置来生成动画,动画中通常由若干互相 连接的骨骼构成骨架结构,骨架上一块骨骼的变化将带动其它与之连接的骨骼的变化。参见图1,为本发明提供的动画制作方法实施例流程示意图。如图1所示在步骤100,确定动画单元的关键帧。动画单元在播放过程中,出现非线性变化时 所在的帧为动画单元的关键帧。更为具体的,动画单元在播放过程中,进行线性变化时所在 的帧为动画单元的过渡帧。在步骤101,设置动画单元的关键帧数据;关键帧数据中记录该动画单元在关键 帧的参数。同样的,动画单元的过渡帧数据中记录该动画单元在过渡帧的参数。需要注意 的是过渡帧数据并非在动画制作过程中设置,而是在动画播放过程中,根据该动画单元的 关键帧数据实时计算得出。更为具体的,所述关键帧和过渡帧的参数包括动画单元在当前帧的水平位置参 数、垂直位置参数、旋转角度参数、缩放比例等参数。本发明提供的动画制作方法,将一个动画分为多个并行的动画单元,在每一帧动 画图片中,用户只需要针对出现非线性变化的动画单元进行相应的关键帧数据设置,在播 放过程中就可自动生成过渡帧数据,使动画在播放中帧与帧之间衔接流畅、自然,减少动画 制作的工作量。参见图2,为本发明提供的动画播放方法实施例流程示意图。如图2所示在步骤200,在当前帧遍历动画的所有动画单元。更为具体的,当动画单元为图元
8时,反向遍历图元队列;当动画单元为骨骼时,依次遍历骨骼队列。在步骤201,判断各动画单元在当前帧是否存在关键帧数据,若判断为是,则执行 步骤202 ;若判断为否,则执行步骤203。在步骤202,获取各动画单元在当前帧的关键帧数据。在步骤203,根据动画单元在其它帧的关键帧数据,计算该动画单元在当前帧的过 渡帧数据。更为具体的,根据动画单元在其它帧的关键帧数据,计算该动画单元在当前帧的 过渡帧数据的计算方式包括根据当前帧与关键帧之间间隔的帧数,以及关键帧数据之间 的线性插值、或关键帧数据的平均值、或其它包含关键帧数据的数学函数计算该动画单元 在当前帧的过渡帧数据。在步骤204,在当前根据各动画单元的关键帧数据或过渡帧数据进行变换更新。本发明提供的动画播放方法,在播放过程中可以实时的通过关键帧数据计算动画 单元的过渡帧数据,使动画帧与帧之间衔接更加流畅、动作更加自然。同时,本方法使动画 制作过程中,只需要针对出现非线性变化的动画单元进行相应的关键帧数据设置即可,减 少动画制作的工作量。为了更好的理解本发明提供的动画制作方法、动画播放方法,下面将二者结合在 一起进行描述。参见图3,为本发明提供的动画制作及播放方法第一实施例流程示意图。在本实施 例中,将详细的描述动画制作及播放方法的流程。如图3所示在步骤300,设置动画单元的关键帧数据。在本发明实施例中,动画单元可以是图 元或骨骼。更为具体的,一个动画由一个或多个动画单元组成;在动画的每一帧图片中,用 户只需要针对出现变化的动画单元进行关键帧数据设置;所述关键帧数据中记录动画单元 的在该关键帧的参数,具体包括动画单元的水平位置参数、垂直位置参数、旋转角度参数、 缩放比例等参数。本步骤只在制作动画的流程中执行,播放动画的流程不需要执行本步骤。本实施例以图元为例,现假设需要完成一个包含60帧的动画一指针绕表盘一 周。在本例中,动画由2个图元组成表盘的h图元、指针的i图元,预置好指针与表盘的初 始位置后,h图元和i图元自动生成在第1帧的关键帧数据。由于在整个动画中,只有指针 存在变化,表盘是不动的,所以在设置各图元其后的关键帧数据时,只需设置i图元的关键 帧数据即可。h图元无需改动,因此动画的制作的针对性更强,效率得到提高。因为指针勻速的绕表盘一周,故i图元的第1帧和第60帧为其关键帧。在制作该 动画时,首先设置好各图元的位置后,其第1帧的动画效果如图fe所示,i图元在第一帧的 关键帧数据自动生成,其角度为O度;设置表盘的中心为i图元的中心,i图元在第60帧的 旋转角度为360度,如图W所示。需要说明的是,当动画单元为图元时,该图元的变换可以包括以任一点为中心对 进行旋转、平移、缩放、斜切变换的等。当动画单元为骨骼时,其变换可以包括以骨骼的起 始点为中心对骨骼进行旋转、平移、缩放变换等信息。在步骤301,开始播放动画,在每一帧都遍历动画的所有动画单元,判断所有动画 单元在当前帧是否存在关键帧数据;若存在,则执行步骤302 ;若不存在,则执行步骤303。 优选的,当动画单元为骨骼时,依次遍历骨骼队列;当动画单元为图元时,反向遍历图元队 列。因为当动画单元为图元时,各图元之间可能存在遮挡关系,而动画制作过程中,最底层被遮挡的图元一般排在图元队列末端,所以反向遍历图元队列可以保证动画具有正确的层 次关系。在步骤302,获取在当前帧各动画单元的关键帧数据。在步骤303,根据动画单元在其它帧的关键帧数据,计算该动画单元在当前帧的过 渡帧数据。更为具体的,根据动画单元在其它帧的关键帧数据,计算该动画单元在当前帧的 过渡帧数据的计算方式包括根据当前帧与关键帧之间间隔的帧数,以及关键帧数据之间 的线性插值、或关键帧数据的平均值、或其它包含关键帧数据的数学函数计算该动画单元 在当前帧的过渡帧数据。在本发明实施例中,以通过计算关键帧数据的线性插值获取当前 帧的过渡帧数据为例,但不能以此限定本发明的保护范围。更进一步的,因为动画单元的关键帧与关键帧之间都是线性变化的关系,所以对 于在当前帧没有关键帧数据的动画单元,只要获取其前后关键帧的关键帧数据,及中间间 隔的帧数,就可以通过计算线性插值,得出该动画单元在当前帧的过渡帧数据。在本实施例的举例中,指针勻速的绕表盘一周,i图元在第1帧和第60帧具有关键 帧数据。根据i图元在第1帧和第60帧的关键帧数据,以及间隔的帧数,可以通过计算其 线性插值,得出在第2帧,i图元的过渡帧数据是相对i图元在第1帧的位置,其旋转角度 为6度,其余参数对应变换;i图元在第3帧的过渡帧数据是相对i图元在第1帧的位置, 其旋转角度为12度;其余各帧以此类推。在步骤304,根据各动画单元的关键帧数据或过渡帧数据进行变换更新并显示,所 有动画单元的变换更新组合在一起,形成动画在当前帧的完整图片。在动画的每一帧都执 行步骤301至步骤304,直至动画播放结束。在本实施例的举例中,指针勻速的绕表盘一周的完整动画如图6所示。实施本发明提供的动画制作及播放方法,只需要设置该动画在第一帧的图片,对 于其后的变化,只需要针对出现关键变化的帧设置关键帧数据,在播放过程中就可以自动 生成过渡帧数据,使动画的帧与帧之间衔接更加流畅。同时,本发明提供的动画制作方法可 以将一个动画分为多个并行的动画单元,在每一帧中,只需要针对出现变化的动画单元进 行关键帧数据设置,其它的动画单元则无需改动,增强动画制作的针对性,减少动画制作的 工作量。参见图4,为本发明提供的动画制作及播放方法第二实施例流程示意图,在本发明 实施例中,动画由骨骼和与所述骨骼绑定的图元共同组成,播放该动画的流程如图4所示在步骤400,完成骨骼和图元的关键帧数据设置后,开始播放动画。在步骤401,在每一帧首先遍历动画的所有骨骼,判断各骨骼在当前帧是否存在关 键帧数据;若存在,则执行步骤402 ;若不存在,则执行步骤403。在步骤402,获取在当前帧各骨骼的关键帧数据。在步骤403,根据骨骼在其它帧的关键帧数据计算线性插值,得出该骨骼在当前帧 的过渡帧数据。当然,本实施例中也可以通过其它的数学函数计算骨骼在当前帧的过渡帧 数据,本发明以计算线性插值的方式获取过渡帧数据为例。在步骤404,根据各骨骼的关键帧数据或过渡帧数据进行变换更新。在本发明实施 例中,所述骨骼包括父骨骼和子骨骼。一个父骨骼可以包括多个子骨骼,形成骨架。子骨骼根据父骨骼的变换进行相应的变换。在步骤405,保存各骨骼在当前帧的关键帧数据或过渡帧数据。在步骤406,在当前帧遍历动画的所有图元,判断各图元在当前帧是否存在关键帧 数据;若存在,则执行步骤407 ;若不存在,则执行步骤408。在步骤407,获取在当前帧各图元的关键帧数据。在步骤408,根据图元在其它帧的关键帧数据计算线性插值,得出该图元在当前帧 的过渡帧数据。在步骤409,根据各图元的关键帧数据或过渡帧数据进行变换更新。在步骤410,获取保存的各骨骼在当前帧的关键帧数据或过渡帧数据。在步骤411,各图元根据与自身绑定的骨骼在当前帧的关键帧数据或过渡帧数据, 再次进行变换更新。实施本发明提供的动画制作及播放方法,将图元与骨骼绑定,且骨骼的变换将带 动图元的变化,使动画的制作更加方便,针对性更强,易于实现动画过程中的各种复杂的变 换,且效果更加流畅自然。同时,本发明提供的动画制作及播放方法提高了对动画单元及关 键帧数据的利用率,进一步减少动画制作过程中的工作量。参见图7,为本发明提供的动画包围盒计算流程示意图。动画的包围盒是检测动画 的边界、碰撞等问题的关键,精确的碰撞检测对提高动画的真实性、增强虚拟环境的沉浸感 起着至关重要的作用。本发明提供的动画播放方法在完成遍历更新动画单元后,还支持对 该动画当前帧的包围盒计算。其流程如图7所示在步骤700,预置该动画包围盒四个顶点的初始化坐标。更为具体的,预置包围盒 四个顶点的最小X轴坐标和最小Y轴为正无穷大、最大X轴坐标和最大Y轴坐标为负无穷 大。更进一步的,在动画制作中,一般定义图片的左上角为X轴和Y轴坐标的起始坐 标。在本发明实施例中,预置包围盒左上角的坐标为(+8,+8),右上角的坐标为(_8,+8),左 下角的坐标为(+8,-8),右下角的坐标为(-8,-8)。如此设置的意义在于,在后续步骤中遍 历动画单元时,动画单元的左上角坐标必然小于预置的包围盒左上角坐标,从而利于完成 对包围盒顶点坐标的初次更新替换,包围盒其它三个顶点的坐标预置方式同理。在步骤701,遍历当前帧动画的所有动画单元,各动画单元根据其当前帧的关键帧 数据或过渡帧数据进行变换更新。在步骤702,在各动画单元完成变换更新后,以当前帧各动画单元中最小X轴坐 标、最小Y轴坐标作为包围盒的最小X轴坐标、最小Y轴坐标;以当前最大X轴坐标、最大Y 轴坐标作为包围盒的最大X轴坐标、最大Y轴坐标。更为具体的,在各动画单元完成变换更新后,将当前包围盒的顶点坐标与各动画 单元在当前帧的顶点坐标进行比较、替换,当与所有动画单元比较后,包围盒的四个顶点坐 标分别为左上角的坐标(最小X轴坐标,最小Y轴坐标),右上角的坐标(最大X轴坐标, 最小Y轴坐标),左下角的坐标(最小X轴坐标,最大Y轴坐标),右下角的坐标(最大X轴 坐标,最大Y轴坐标)。在步骤703,根据步骤702中最终确定的包围盒四个顶点坐标,生成该动画在当前 帧的包围盒。
实施本发明实施例提供的动画包围盒计算方法,可以实时的计算得出的动画在当 前帧的包围盒,从而使包围盒的面积尽可能小,其边界与动画尽可能接近,使碰撞检测更加 精确,提高动画的真实性、增强虚拟环境的沉浸感,便于动画的后期制作。参见图8,为本发明提供的动画制作装置实施例结构示意图,如图8所示,该装置 包括动画单元创建模块1,用于创建动画单元;所述动画单元包括图元和/或骨骼。动画数据设置模块2,用于设置动画单元的关键帧数据;动画单元在播放过程中, 出现非线性变化时所在的帧为动画单元的关键帧;关键帧数据中记录动画单元在关键帧的 参数。更为具体的,动画单元在播放过程中,进行线性变化时所在的帧为动画单元的过 渡帧;动画单元的过渡帧数据中记录该动画单元在过渡帧的参数。关键帧和过渡帧的参数 包括动画单元在当前帧的水平位置参数、垂直位置参数、旋转角度参数、缩放比例参数。过渡帧数据不在动画数据设置模块2中设置,而是在动画播放过程中,根据该动 画单元的关键帧数据实时计算得出。本发明提供的动画制作装置,将一个动画分为多个并行的动画单元,在每一帧中, 只需要针对出现变换的动画单元进行设置,减少动画制作的工作量。参见图9,为本发明提供的动画播放装置第一实施例结构示意图,如图9所示,该 装置包括动画播放模块3,用于播放动画。动画播放模块在每一帧均遍历所有动画单元,根 据各动画单元在当前帧的关键帧数据或过渡帧数据进行变换更新。过渡帧获取模块4,用于动画单元在当前帧不存在关键帧数据时,根据该动画单元 在其它帧的关键帧数据,计算该动画单元在当前帧的过渡帧数据,并通过动画播放模块3 进行播放。更为具体的,过渡帧获取模块4计算过渡帧数据的计算方式包括根据当前帧与 关键帧之间间隔的帧数,以及关键帧数据之间的线性插值、或关键帧数据的平均值、或其它 包含关键帧数据的数学函数计算该动画单元在当前帧的过渡帧数据。在以下实施例中,以 计算关键帧数据的线性插值的方式获取当前帧的过渡帧数据为例,但不能以此限定本发明 的保护范围。本发明提供的动画播放装置,可以根据动画单元的关键帧数据实施例的计算出过 渡帧数据进行播放,使动画帧与帧之间的衔接更加流畅,动画更加自然。同时,本播放装置 的应用将大大较少动画制作过程中的工作量。为了更好的理解本发明提供的动画制作装置、动画播放装置,下面将二者结合在 一起进行描述,但二者的功能实现是互不影响的,不能一次限定本发明的保护范围。参见图10,为本发明提供的动画制作装置及播放装置实施例结构示意图。与上一 实施例相比,在本实施例中,将更为详细的描述装置各模块的功能和结构。本实施例提供的 装置如图10所示动画制作装置的动画单元创建模块1,用于创建动画单元。在本发明实施例中,一 个动画可以包括多个动画单元。更为具体的,动画单元创建模块1创建的动画单元包括图 元和骨骼两种,在本实施例中,现假设需要完成一个包含四帧的动画,内容为一个小人双手 勻速的由平举到斜向上举。在本例中,动画单元创建模块1创建的小人由A、B、C、D、E、F六
12个图元,以及与小人的双手B、C图元绑定的骨骼组成,骨骼在动画播放过程中是不可见的, 如图11中的Ila所示。动画制作装置的动画数据设置模块2,用于设置动画单元的关键帧数据。在动画的 第1帧,用户设置好各图元、骨骼的位置后,动画数据设置模块2会自动创建其关键帧数据, 保存初始位置。在动画其后的每一帧的图片中,用户只需要针对出现非线性变换的动画单 元进行关键帧数据的设置,该关键帧数据中记录动画单元的参数,具体包括动画单元的水 平位置参数、垂直位置参数、旋转角度参数、缩放比例等参数。在本实施例的举例中,由于在小人活动的过程只是双手运动,即只有与B、C图元 绑定的两块骨骼存在变化,B、C图元随骨骼变化。故在设置关键帧数据时,只需设置与B、C 图元绑定的两块骨骼的关键帧数据即可。因为小人双手运动为线性过程,故通过动画数据 设置模块2设置与B、C图元绑定的两块骨骼在第1帧和第4帧的关键帧数据即可。在第1 帧,与B、C图元绑定的两块骨骼为0度;在第4帧,与B、C图元绑定的两块骨骼相对于在第 1帧的位置,绕其与小人身体的结合点,分别顺时针和逆时针向上旋转45度。动画播放装置的动画播放模块3,用于播放动画。动画播放模块3在每一帧均遍历 所有动画单元,根据各动画单元在当前帧的关键帧数据或过渡帧数据进行变换更新。更为 具体的,动画播放模块3包括动画遍历单元31,用于在动画单元为图元时,反向遍历图元队列;在动画单元为 骨骼时,依次遍历骨骼队列。因为当动画单元为图元时,各图元之间可能存在遮挡关系,而 动画制作过程中,最底层被遮挡的图元一般排在图元队列末端,所以反向遍历图元队列可 以保证动画具有正确的层次关系。帧数据获取单元32,用于获取各动画单元在当前帧的关键帧数据,当某一动画单 元在当前帧不存在关键帧数据时,通过过渡帧获取模块4获取该动画单元在当前帧的过渡 帧数据。动画播放单元33,用将各动画单元在当前帧根据其关键帧数据或过渡帧数据变换 更新后进行播放。在本发明实施例的举例中,动画播放单元33首先根据骨骼的关键帧数据 或过渡帧数据对其进行变换更新,并在临时存储单元34中保存骨骼在当前帧的关键帧数 据或过渡帧数据。然后动画播放单元33遍历所有图元,虽然各图元没有变换更新,但因为 B、C图元与骨骼绑定,动画播放单元33在临时存储单元34中获取骨骼在当前帧的关键帧 数据或过渡帧数据中,并根据该关键帧数据或过渡帧数据对B、C图元进行变换更新。所有 动画单元的变换更新帧同步,组合在一起形成完整的动画效果。在本实施例的举例中播放 动画时,小人举起双手的4帧完整动画如图11a、lib、11c、Ild所示。优选的,动画播放模块3还包括临时存储单元34,用于当动画由骨骼和与所述骨 骼绑定的图元共同组成时,在骨骼根据其关键帧数据或过渡帧数据完成在当前变换更新 后,保存所述骨骼的关键帧数据或过渡帧数据。而与所述骨骼绑定的图元在当前帧根据该 图元的关键帧数据或过渡帧数据进行变换更新后,再根据临时存储单元34中存储的骨骼 的关键帧数据或过渡帧数据进行变换更新。过渡帧获取模块4,用于动画单元在当前帧不存在关键帧数据时,根据该动画单元 的关键帧数据计算线性插值,获取该动画单元在当前帧的过渡帧数据,并通过动画播放模 块3进行播放。
更为具体的,因为动画单元的关键帧与关键帧之间都是线性变化的关系,所以对 于在当前帧没有关键帧数据的动画单元,过渡帧获取模块4只要获取其前后帧的关键帧 数据,及中间间隔的帧数,就可以通过计算线性插值,得出该动画单元在当前帧的过渡帧数 据。假设在本实施例的举例中,小人的双手由第1帧的平举到第4帧举到斜上45度, 过渡帧获取模块4通过获取与B、C绑定的两块骨骼在第1帧和第4帧的关键帧数据,及其 间隔的帧数,可以计算出两块骨骼在第2帧的过渡骨骼数据的角度参数为15度;在第3帧 的过渡骨骼数据的角度参数为30度。实施本发明提供的动画制作装置及播放装置,只需要设置该动画在第一帧的图 片,对于其后的变化,动画播放装置装置可以在播放过程中通过计算关键帧数据自动生成 过渡帧数据,使动画帧与帧之间的衔接流畅。同时,本发明提供的动画制作装置可以将一个 动画分为多个并行的动画单元,且可以实现多种动画单元之间的绑定和联动,在每一帧中, 只需要针对出现变化的动画单元进行关键帧数据设置,其它的动画单元则无需改动,减少 动画制作的工作量。参见图12,为本发明提供的动画播放装置第二实施例结构示意图,如图所示,本实 施例提供的动画播放装置不仅包括动画播放模块3、过渡帧获取模块4,还包括包围盒计 算模块5。包围盒计算模块5用于在动画播放过程中,动画播放模块3完成对所有动画单元 在当前帧的遍历更新之后,根据各动画单元的关键帧数据和过渡数据,计算所述动画在当 前帧的包围盒。动画的包围盒是检测动画的边界、碰撞等问题的关键,精确的碰撞检测对提 高动画的真实性、增强虚拟环境的沉浸感起着至关重要的作用。本实施例提供的包围盒计算模块5具体包括坐标初始化单元51,用于预置包围盒四个顶点的初始化坐标;预置包围盒四个顶 点的最小X轴坐标和最小Y轴为正无穷大,设置包围盒的最大X轴坐标和最大Y轴坐标为 负无穷大。更进一步的,在动画制作中,一般定义图片的左上角为X轴和Y轴坐标的起始坐 标。在本发明实施例中,坐标初始化单元51预置包围盒左上角的顶点坐标为(+8,+8),右 上角的顶点坐标为(_8,+8),左下角的顶点坐标为(+8,-8),右下角的顶点坐标为(-8,-8)。 如此预置的意义在于,顶点数据获取单元52在后续步骤中获取动画单元的顶点坐标时,动 画单元的左上角顶点坐标必然小于包围盒预置的左上角坐标,利于顶点计算单元53完成 坐标的初次更新替换,坐标初始化单元51预置的包围盒其它三个顶点坐标的理由同上。顶点数据获取单元52,用于在动画播放模块3在当前帧对所有动画单元进行遍历 更新的过程中,获取各动画单元的顶点数据。顶点计算单元53,用于将顶点数据获取单元52获取的所有动画单元的顶点数据 中,以最小X轴坐标和最小Y轴坐标作为包围盒的最小X轴坐标和最小Y轴坐标;以当前最 大X轴坐标和最大Y轴坐标作为包围盒的最大X轴坐标和最大Y轴坐标。更为具体的,在各动画单元变换更新过程中,顶点计算单元53将顶点数据获取单 元52获取的动画单元的顶点坐标与当前包围盒的顶点坐标进行比较、替换,当各动画单元 完成变换更新后,52获取了当前帧所有动画单元的顶点坐标,顶点计算单元53计算得出的 包围盒四个顶点坐标分别为左上角的坐标(最小X轴坐标,最小Y轴坐标),右上角的坐标(最大X轴坐标,最小Y轴坐标),左下角的坐标(最小X轴坐标,最大Y轴坐标),右下 角的坐标(最大X轴坐标,最大Y轴坐标)。包围盒生成单元M,用于以顶点计算单元53得出的包围盒四个顶点坐标,生成该 动画在当前帧的包围盒。实施本发明实施例提供的动画包围盒计算方法,可以实时的计算得出的动画在当 前帧的包围盒,从而使包围盒的面积尽可能小,其边界与动画尽可能接近,使碰撞检测更加 精确,提高动画的真实性、增强虚拟环境的沉浸感,便于动画的后期制作。本发明实施例提供的动画播放装置支持对动画包围盒的计算,可以实时的计算得 出的动画在当前帧的包围盒,从而使动画包围盒面积尽可能小,其边界与动画尽可能接近, 使碰撞检测更加精确,提高动画的真实性、增强虚拟环境的沉浸感,便于动画的后期合成制 作。以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权 利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助 软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解, 本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来, 该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使 得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例 或者实施例的某些部分所述的方法。
权利要求
1.一种动画制作方法,其特征在于,包括确定动画单元的关键帧;所述动画单元在播放过程中,出现非线性变化时所在的帧为 所述动画单元的关键帧;设置所述动画单元的关键帧数据;所述关键帧数据中记录该动画单元在所述关键帧的 参数。
2.如权利要求1所述的动画制作方法,其特征在于,所述动画单元在播放过程中,进行 线性变化时所在的帧为所述动画单元的过渡帧;动画单元的过渡帧数据中记录该动画单元在所述过渡帧的参数;所述过渡帧数据在所 述动画单元播放过程中,根据该动画单元的关键帧数据实时计算得出。
3.如权利要求1或2所述的动画制作方法,其特征在于,所述动画单元包括图元和\或 骨骼;所述关键帧和过渡帧的参数包括动画单元在当前帧的水平位置参数、垂直位置参数、 旋转角度参数、缩放比例参数。
4.一种动画播放方法,其特征在于,包括在当前帧遍历动画的所有动画单元;获取各动画单元在当前帧的关键帧数据;若动画单元在当前帧不存在关键帧数据,则 根据所述动画单元在其它帧的关键帧数据,计算该动画单元在当前帧的过渡帧数据;在当前根据各动画单元的关键帧数据或过渡帧数据进行变换更新。
5.如权利要求4所述的动画播放方法,其特征在于,动画单元在播放过程中,出现非线 性变化时所在的帧为所述动画单元的关键帧;所述关键帧数据中记录该动画单元在所述关 键帧的参数;所述关键帧的参数在动画制作过程中进行设置;所述动画单元的过渡帧数据中记录该动画单元在所述过渡帧的参数;所述过渡帧数据 在所述动画单元播放过程中,根据该动画单元的过渡帧数据实时计算得出;所述关键帧和过渡帧的参数包括动画单元在当前帧的水平位置参数、垂直位置参数、 旋转角度参数、缩放比例参数。
6.如权利要求5所述的动画播放方法,其特征在于,所述动画单元包括图元和\或骨骼;所述在当前帧遍历动画的所有动画单元包括当所述动画单元为图元时,反向遍历图 元队列;当所述动画单元为骨骼时,依次遍历骨骼队列。
7.如权利要求6所述的动画播放方法,其特征在于,当动画单元为骨骼和与所述骨骼 绑定的图元时,骨骼在当前帧根据该骨骼的关键帧数据或过渡帧数据进行变换更新后,保 存所述骨骼的关键帧数据或过渡帧数据;与所述骨骼绑定的图元在当前帧根据该图元的关键帧数据或过渡帧数据进行变换更 新后,再根据所述骨骼的关键帧数据或过渡帧数据进行变换更新。
8.如权利要求4至7中任一项所述的动画播放方法,其特征在于,所述在当前帧遍历动 画的所有动画单元之后,还包括计算动画在当前帧的包围盒。
9.如权利要求8所述的动画播放方法,其特征在于,所述计算动画在当前帧的包围盒 包括预置包围盒四个顶点的初始化坐标;预置包围盒四个顶点的最小X轴坐标和最小Y轴为正无穷大、最大X轴坐标和最大Y轴坐标为负无穷大;在当前帧遍历所有动画单元,各动画单元在当前帧根据其关键帧数据或过渡帧数据进 行变换更新;完成遍历后,以当前帧各动画单元中最小X轴坐标、最小Y轴坐标作为包围盒的最小X 轴坐标、最小Y轴坐标;以当前最大X轴坐标、最大Y轴坐标作为包围盒的最大X轴坐标、最 大Y轴坐标;以所述包围盒的最小X轴坐标、最小Y轴坐标、最大X轴坐标、最大Y轴坐标作为所述 包围盒的四个顶点,生成所述动画在当前帧的包围盒。
10.一种动画制作装置,其特征在于,所述装置包括动画单元创建模块,用于创建动画单元;所述动画单元包括图元和/或骨骼;动画数据设置模块,用于设置动画单元的关键帧数据;动画单元在播放过程中,出现非 线性变化时所在的帧为所述动画单元的关键帧;所述关键帧数据中记录所述动画单元在所 述关键帧的参数。
11.如权利要求10所述的动画制作装置,其特征在于,所述动画单元在播放过程中,进 行线性变化时所在的帧为所述动画单元的过渡帧;动画单元的过渡帧数据中记录该动画单元在所述过渡帧的参数;所述过渡帧数据在所 述动画单元播放过程中,根据该动画单元的关键帧数据实时计算得出。
12.如权利要求11所述的动画制作装置,其特征在于,所述关键帧和过渡帧的参数包 括动画单元在当前帧的水平位置参数、垂直位置参数、旋转角度参数、缩放比例参数。
13.—种动画播放装置,其特征在于,所述装置包括动画播放模块,用于播放动画;动画播放模块在每一帧均遍历所有动画单元,根据各动 画单元在当前帧的关键帧数据或过渡帧数据进行变换更新;过渡帧获取模块,用于动画单元在当前帧不存在关键帧数据时,根据所述动画单元在 其它帧的关键帧数据,计算该动画单元在当前帧的过渡帧数据,并通过所述动画播放模块 进行播放。
14.如权利要求13所述的动画播放装置,其特征在于,所述动画播放模块包括动画遍历单元,用于在动画单元创建模块创建的动画单元为图元时,在每一帧均反向 遍历图元队列;在动画单元创建模块创建的动画单元为骨骼时,在每一帧均依次遍历骨骼 队列;帧数据获取单元,用于获取在当前帧各动画单元的关键帧数据;在当前帧动画单元不 存在关键帧数据时,通过过渡帧获取模块获取该动画单元在当前帧的过渡帧数据;动画播放单元,用将各动画单元在当前帧根据其关键帧数据或过渡帧数据变换更新后 进行播放。
15.如权利要求14所述的动画播放装置,其特征在于,所述动画播放模块还包括临时存储单元,用于当动画单元为骨骼和与所述骨骼绑定的图元时,骨骼在当前帧根 据其关键帧数据或过渡帧数据进行变换更新后,保存所述骨骼的关键帧数据或过渡帧数 据;与所述骨骼绑定的图元在当前帧根据该图元的关键帧数据或过渡帧数据进行变换更 新后,再根据所述临时存储单元中存储的所述骨骼的关键帧数据或过渡帧数据进行变换更新。
16.如权利要求13至15中任一项所述的动画播放装置,其特征在于,所述动画播放装 置还包括包围盒计算模块,用于在动画播放过程中,动画播放模块完成对所有动画单元的遍历 更新之后,根据各动画单元的关键帧数据或过渡帧数据,计算动画在当前帧的包围盒。
17.如权利要求16所述的动画播放装置,其特征在于,所述包围盒计算模块包括坐标初始化单元,用于预置包围盒四个顶点的初始化坐标;预置包围盒四个顶点的最 小X轴坐标和最小Y轴为正无穷大,设置包围盒的最大X轴坐标和最大Y轴坐标为负无穷 大;顶点数据获取单元,用于在动画播放模块在当前帧对所有动画单元进行遍历更新的过 程中,获取各动画单元的顶点数据;顶点计算单元,用于将顶点数据获取单元获取的所有动画单元的顶点数据中,以最小X 轴坐标和最小Y轴坐标作为包围盒的最小X轴坐标和最小Y轴坐标;以当前最大X轴坐标 和最大Y轴坐标作为包围盒的最大X轴坐标和最大Y轴坐标;包围盒生成单元,用于以所述顶点计算单元计算得出的包围盒最小X轴坐标、最小Y轴 坐标、最大X轴坐标、最大Y轴坐标作为所述包围盒的四个顶点,生成所述动画在当前帧的 包围盒。
全文摘要
本发明提供一种动画制作方法、装置和动画播放方法、装置。动画制作方法包括确定动画单元的关键帧;动画单元在播放过程中,出现非线性变化时所在的帧为动画单元的关键帧;设置动画单元的关键帧数据;关键帧数据中记录动画单元在关键帧的参数。动画播放方法包括在当前帧遍历动画的所有动画单元;获取各动画单元的关键帧数据;若动画单元在当前帧不存在关键帧数据,则根据动画单元在其它帧的关键帧数据,计算动画单元在当前帧的过渡帧数据;在当前根据各动画单元的关键帧数据或过渡帧数据进行变换更新。实施本发明提供的动画制作方法、装置和动画播放方法、装置,可以提高对动画图片的利用率,减小动画制作过程中的工作量。
文档编号G06T13/00GK102129705SQ20101004444
公开日2011年7月20日 申请日期2010年1月18日 优先权日2010年1月18日
发明者熊智敏 申请人:腾讯科技(深圳)有限公司