一种可无限扩展动画属性的方法技术领域
本发明涉及计算机游戏开发领域,具体涉及一种在动画系统中可无限扩展动画属
性的方法。
背景技术
现在市面上比较常见的游戏编辑器通用的动画为骨骼动画、关键帧动画和序列帧
动画。骨骼动画对以关节连接的骨骼制作关键帧来驱动皮肤完成动画,优点是可以角色动
作更流畅自然,并且换肤方便。序列帧是在一定时序内连续切换图片,达到视觉上的连贯动
作,优点是制作简单,但是明显缺点为资源占用空间大,且较对性能消耗大。关键帧动画主
要针对位置、旋转、缩放三个基本属性的卡帧来完成对象的动作。比如目前比较流行的
Spine、Unity等,可以在编辑器中用于制作动画的属性就只有位置、旋转、缩放三个基本属
性,所有实现的效果有限,如果需要实现更加复杂的效果,例如空间撕裂或者角色穿墙等效
果就不得不人工的编写代码来实现。
CocoStudio是一套基于cocos2d-x专业的永久免费的游戏开发工具集,帮助开发
者快速创建游戏资源,将大部分繁琐的游戏开发工作使用编辑器来快速制作,CocoStudio
包含了游戏开发中核心的几个游戏编辑器,UI编辑器、动画编辑器、场景编辑器、数据编辑
器,用于处理游戏中的动画资源、UI界面、游戏场景、游戏数据,针对于开发团队中不同的职
业进行深度设计,规范了整个开发流程,让开发团队中每个人各执其职,发挥自己最大的作
用。从而达到高效率,高质量,低风险,低成本的效果。
其中的动画编辑器是用于编辑游戏中使用的角色动画、特效动画、场景动画等动
态的游戏资源。主要使用人员是美术设计师,美术设计师可以将绘制好的图片资源导入到
动画编辑器中,然后按照策划设计来编辑各种动画效果,并且在编辑器中演示编辑后的内
容。动画编辑器支持关键帧动画,序列帧动画,骨骼动画等多种动画编辑方式。并支持碎图
导出,整图导出等多种资源优化方式。同时动画编辑器支持对Flash,PSD,Plist资源的解
析。
例如,中国专利文献(公布号:CN102541567A)公开了一种2D手机游戏引擎及兼容
手机操作系统的方法,该方法外部应用程序可以调用操作系统里的驱动服务或应用服务,
使得应用程序和操作系统可以分开,操作系统可以兼容不同的应用程序,能解决手机游戏
开发中的平台移植过于繁重两大问题,以实现跨平台,简化平台移植工作。再如,中国专利
文献(公布号:CN104267963A)公开了一种跨平台角色扮演网络游戏客户端引擎,包括游戏
编辑器和游戏引擎,游戏编辑器用于通过采用所见既得的方式来动态编辑游戏数据,对游
戏中各个模块进行可视化编辑,游戏引擎用于为建立编写游戏所需的各种工具模块,大大
缩短网页、手机游戏开发商开发同类游戏的开发周期。
目前的动画编辑器中支持的动画属性很少 ,而且不可以进行扩展,这样该编辑器
可实现的动画效果会很有限,很难制作出效果更为丰富的动画。因此,为了解决现有技术中
存在的问题,研究一种在动画系统中可无限扩展动画属性的方法已经成为一项重要任务。
发明内容
本发明解决的技术问题是提供一种可无限扩展动画属性的动画系统及方法,目的
是通过设置对象的属性来制作相应的属性动画,并以时间轴驱动属性变化来完成对象的复
杂动作和变换。
本发明的技术方案为:
为了解决上述技术问题,本发明提供了一种可无限扩展动画属性的方法,将可无限扩
展动画属性的动画系统集成到编辑器中,根据不同的对象持续扩展不同的属性,在动画编
辑器中实现对象属性的设置,根据对象属性的变化同步生成相对应的帧保存在时间轴中,
通过时间轴记录对象的属性变化,并将时间轴记录的属性变化单独或任意组合来进行动
画,从而完成动画属性的扩展。
目前的动画编辑器中支持的动画属性很少,大都局限于位移、旋转、缩放这三种基
本属性,可以实现的效果会非常有限,如果需要实现一些复杂的效果,例如空间撕裂、穿墙
等效果,美术人员和动画师就不能通过编辑器实现,只能交给开发人员另外编写代码完成,
导致沟通成本、开发难度增大,不通过编辑器而通过代码调试来实现这些细微的动画效果
的话,代码调试比可视化编辑预览所消耗的时间和精力大得多,所能调出来的最终效果也
会有所差距。与现有技术相比,本发明根据不同的对象扩展不同的属性,对象的变化都是通
过改变其属性或是其他对象属性来实现,并将这些属性叠加,进而在编辑器中改变属性记
录属性变化在时间轴中,比如穿墙的效果就可以通过扩展混合结合位移,空间撕裂可以通
过扩展斜切和灯光的一些特性实现,这样极大的提高了开发效率、减小了难度、节省了开发
和沟通成本。
可无限扩展动画属性的动画系统包括可设置属性的对象和记录属性变化的时间
轴两个核心部分,对象可以是场景、角色、地图、UI、特效粒子、精灵、光源等,可根据对象不
同扩展不同的属性,如灯光用光强弱、照射范围做动画,精灵可以用混合来做动画,粒子可
以用方向等做动画。时间轴在一定时间差内记录对象的属性变化,记录的属性变化可以单
独提出来进行动画,同理也可以任意组合在一起进行动画,例如将斜切和位移结合则能实
现挤压的效果,直接扩展重力做属性可以代替位移旋转实现更加真实的悬浮效果,通过在
时间轴中改变对象的属性,从而形成连续的动态影像。
进一步的,所述方法包括以下步骤:
步骤1、构建一个扩展属性的类作为基类;
步骤2、构建一个帧的组,保存帧并完成跳帧;
步骤3、构建一个帧的基类,通过帧启用和帧作用这两个方法完成对象属性的设置;
步骤4、构建时间轴,完成动画系统无限扩展动画属性的基本功能;
步骤5、按需要在动画系统中扩展对象的属性;
步骤6、在动画编辑器中完成扩展动画属性的同步预览。
更进一步的,所述步骤2具体包括:
构建一个帧的组,构建的组用于保存一系列的同一个时间轴内、同对象、同属性的按索
引排序的有序的帧,如果帧使用的是扩展属性的相对属性变化,则组还包括对象的初始属
性值;在帧的排序、遍历过程中需要充分利用不同中编程语言的面向对象、多态、排序、反射
等方法最大化的达到简便效果,由于对象的属性之间有可能会产生相互影响的效果,所以
在排序的时候需要对帧按属性分组;
添加行为跳帧,跳帧中使用二分查找到当前索引和当前索引的组内下一个关键帧,如
果在当前索引存在关键帧,则直接调用帧的帧启用方法;如果不存在关键帧,则调用帧作用
方法。
更进一步的,所述步骤3具体包括:
构建一个帧的基类,构建的帧的基类包括动画对象本身、对象的属性变化值以及帧索
引,所述对象的属性变化值为相对属性变化值或绝对属性变化值,所述帧索引用于表达在
时间轴中的位置关系;
按照时间顺序遍历所有的帧,通过帧启用和帧作用这两个方法完成对象属性的设置;
当时间进入在当前帧时调用帧启用方法,设置对象的属性,并在此时更新所保存的下一帧
的属性变化值;当时间处于当前帧到同一个组的下一帧的时间区间内调用帧作用方法,使
用当前索引、帧中的属性和下一帧的属性变化值计算对象属性,并设置对象的属性;
在动画系统中,以时间驱动整个动画系统的运行,按照时间顺序遍历所有的帧,在帧的
内部完成对象的属性的设置,从而形成动画。
优选的,当调用帧作用方法时,还可以在帧中添加时间曲线的计算,用于帧作用时
取属性变化的百分比。
更进一步的,所述步骤4具体包括:
构建时间轴,构建的时间轴包括一系列的组,根据扩展的属性定义时间轴内组的顺序,
在时间轴内部完成时间到帧索引的转换;
添加行为,添加行为主要包括动画需要的播放、停止、跳帧、切片行为,在跳帧和播放
时,使用转换后的帧索引遍历所有的组,再以组进行跳帧;
每完成一次时间的转换,遍历所有的组,渲染一次,从而完成动画系统无限扩展动画属
性的基本功能;然而余下可选的实现一些动画的功能,例如反转、动画混合等。
更进一步的,所述步骤5具体包括:
按需要在动画系统中扩展对象的属性,对象扩展的每一种属性的类型都有对应的帧的
基类,如果没有,则继承帧的基类对应扩展,重新通过帧启用和帧作用这两个方法完成对象
属性的设置。
更进一步的,所述步骤6具体包括:
将动画系统集成到编辑器中,在动画编辑器中开启自动记录帧,通过可视化操作设置
对象属性,在渲染区或属性区做不同对象相对应的属性的修改;
在设置对象属性的操作过程中,根据对象属性更改的相对变换或绝对变换信息同步生
成相对应的组和帧添加保存到时间轴中,并在动画编辑器渲染区同步步骤4中的渲染,从而
完成扩展动画属性的同步预览;
扩展的属性变化最好是可视化的,才能在动画效果的体现处理;当然属性的变化不可
见的也可以作为动画中的扩展属性,例如事件帧,也可以将其放在时间轴中的某一个点上,
当动画运行在此处时,触发用户自定义的事件;对象扩展的每一种属性的类型都在动画系
统中有对应的帧的基类,如果没有,则继承帧的基类对应扩展即可,帧的基类保存帧在时间
轴中的位置信息、对象本身和对象扩展属性的相对变化或绝对变化信息;在编辑器中开启
自动记录帧后,在渲染区或属性区做对应属性的修改,就会根据属性更改的相对变换或绝
对变换信息生成相对应的帧保存在时间轴中;在编辑器中,帧记录扩展属性的相对属性变
化比绝对变化在用户体验上会更好。
优选的,所述在时间轴内部完成时间到帧索引的转换过程中还可以添加时间缩放
的计算,用作动画播放的变速处理。
本发明的技术效果为:
本发明提供了一种可无限扩展动画属性的方法,通过继承帧的基类按需要持续扩展属
性,降低了开发门槛;扩展属性后增加了动画的效果展现种类,属性间的结合功能又进一步
增加了动画效果的展现种类,因此整体上增加了动画效果,给开发人员提供了更多的效果
选择,方便开发人员制作出画面更加丰富的动画;此外,本方法扩展的每一个属性也可以单
独提出来进行动画,使得动画编辑器可以支持单属性动画,方便可开发人员查看动画的效
果,以便于更好的制作动画,同时也可以组合不同的动画属性完成一些复杂特殊的动画效
果,减少了美术、动画师和开发的反复协调工作,使动画师可以更完美的设计和实现想要的
结果,降低了沟通、开发成本。
附图说明
图1为本发明可无限扩展动画属性的方法流程图。
图2为本发明使用高级语言无限扩展动画属性的方法流程图。
具体实施方式
下面结合附图说明本发明的具体实施方式:
实施例1:
如图1所示,本发明提供了一种可无限扩展动画属性的方法,将可无限扩展动画属性的
动画系统集成到编辑器中,根据不同的对象持续扩展不同的属性,在动画编辑器中实现对
象属性的设置,根据对象属性的变化同步生成相对应的帧保存在时间轴中,通过时间轴记
录对象的属性变化,并将时间轴记录的属性变化单独或任意组合来进行动画,从而完成动
画属性的扩展。本实施例是在cocos2d-x中实现无限扩展动画属性的。
所述无限扩展动画属性的方法包括以下步骤:
步骤1、构建一个扩展属性的类作为基类,使用Node作为动画系统中扩展动画属性的基
类;
步骤2、构建一个帧的组,保存帧并完成跳帧;
设置Timeline,构建的组用于保存一系列的同一个时间轴内、同对象、同属性的按索引
排序的有序的帧,如果帧使用的是扩展属性的相对属性变化,则组还包括对象的初始属性
值;
添加行为跳帧,跳帧中使用二分查找到当前索引和当前索引的组内下一个关键帧,如
果在当前索引存在关键帧,则直接调用帧的帧启用方法;如果不存在关键帧,则调用帧作用
方法;
步骤3、构建一个帧的基类,通过帧启用和帧作用这两个方法完成对象属性的设置;
构建Frame作为基类帧,构建的帧的基类包括动画对象本身、对象的属性变化值以及帧
索引,所述对象的属性变化值为相对属性变化值或绝对属性变化值,所述帧索引用于表达
在时间轴中的位置关系;
按照时间顺序遍历所有的帧,通过帧启用和帧作用这两个方法完成对象属性的设置;
当时间进入在当前帧时调用帧启用方法,设置对象的属性,并在此时更新所保存的下一帧
的属性变化值;当时间处于当前帧到同一个组的下一帧的时间区间内调用帧作用方法,使
用当前索引、帧中的属性和下一帧的属性变化值计算对象属性,并设置对象的属性;当调用
帧作用方法时,还可以在帧中添加时间曲线的计算,用于帧作用时取属性变化的百分比;
步骤4、构建时间轴,完成动画系统无限扩展动画属性的基本功能;
构建Action Timeline作为时间轴,构建的时间轴包括一系列的组,根据扩展的属性定
义时间轴内组的顺序,在时间轴内部完成时间到帧索引的转换;所述在时间轴内部完成时
间到帧索引的转换过程中还可以添加时间缩放的计算,用作动画播放的变速处理;
添加行为,添加行为主要包括动画需要的播放、停止、跳帧、切片等行为,切片则是将动
画按时间分为不同的时间片段,在跳帧和播放时,使用转换后的帧索引遍历所有的组,再以
组进行跳帧;对于组的排序以及遍历方法都需要充分运用不同编辑语言的面向对象、多态、
排序、反射等方法最大化的达到简便效果,由于部分属性的设置产生的效果会相互影响,所
以需要保证时间轴内的组有序,根据扩展出来的属性定义时间轴内组的顺序,需要对帧按
属性分组;
每完成一次时间的转换,遍历所有的组,渲染一次,从而完成动画系统无限扩展动画属
性的基本功能;余下可选的实现一些动画的功能,例如反转、动画混合等;
步骤5、按需要在动画系统中扩展对象的属性;对象扩展的每一种属性的类型都有对应
的帧的基类,如果没有,则继承帧的基类对应扩展,重新通过帧启用和帧作用这两个方法完
成对象属性的设置,例如扩展颜色混合BlendFuncFrame等作为扩展属性;
步骤6、在动画编辑器中完成扩展动画属性的同步预览;
将动画系统集成到编辑器中,在cocos studio中的动画编辑器中开启自动记录帧,通
过可视化操作设置对象属性,在渲染区或属性区做不同对象相对应的属性的修改;
在设置对象属性的操作过程中,根据对象属性更改的相对变换或绝对变换信息同步生
成相对应的组和帧添加保存到时间轴中,并在动画编辑器渲染区同步步骤4中的渲染,从而
完成扩展动画属性的同步预览。
实施例2:
如图2所示,在扩展动画属性的开发过程中,如果开发语言不同,则无限扩展动画属性
的方法也会存在不同;例如在使用C#、Java、ruby等高级语言时,所述无限扩展动画属性的
方法包括以下步骤:
步骤1、构建一个帧的组,保存帧并完成跳帧;
设置 Timeline,构建的组用于保存一系列的同一个时间轴内、同对象、同属性的按索
引排序的有序的帧,如果帧使用的是扩展属性的相对属性变化,则组还包括对象的初始属
性值;
添加行为跳帧,跳帧中使用二分查找到当前索引和当前索引的组内下一个关键帧,如
果在当前索引存在关键帧,则直接调用帧的帧启用方法;如果不存在关键帧,则调用帧作用
方法;
步骤2、构建一个帧的基类,通过帧启用和帧作用这两个方法完成对象属性的设置;
构建Frame作为基类帧,构建的帧的基类包括动画对象本身、对象的属性变化值以及帧
索引,所述对象的属性变化值为相对属性变化值或绝对属性变化值,所述帧索引用于表达
在时间轴中的位置关系;
按照时间顺序遍历所有的帧,通过帧启用和帧作用这两个方法完成对象属性的设置;
当时间进入在当前帧时调用帧启用方法,设置对象的属性,并在此时更新所保存的下一帧
的属性变化值;当时间处于当前帧到同一个组的下一帧的时间区间内调用帧作用方法,使
用当前索引、帧中的属性和下一帧的属性变化值计算对象属性,并设置对象的属性;设置属
性时以object这个所有对象的基类通过反射来实现,这样可以使动画扩展的整个架构更简
单,主要体现在动画编辑器中,在cocos studio中直接使用C#的PropertyInfo来设置和保
存属性,在扩展属性时更加方便;当调用帧作用方法时,还可以在帧中添加时间曲线的计
算,用于帧作用时取属性变化的百分比;
步骤3、构建时间轴,完成动画系统无限扩展动画属性的基本功能;
构建Action Timeline作为时间轴,构建的时间轴包括一系列的组,根据扩展的属性定
义时间轴内组的顺序,在时间轴内部完成时间到帧索引的转换;所述在时间轴内部完成时
间到帧索引的转换过程中还可以添加时间缩放的计算,用作动画播放的变速处理;
添加行为,添加行为主要包括动画需要的播放、停止、跳帧、切片等行为,切片则是将动
画按时间分为不同的时间片段,在跳帧和播放时,使用转换后的帧索引遍历所有的组,再以
组进行跳帧;对于组的排序以及遍历方法都需要充分运用不同编辑语言的面向对象、多态、
排序、反射等方法最大化的达到简便效果,由于部分属性的设置产生的效果会相互影响,所
以需要保证时间轴内的组有序,根据扩展出来的属性定义时间轴内组的顺序,需要对帧按
属性分组;
每完成一次时间的转换,遍历所有的组,渲染一次,从而完成动画系统无限扩展动画属
性的基本功能;余下可选的实现一些动画的功能,例如反转、动画混合等;
步骤4、按需要在动画系统中扩展对象的属性;对象扩展的每一种属性的类型都有对应
的帧的基类,如果没有,则继承帧的基类对应扩展,重新通过帧启用和帧作用这两个方法完
成对象属性的设置,例如扩展颜色混合BlendFuncFrame等作为扩展属性;
步骤5、在动画编辑器中完成扩展动画属性的同步预览;
将动画系统集成到编辑器中,在cocos studio中的动画编辑器中开启自动记录帧,通
过可视化操作设置对象属性,在渲染区或属性区做不同对象相对应的属性的修改;
在设置对象属性的操作过程中,根据对象属性更改的相对变换或绝对变换信息同步生
成相对应的组和帧添加保存到时间轴中,并在动画编辑器渲染区同步步骤3中的渲染,从而
完成扩展动画属性的同步预览。