发明内容
本发明提供一种提高动画开发效率的动画复用方法和***。
本发明的目的是通过以下技术方案来实现的:
一种动画复用的方法,包括:
获取用户选定的待处理的动画文件,记为第一文件;
获取在先已处理的属性与第一文件相同的动画文件,记为第二文件;
将第二文件的时间轴应用于第一文件。
进一步的,所述第一文件和第二文件为xml编写的.csd文件。
进一步的,所述.csd文件包括对象数据和所述时间轴;所述对象数据至少对应一个所述属性。
进一步的,所述时间轴包括帧数据、时间数据和动画列表;所述动画列表包括对象的动作,所述帧数据对应动画的操作。
进一步的,所述时间轴包括多个子轴,每个子轴都包括有所述帧数据和时间数据;所述动画列表包括多个动作;每一个属性和一个子轴对应;所述将第二文件的时间轴应用于第一文件的方法包括:根据属性和子轴的映射关系,第一文件获取并应用与属性对应的第二文件的时间轴。
进一步的,所述动画文件包括结构树,所述结构树和时间轴共享同一个结构树模型;所述动画文件与所述结构树映射。
进一步的,所述结构树包括用于对动画文件的播放操作的头部和对所述属性进行设置的节点。
进一步的,所述将第二文件的时间轴应用于第一文件的方法包括:
选择第二文件中需要应用于第一文件的属性对应的节点;
将选择的节点同步到渲染区;
第二文件从渲染区获得可以同步的节点;
根据同步的节点跟第一文件对应的时间轴建立映射关系。
进一步的,所述帧数据包括属性帧数据和控制属性帧数据的节点帧数据。
一种动画复用的***,包括:
第一获取装置:用于获取用户选定的待处理的动画文件,记为第一文件;
第二获取装置:用于获取在先已处理的属性与第一文件相同的动画文件,记为第二文件;
应用装置:用于将第二文件的时间轴应用于第一文件。
本发明基于属性来进行不同动画文件的同步,只要属性相同,不同动画角色的动画文件都可以共用,这样就减少了大量的重复劳动,可以简单、便捷的实现动画复用。
具体实施方式
如图1所示,本发明公开了一种动画复用的方法,包括:
S11、获取用户选定的待处理的动画文件,记为第一文件;
S12、获取在先已处理的属性与第一文件相同的动画文件,记为第二文件;
S13、将第二文件的时间轴应用于第一文件。
如图2所示,本发明还公开了一种动画复用的***,包括:
第一获取装置1:用于获取用户选定的待处理的动画文件,记为第一文件;
第二获取装置2:用于获取在先已处理的属性与第一文件相同的动画文件,记为第二文件;
应用装置3:用于将第二文件的时间轴应用于第一文件。
本发明基于属性来进行不同动画文件的同步,只要属性相同,不同动画角色的动画文件都可以共用,这样就减少了大量的重复劳动,可以简单、便捷的实现动画复用。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
关键帧动画(KeyFrame Animation)
所谓关键帧动画(KeyFrame Animation),就是给需要动画效果的属性,准备一组与时间相关的值,这些值都是在动画序列中比较关键的帧中提取出来的,而其他时间帧中的值,可以用这些关键值,采用特定的插值方法计算得到,从而达到比较流畅的动画效果 。
逐帧动画
逐帧动画是一种常见的动画形式(Frame By Frame),其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。 因为逐帧动画的帧序列内容不一样,不但给制作增加了负担而且最终输出的文件量也很大,但它的优势也很明显:逐帧动画具有非常大的灵活性,几乎可以表现任何想表现的内容,而它类似与电影的播放模式,很适合于表演细腻的动画。例如:人物或动物急剧转身、 头发及衣服的飘动、走路、说话以及精致的3D效果等等。
下面结合附图和较佳的实施例对本发明作进一步说明。
一种动画复用的方法,包括:
获取用户选定的待处理的动画文件,记为第一文件;
获取在先已处理的属性与第一文件相同的动画文件,记为第二文件;
将第二文件的时间轴应用于第一文件。
各个动画的文件是由xml编写的.csd文件。.csd文件包括对象数据和时间轴(也可以称为动画数据);其中,对象对应至少一个属性(例如缩放);时间轴包括帧、时间数据和动画列表,帧对应动画的播放或停止等操作,动画列表能够表征对象的动作(跑、跳等)。所述对象数据至少对应一个所述属性。
时间轴包括多个子轴,每个子轴都包括有所述帧数据和时间数据;所述动画列表包括多个动作;每一个属性和一个子轴对应;所述将第二文件的时间轴应用于第一文件的方法包括:根据属性和子轴的映射关系,第一文件获取并应用与属性对应的第二文件的时间轴。所述帧数据包括属性帧数据和控制属性帧数据的节点帧数据。
动画文件包括结构树,所述结构树和时间轴共享同一个结构树模型;所述动画文件与所述结构树映射。
结构树的数据类型分为两种,节点类型与属性类型。
StructTreeModel提供了删选数据是否应该在界面显示的功能,当展开节点属性值时,节点属性值显示,当收缩节点属性值时,节点属性隐藏。
StructTreeModel缓存了节点与TreeIter的映射,用于快速通过节点查找对应的结构树路径。
StructTreeModel表示结构树模型,负责操作模型与缓存节点映射
结构树显示了节点树的结构,以及提供了对节点树操作的方法。
所述结构树包括用于对动画文件的播放操作的头部和对所述属性进行设置的节点。
结构树分为上下两个部分,上面的部分为结构树头部,下面的部分显示了节点树结构。结构树头部用于对动画的播放进行操作,比如开始/停止播放,跳到第一/最后帧等,由头部(TreeHeader)类控制。节点树部分提供对节点的操作,比如隐藏/显示节点,锁定/解锁节点,显示节点属性,拖拽改变节点父子结构等。
结构树的主要类及其功能如下表所示:
本发明通过结构树模型、结构树建立了各种映射关系,无须编程,就能实现不同动画文件中相同属性的时间轴共用。具体来说,包括以下步骤:
将第二文件的时间轴应用于第一文件的方法包括:
选择第二文件中需要应用于第一文件的属性对应的节点;
将选择的节点同步到渲染区;
第二文件从渲染区获得可以同步的节点;
根据同步的节点跟第一文件对应的时间轴建立映射关系。
结构树需要与渲染区同步选中项,即同步当前选中的节点。当在结构树选中节点时,需要发送消息通知渲染区刷新选中项;当渲染区选中项发生更改时,也需要发送消息通知结构树刷新选中项。这里为了避免发生循环发送消息的情况,需要判断是否为自身发出的消息来判断是否需要对消息做处理。
本实施方式还提供一种时间轴的编辑面板。
时间轴面板提供帧数据编辑功能,包括删除帧数据,添加帧数据,移动帧数据,复制/粘贴帧数据等功能。帧数据有两种类型:节点帧数据与属性帧数据。
节点帧数据是虚类型,它的作用是方便控制属性帧数据,一个节点帧数据里面可以包含多种属性帧数据。对节点帧数据操作,则相当于对它所有的属性帧数据进行操作。
节点帧数据是动态被创建出来的。当创建了一个属性帧数据,节点帧数据会被自动创建出来;当手动创建一个节点帧数据时,则该节点所有已显示属性帧数据都会创建一帧数据。因为节点帧数据时模拟出来的,所以它不会被导出到数据当中。
属性帧数据是实类型,它对应了节点在这一帧数据当中这一属性的数值。属性帧数据是会被导出到数据当中的。节点是有多个属性的,只有在时间轴上有属性帧数据时节点才会显示动画。
作为本发明的另一实施方式,提供一种可实现上诉方法的动画复用的***。该***包括:
第一获取装置:用于获取用户选定的待处理的动画文件,记为第一文件;
第二获取装置:用于获取在先已处理的属性与第一文件相同的动画文件,记为第二文件;
应用装置:用于将第二文件的时间轴应用于第一文件。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。