动画处理方法、装置及存储介质与流程

文档序号:14390715阅读:162来源:国知局
动画处理方法、装置及存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种动画处理方法、装置及存储介质。



背景技术:

骨骼动画是把对象的各部分身体部件图片绑定到一根根互相作用连接的“骨头”上,每个部分通过骨骼联动,通过控制这些骨骼的位置、旋转方向和放大缩小而生成的动画。由于骨骼动画相比传统的逐帧动画具有更多的优势(更少的美术资源、更小的体积等)而受到用户的青睐,被广泛应用到动画制作中。

然而,对于骨骼动画的性能优化,相关技术中往往采用减少骨骼、减少蒙皮中顶点数量等方式,而这或多或少会降低动画的展示效果。



技术实现要素:

本发明实施例提供一种动画处理方法、装置及存储介质,能够减少内存占用,使得动画播放更加流畅。

本发明实施例的技术方案是这样实现的:

本发明实施例提供一种动画处理方法,所述方法包括:

获得记录有对象的动画信息的动画文件集合;

在客户端的内存加载所述动画文件集合中的动画文件,所加载的动画文件对应所述对象的骨骼模型;

基于时间点的序列,在客户端的内存顺序加载所述动画文件集合中的动画文件,所加载的动画文件对应不同时间序列点的动作;

解析所述客户端的内存加载的所述动画文件,生成包括所述对象的骨骼模型和动作的渲染对象;

检测到对应所述动作的渲染对象的渲染时刻到达,基于生成的所述渲染对象进行动画渲染,得到符合所述对象目标时间序列点的动作的动画。

本发明实施例提供一种动画处理装置,所述装置包括:

获取模块,用于获得记录有对象的动画信息的动画文件集合;

加载模块,用于在客户端的内存加载所述动画文件集合中的动画文件,所加载的动画文件对应所述对象的骨骼模型;

以及,基于时间点的序列,在客户端的内存顺序加载所述动画文件集合中的动画文件,所加载的动画文件对应不同时间序列点对应的动作;

解析模块,用于解析所述客户端的内存加载的所述动画文件,生成包括所述对象的骨骼模型和动作的渲染对象;

渲染模块,用于检测到对应所述动作的渲染对象的渲染时刻到达,基于生成的所述渲染对象进行动画渲染,得到符合所述对象目标时间序列点的动作的动画。

本发明实施例提供一种动画处理装置,所述装置包括:

存储器,用于存储可执行程序;

处理器,用于通过执行所述存储器中存储的可执行程序时实现上述动画处理方法。

本发明实施例提供一种可读存储介质,存储有可执行程序,所述可执行程序被处理器执行时实现上述动画处理方法。

本发明实施例具有这样的有益效果:

应用本发明实施例提供的动画处理方法、装置及存储介质,由于内存中仅加载了动画的部分动作数据,并未加载整个动画的完整的动作数据,如此,大大降低了动画生成过程中的内存占用,使得动画播放更加流畅,避免了由于内存不足造成的页面黑屏、卡死等风险。

附图说明

图1是本发明实施例提供的动画处理装置的一个可选的硬件结构示意图;

图2是本发明实施例提供的终端的一个可选的硬件结构示意图;

图3是本发明实施例提供的动画处理方法的一个可选的应用场景示意图;

图4是本发明实施例提供的动画处理方法的一个可选的应用场景示意图;

图5是本发明实施例提供的动画编辑器的工作原理示意图;

图6-1是本发明实施例提供的采用蒙皮进行图片变形前的示意图;

图6-2是本发明实施例提供的采用蒙皮进行图片变形后的示意图;

图7是本发明实施例提供的存在空白贴图的对象贴图集示意图;

图8是本发明实施例提供的对象贴图设置的示意图;

图9是本发明实施例提供的装扮绘制的流程示意图;

图10是本发明实施例提供的动作占用内存的一个示例图;

图11是本发明实施例提供的对骨骼模型数据进行拆分的示意图;

图12是本发明实施例提供的动画处理方法的一个可选的流程示意图;

图13是本发明实施例提供的动画处理方法的一个可选的流程示意图;

图14是本发明实施例提供的动画处理装置的示意图。

具体实施方式

以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。

需要说明的是,在本发明实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的模块,这里的模块可以是部分电路、部分处理器、部分程序或软件等等)。

例如,本发明实施例提供的动画处理方法包含了一系列的步骤,但是本发明实施例提供的动画处理方法不限于所记载的步骤,同样地,本发明实施例提供的动画处理装置包括了一系列模块,但是本发明实施例提供的动画处理装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的单元。

图1所示为本发明实施例提供的浏览器内存分解示意图,参见图1,浏览器新开一个页面所占用的内存包括:页面加载的各类资源文件(包括css、js、图片等等资源),编译后供浏览器执行的code代码,jsheap(执行js代码产生的变量),dom结构等等;然而,对于没有独显的设备(手机),gpu内存(webgl占用的内存)可能跟浏览器共用内存。如此,若减少了内存占用,同等数量的模型动画会播放更加流畅,从而可降低内存不够时,页面黑屏或者卡死的风险。

在本发明实际实施时,本发明实施例提供的动画处理方法既可以由终端设备单独实现,亦可由终端及服务器协同实现。终端或服务器包括有一个或多个处理器以及存储器,以及一个或一个以上的程序,其中,所述一个或一个以上的程序存储于存储器中,所述程序可以包括一个或一个以上的每一个对应于一组指令的单元,所述一个或多个处理器被配置为执行指令,实现本发明实施例的动画处理方法。

终端上可以安装各种应用客户端(供用户侧终端运行的可执行程序,支持用户使用相应的业务),如:动画制作类客户端、动画性能优化类客户端、游戏类客户端、社交客户端等。

本发明实施例提到的终端可理解为在用户侧运行客户端的设备,可以是具有显示屏并且支持交互功能的各种电子设备,如:可以为台式机电脑、电视机顶盒、xbox/ps3游戏机等固定终端;也可以为智能手机、笔记本电脑、平板电脑等移动终端。

接下来根据图2说明实现本发明实施例的动画处理方法对应的动画处理装置的一个可选的硬件结构示意图,动画处理装置可以以各种形式来实施,如:由终端单独实施,或者由终端、服务器协同实施。下面对本发明实施例的动画处理装置的硬件结构做详细说明,可以理解,图2仅仅示出了动画处理装置的示例性结构而非全部结构,根据需要可以实施图2示出的部分结构或全部结构。

参见图2,实际应用中可以应用于前述的运行应用程序的各种终端,图2所示的动画处理装置100包括:至少一个处理器101、存储器102、用户接口103和至少一个网络接口104。动画处理装置100中的各个组件通过总线系统105耦合在一起。可以理解,总线系统105用于实现这些组件之间的连接通信。总线系统105除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统105。

其中,用户接口103可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。

可以理解,存储器102可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。

本发明实施例中的存储器102用于存储各种类型的数据以支持动画处理装置100的操作。这些数据的示例包括:用于在动画处理装置100上操作的任何计算机程序,如可执行程序1021,实现本发明实施例的动画处理方法的程序可以包含在可执行程序1021中。

本发明实施例揭示的动画处理方法可以应用于处理器101中,或者由处理器101实现。处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,动画处理方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器101可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器102,处理器101读取存储器102中的信息,结合其硬件完成本发明实施例提供的动画处理方法的步骤。

本发明一个实施例中,图3示出的动画处理装置实施为终端,参见图3,图3为本发明实施例提供的终端的一个可选的硬件结构示意图,终端包括:

存储器102,配置为存储可执行程序;

处理器101,配置为执行所述存储器中存储的可执行程序时,实现本发明实施例提供的上述动画处理方法。

存储器102还存储有终端的操作系统1022。

网络接口104可以包括一个或多个通信模块,如包括移动通信模块1041及无线互联网模块1042。

a/v(音频/视频)输入单元120用于接收音频或视频信号。可以包括摄像头121和麦克风122。

感测单元140包括传感器141,实现传感数据的采集,比如光传感器、运动传感器、压力传感器、虹膜传感器等。

电源单元190(比如电池),优选的,电源单元190可以通过电源管理系统与处理器101逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

输出单元150,包括:

显示单元151,显示由用户输入的信息或提供给用户的信息,可包括显示面板;

音频输出模块152,可以在终端处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等模式下时,将接收的或者在存储器中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出模块还可以提供与终端执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等),可以包括扬声器、蜂鸣器等。

警报单元153,可实现终端的特定事件的告警,如故障告警等。

至此,已经按照功能描述了本发明实施例中涉及的动画处理装置,基于上述动画处理装置的可选硬件结构示意图,下面对实现本发明实施例的动画处理方法的应用场景进行说明。

图4是本发明实施例提供的动画处理方法的一个可选的应用场景示意图,在该应用场景中,终端及服务器协同实现本发明实施例的动画处理方法,参见图4,终端设备通过网络与服务器进行通信,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等,服务器侧设置有骨骼动画编辑器,终端通过网络向服务器发送动画播放请求,获取服务侧的骨骼动画编辑器生成的动画的动画文件集合,基于动画文件集合实现动画的渲染,得到并进行骨骼动画播放。

在另一应用场景中,终端侧设置有骨骼动画编辑器,通过自身设置的骨骼动画编辑器得到动画的动画文件集合,基于动画文件集合实现动画的渲染,得到并进行骨骼动画播放。

基于上述动画处理方法的应用场景及动画处理装置,接下来对本发明实施例的动画处理方法的实现过程进行说明。

首先对本发明实施例中提到的动画文件进行说明,在本发明实施例中,动画文件由动画编辑器生成,用于实现动画信息记录的特定类型的文件。

客户端获取的动画文件集合至少包括:对象的骨骼模型的动画文件,以及对象的动作的动画文件(描述文件);

其中,骨骼模型的动画文件至少包括对象的纹理贴图的贴图文件、对象的骨架信息的描述文件、以及对象的蒙皮信息的描述文件。在实际应用中,本发明实施例提到的描述文件可以理解为动画编辑器生成的记载有对象的动画信息的配置文件。

以动画编辑器为spine编辑器为例,当然在实际应用中还可以是其它动画编辑器,如开源引擎dragonbones;动画文件可以包括:.atlas文件(描述文件),.json文件(描述文件),以及.png文件(贴图文件);其中,atlas文件和png文件记录合图前的所有被切割的图片信息,而json文件记录的是骨骼配置和动画信息,也就是spine动画最关键的数据。

接下来以动画编辑器为spine编辑器,对应生成h5骨骼动画为例,对动画编辑器生成动画文件的过程进行说明,对应spine编辑器可选择多种语言运行库,可选地,选择pixi开源引擎。

首先对本发明实施例中的spine编辑器的工作原理进行说明。

图5所示为本发明实施例提供的动画编辑器的工作原理示意图,参见图5,本发明实施例中骨骼动画的对象由骨骼、插槽、附件三部分组成;其中,骨骼与插槽为1对n(大于1的正整数)的关系,插槽与附件也是1对n的关系,以下分别进行介绍。

对象的骨骼的结构呈树状,包括根骨骼(躯干)及其它骨骼(如头部-眼珠),骨骼之间通过父子关系连接在一起,骨骼的位移(包括旋转角度及位置)是相对父骨骼而言的,而树状结构的明显优势便是,如果动画时要设置位移,仅需设置根节点的位移即可。

插槽里可以插入皮肤,皮肤除了描述对应哪张贴图(甚至贴图上的某个区域),还具有变换数据(但不会变化)。

附件用于展示对象的外部轮廓(外表),包括三种类型的信息:图片、蒙皮及权重蒙皮;其中,蒙皮用于指示图片的形变特征,包括顶点、边缘及三角区域,能够对图片的某个区域变形,参见图6-1及图6-2,图6-1及图6-2分别为本发明实施例提供的采用蒙皮进行图片变形前后的示意图,在图6中,只要向右移动顶点a便可拉长对象的鼻子。权重蒙皮用于指示骨骼作用于某顶点的权重,使得顶点的位置随着骨骼变化。

骨骼动画中对象的动作是基于时间轴的,随着时间更新对象的视觉状态,一个完整的骨骼动画的动作,可以分解到每片骨骼上,而每一片骨骼的动作则由关键帧所定义,某个时间序列点的动作对应的关键帧,用于描述在该时间序列点,对象的动作的骨架特征,也就是说一个动作关键帧可以指示对象的一个或多个动作,如一个跑步的动作关键帧可对应如下动作:对象躯干的上下起伏、腿部的抬起和落下、手臂的前后摆动、肘部的弯曲变化。一个骨骼动画可以对应至少两个动作关键帧(动作开始时对应的起始动作关键帧及动作结束时对应的结束动作关键帧),而两个相邻时间序列点对应的两个动作关键帧之间的状态可通过插值得到。其中,这里所述的时间序列点可以理解为是按照时间的先后顺序或动作播放的先后顺序进行的一个时间的排序,不一定为真实时间(如几点几分)。

在本发明实施例中,动画编辑器通过用户设定的至少两个动作关键帧生成包括对象的至少两个动作的描述文件,对应spine编辑器,该描述文件为包括对象的至少两个动作的.json文件。

动画编辑器在进行骨骼动画编辑时,生成的原始对象是没有装扮的,因此,需要空白(透明)贴图做占位,并一起打包在原始页面(大雪碧图)里,如图7所示,图7为本发明实施例提供的存在空白贴图(如图7中标号1、2部分所示为空白贴图)的对象贴图集示意图,显然,存在空白贴图的情况下会占用更多的图形处理器(graphicsprocessingunit,gpu)内存,因此,在本发明实施例中,通过spine的模型导出工具将装扮对应的空白贴图去掉,并声明与空白贴图同等尺寸大小的画布(canvas)。参见图8,图8为本发明实施例提供的对象贴图设置的示意图,在图8中,去除x/y轴空白区,可以去掉装扮中所有的空白区域,每张贴图在页面的尺寸会比实际尺寸要小,贴图的四边的空白区域会被裁剪,装扮贴图大小都会变成1*1(可以通过orig,size,offset这三个值还原实际图片),然后将变成1*1大小装扮的原始大小写入模型数据,这样前端就可以依据原始大小生成同等大小的canvas作为装扮图片。去除装扮对应的空白贴图的装扮信息对应的一个示例代码如下:

图9为本发明实施例提供的装扮绘制的流程示意图,参见图9,在实际实施时,动画编辑器将去除空白贴图后(在一实施方式中仅剩对象的蒙皮类型的贴图),将去除的空白贴图的大小数据写入对象的动画文件中,以使前端解析动画文件后声明同等尺寸大小的canvas,进而进行对象的装扮的绘制。而在进行对象的换装时,仅需擦除之前的装扮,再绘制出最新的装扮即可。如此,由于没有了空白贴图,大大降低了gpu的内存占用。

目前相关技术中,默认启用mipmap技术,即默认限制2的幂数,mipmap针对的是对象的纹理贴图资源,mipmap会根据摄像机远近不同而生成对应的八个不同像素大小的贴图,而这显然会占用很多的内存空间,在本发明实施例的骨骼动画中,并不涉及对象的远近(大小)的变化,因此,本发明实施例中并不限制2的幂数,参见图8,如此,前端在进行动画播放时,内存中仅加载对应一种特定像素尺寸的纹理贴图的贴图文件,大大降低了贴图的内存占用。

在实际应用中,动画编辑器生成的描述文件除包括对象的骨架信息、蒙皮信息外,往往包括对象在不同时间序列点的多个动作,相关技术中,前端在进行骨骼动画播放过程中,加载的描述文件包括了对象的多个动作的数据信息,也即一次性把对象所有的动作数据都加载下来,然而对象的很多动作只有在特定场景下才会用到。参见图10,图10为本发明实施例提供的每个动作所占用内存的一个示例图,可知,同时将对象的所有动作数据加载至内存会大大影响动画的播放流畅度。

在本发明实施例中,(终端或服务器)将动画编辑器生成的描述文件进行拆分,如图11所示,图11为本发明实施例提供的对动画编辑器生成的骨骼模型数据进行拆分的示意图,对对象的骨骼模型数据进行拆分后,得到对象的各个动作分别对应的动画文件(每个动作分别对应一个时间序列点,两个动作对应的时间序列点可以相同也可以不同)及对象的骨骼模型的动画文件,组成对应骨骼模型数据的动画文件集合;其中,对象的骨骼模型的动画文件包括:对象的蒙皮信息、骨架信息的描述文件、对象的纹理贴图的贴图文件。由于对对象的动作数据进行了拆分,使得前端在进行动画渲染的过程中,首次进行数据加载可只加载对象的模型数据及必须的两个动作数据,然后基于时间轴按需加载每个动作的数据,将动作数据重新合入模型数据,将拆分后的动作数据合入模型数据的一个方法代码示例如下:

至此,已经对动画编辑器对骨骼动画文件的生成及骨骼动画文件的拆分介绍完毕,接下来对终端侧骨骼动画的播放过程进行说明。

作为上述动画处理方法的一个可选实施例,图12示出了本发明实施例提供的动画处理方法的一个可选的流程示意图,本发明实施例的动画处理方法应用于终端,终端上设置有动画处理客户端,参见图12,涉及步骤200至步骤205,下面分别进行说明。

步骤201:客户端获得记录有对象的动画信息的动画文件集合。

步骤202:在客户端的内存加载所述动画文件集合中的动画文件,所加载的动画文件对应所述对象的骨骼模型。

这里,对应对象的骨骼模型的动画文件即记录有骨骼模型的信息。

步骤203:基于时间点的序列,在客户端的内存顺序加载所述动画文件集合中的动画文件,所加载的动画文件对应所述对象在不同时间序列点的动作。

对应所述对象在不同时间序列点的动作的动画文件,记录有所述对象在不同时间序列点的动作信息。

步骤204:解析所述客户端的内存加载的所述动画文件,生成包括所述对象的骨骼模型和动作的渲染对象。

步骤205:检测到对应动作的渲染对象的渲染时间到达,基于生成的渲染对象进行动画渲染,得到符合对象在目标时间序列点的动作的动画。

作为上述动画处理方法的一个可选实施例,图13示出了本发明实施例提供的动画处理方法的一个可选的流程示意图,本发明实施例的动画处理方法应用于终端,终端上设置有动画处理客户端,参见图13,本发明实施例提供的动画处理方法包括:

步骤301:终端发送动画播放请求给服务器。

在实际实施时,动画播放请求中可以携带动画的标识或名称等用于指示请求播放的动画的信息。

步骤302:接收服务器发送的动画文件集合。

这里,动画文件集合为对动画编辑器生成的骨骼动画文件进行拆分后得到的多个动画文件组成的集合,记录有对象(一个或多个)的动画信息。在本实施例中,对动画编辑器生成的骨骼动画文件的拆分可以由服务器侧实现,在另一些实施例中,亦可由终端获得服务器返回的骨骼动画文件后,自己实现文件的拆分。需要说明的是,在一些实施例中,在对骨骼动画文件中的动作数据进行拆分时,可以基于时间序列点进行拆分,即得到的对应动作的动画文件可以为一个时间序列点对应的一个或多个动作数据(可以理解为对象的动作对应多个时间序列点,每个时间序列点对应一个关键帧数据,每个时间序列点可对应多个碎片动作);在另一些实施例中,还可以是基于动作的不同属性特征进行拆分,即得到的对应动作的动画文件可以为对应对象的一个动作的动作数据。

在一实施例中,动画文件集合可以包括:对应对象的骨骼模型的动画文件及对应对象的动作的动画文件;

其中,对应对象的动作的动画文件包括:对象在不同时间序列点的各个动作的多个描述文件,在一实施方式中,动作的动画文件包括对应至少两个时间序列点的动作的描述文件;其中,对象在同一时间序列点的动作数据形成一个动作的描述文件,也即,同一时间序列点,对象的动作可以是一个包括多个动作的动作组合。

对应对象的骨骼模型的动画文件包括:对象的纹理贴图的贴图文件、对象的骨架信息的描述文件、以及对象的蒙皮信息的描述文件。

步骤303:在客户端的内存加载动画文件集合中对应对象的骨骼模型的动画文件。

在实际应用中,终端获得对象的动画文件集合后,确定动画文件集合中对应对象的骨骼模型的动画文件及对应对象的动作的动画文件;终端侧首先在内存中加载对象的纹理贴图的贴图文件、骨架信息的描述文件、以蒙皮信息的描述文件;如此,在不加载动作的描述文件的情况下,即仅加载对象的纹理贴图的贴图文件、骨架信息的描述文件、以蒙皮信息的描述文件,对加载的描述文件进行解析,生成渲染对象,然后进行动画渲染,可得到对应对象的静态模型。

在一些实施例中,内存中加载的贴图文件对应一种特定像素尺寸的纹理贴图的贴图文件,用于替代默认机制的多种像素尺寸的纹理贴图的贴图文件;例如,动画编辑器侧并不限制2的幂数,即不启用mipmap技术,如此,内存中无需再额外加载另外7张不同像素尺寸的纹理贴图,仅加载满足实际需求的一种特定像素尺寸的纹理贴图即可,大大减小了内存占用。

步骤304:基于时间点的序列,在客户端的内存加载第一个时间序列点的动作的描述文件及第二个时间序列点的动作的描述文件。

在实际实施时,对象的多个动作的描述文件对应多个不同的时间序列点(在一些实施例中,每个时间序列点对应一个动作的描述文件,每个动作的描述文件记载了对象的多个碎片动作数据),多个不同的时间序列点组成一个时间点序列。在一实施例中,对象的每个动作(如某一时间序列点对应的一个对象的碎片动作集合)均可进行有限次播放,即均可播放m次,m为正整数,如播放10次。

需要说明的是,在一实施例中,步骤303及步骤304可同时执行,即同时加载对象的骨骼模型的动画文件及对象的第一、第二时间序列点的动作的描述文件,如此,终端在进行动画渲染时,可得到对象具备上述两个动作描述文件对应的特征的动画。

步骤305:解析加载的动画文件,生成包括对象的骨骼模型和动作的渲染对象。

这里,在实际实施时,生成的包括对象的骨骼模型的渲染对象包括:骨架信息对应的渲染对象、蒙皮信息对应的渲染对象及贴图信息对应的渲染对象。

通过解析客户端的内存加载的动画文件,得到针对对象的装扮的空白贴图的声明,基于空白贴图的声明,生成与空白贴图相应大小的空白画布(canvas),在空白画布上绘制对应对象的装扮。相应的,若对对象进行换装操作,清除在空白画布上绘制的对应对象的所述装扮,在清除所绘制的装扮后的画布上绘制所述对象的更新的装扮。用户点击换装后,基于用户的换装指令,调用该指令对应装扮的描述文件进行装扮的重新绘制,实现对动画中对象s装扮的更换,需要说明的是,在一些实施例中,对象的换装可以不基于用户的换装指令完成,如在加载的对象的骨骼模型的动画文件中指示了在不同的时间序列点进行换装,则当时间到达时,自动执行换装操作,即清除画布上的装扮,重新绘制。

在一实施例中,加载的动画文件包括json文件和atlas文件,解析加载的json文件和atlas文件生成spine对象,以加入到容器里定时渲染,进行动画播放。

步骤306:检测到对应动作的渲染对象的渲染时间到达,基于生成的渲染对象进行动画渲染,得到符合对象目标时间序列点的动作的动画并播放。

这里,对渲染对象的渲染可以基于opengl图像操作接口,根据对象的骨架信息指示的特定骨架特征、蒙皮信息指示的纹理贴图的形变特征,对获取的渲染对象进行动画渲染,得到具有特定骨架特征及特定外部轮廓的动画对象。当渲染时刻到达时,将渲染时间与时间点序列中的时间序列点进行对齐,根据两个连续的时间序列点(关键帧时间)的时间差进行差值,形成动画对象符合目标时间序列点的动作的动画。

在实际实施时,当对内存加载的骨骼模型的动画文件及时间点序列中前两个时间序列点的动作的描述文件进行解析、渲染完成后,基于时间点的序列,在客户端的内存顺序加载除第一个时间序列点及第二个时间序列点之外的每个时间序列点的动画文件,也就是说,在内存中对动作数据的加载基于时间轴进行,按照时间点序列,顺序加载各个动作的描述文件,并在每次加载描述文件后进行动画渲染。

应用本发明上述实施例可以实现以下效果:

内存中对对象的动作数据的加载并未一次性加载全部动作数据,而是基于时间点序列,按需加载,如此,大大减少了对内存的占用;

内存中加载的对象的贴图为特定一种像素的贴图文件,而非八种不同像素大小的贴图文件,同样减少了对内存的占用;

内存中加载的对象的贴图去除了用于为对象的装扮进行占位的空白贴图,采用声明的方式声明同等大小的canvas进行装扮的绘制,同样减少了由于空白贴图的存在对内存的占用;

通过大大减少对内存的占用,使得页面播放更加流畅,避免了由于内存不足造成的页面黑屏、卡死等风险。

本发明实施例还提供了一种动画处理装置200,图14为本发明实施例提供的动画处理装置的示意图,如图14所示,所述装置包括:

获取模块11,用于获得记录有对象的动画信息的动画文件集合;

加载模块12,用于在客户端的内存加载所述动画文件集合中的动画文件,所加载的动画文件对应所述对象的骨骼模型;

以及,基于时间点的序列,在客户端的内存顺序加载所述动画文件集合中的动画文件,所加载的动画文件对应不同时间序列点的动作;

解析模块13,用于解析所述客户端的内存加载的所述动画文件,生成包括所述对象的骨骼模型和动作的渲染对象;

渲染模块14,用于检测到对应所述动作的渲染对象的渲染时刻到达,基于生成的所述渲染对象进行动画渲染,得到符合所述对象目标时间序列点的动作的动画。

在一实施例中,所述获取模块11,还用于获得包括所述对象的骨骼模型的动画文件及动作的动画文件的动画文件集合;

其中,所述动作的动画文件为从所述对象的动画模型数据中拆分得到,并且包括对应至少两个时间序列点的动作的描述文件。

在一实施例中,所述加载模块12,还用于基于时间点的序列,确定所述序列中第一个时间序列点的动作的描述文件,以及所述序列中第二个时间序列点的动作的描述文件;

在客户端的内存加载所述第一个时间序列点的动作的描述文件及所述第二个时间序列点的动作的描述文件。

在一实施例中,所述加载模块12,还用于获取所述动画文件集合中,除所述序列中第一个时间序列点及第二个时间序列点之外的时间序列点的动画文件;

基于时间点的序列,在所述客户端的内存顺序加载所获取的每个时间序列点的动画文件。

在一实施例中,所述加载模块12,还用于在所述客户端的内存加载所述对象的骨骼模型包括的纹理贴图的贴图文件、所述对象的骨骼模型包括的骨架信息的描述文件、以及所述对象的骨骼模型包括的蒙皮信息的描述文件。

在一实施例中,所述渲染模块14,还用于获取生成的所述渲染对象中骨架信息对应的渲染对象、蒙皮信息对应的渲染对象、以及加载的所述纹理贴图的贴图文件;

根据所述骨架信息指示的特定骨架特征、所述蒙皮信息指示的所述纹理贴图的形变特征,对获取的所述渲染对象进行动画渲染,得到具有特定骨架特征及特定外部轮廓的动画对象。

在一实施例中,所述加载模块12,还用于在所述客户端的内存,加载对应一种特定像素尺寸的纹理贴图的贴图文件,所述一种特定像素尺寸的纹理贴图的贴图文件,用于替代默认机制的多种像素尺寸的纹理贴图的贴图文件。

在一实施例中,所述解析模块13,还用于解析所述客户端的内存加载的动画文件,得到针对所述对象的装扮的空白贴图的声明;

相应的,所述装置还包括:

绘制模块15,用于基于所述空白贴图的声明,生成与所述空白贴图相应大小的空白画布;

在所述空白画布上绘制对应所述对象的装扮。

在一实施例中,所述绘制模块15,还用于清除在所述空白画布上绘制的对应所述对象的所述装扮;

在清除所绘制的所述装扮后的画布上绘制所述对象的更新的装扮。

需要说明的是:上述实施例提供的动画处理装置在进行动画处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的动画处理装置与动画处理方法实施例属于同一构思,动画处理装置的具体实现过程详见方法实施例,这里不再赘述。

本发明实施例还提供了一种可读存储介质,存储介质可以包括:移动存储设备、随机存取存储器(ram,randomaccessmemory)、只读存储器(rom,read-onlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。所述可读存储介质存储有可执行程序;

所述可执行程序,用于被处理器执行时实现:

获得记录有对象的动画信息的动画文件集合;

在客户端的内存加载所述动画文件集合中的动画文件,所加载的动画文件对应所述对象的骨骼模型;

基于时间点的序列,在客户端的内存顺序加载所述动画文件集合中的动画文件,所加载的动画文件对应不同时间序列点的动作;

解析所述客户端的内存加载的所述动画文件,生成包括所述对象的骨骼模型和动作的渲染对象;

检测到对应所述动作的渲染对象的渲染时刻到达,基于生成的所述渲染对象进行动画渲染,得到符合所述对象目标时间序列点的动作的动画。

所述可执行程序,还用于被处理器执行时实现:

获得包括所述对象的骨骼模型的动画文件及动作的动画文件的动画文件集合;

其中,所述动作的动画文件为从所述对象的动画模型数据中拆分得到的包括对应至少两个时间序列点的动作的描述文件。

所述可执行程序,还用于被处理器执行时实现:

基于时间点的序列,确定所述序列中第一个时间序列点的动作的描述文件,以及所述序列中第二个时间序列点的动作的描述文件;

在客户端的内存加载所述第一个时间序列点的动作的描述文件及所述第二个时间序列点的动作的描述文件。

所述可执行程序,还用于被处理器执行时实现:

获取所述动画文件集合中,除所述序列中第一个时间序列点及第二个时间序列点之外的时间序列点的动画文件;

基于时间点的序列,在所述客户端的内存顺序加载所获取的每个时间序列点的动画文件。

所述可执行程序,还用于被处理器执行时实现:

在所述客户端的内存加载所述对象的骨骼模型包括的纹理贴图的贴图文件、所述对象的骨骼模型包括的骨架信息的描述文件、以及所述对象的骨骼模型包括的蒙皮信息的描述文件。

所述可执行程序,还用于被处理器执行时实现:

获取生成的所述渲染对象中骨架信息对应的渲染对象、蒙皮信息对应的渲染对象、以及加载的所述纹理贴图的贴图文件;

根据所述骨架信息指示的特定骨架特征、所述蒙皮信息指示的所述纹理贴图的形变特征,对获取的所述渲染对象进行动画渲染,得到具有特定骨架特征及特定外部轮廓的动画对象。

所述可执行程序,还用于被处理器执行时实现:

在所述客户端的内存,加载对应一种特定像素尺寸的纹理贴图的贴图文件,所述一种特定像素尺寸的纹理贴图的贴图文件,用于替代默认机制的多种像素尺寸的纹理贴图的贴图文件。

所述可执行程序,还用于被处理器执行时实现:

解析所述客户端的内存加载的动画文件,得到针对所述对象的装扮的空白贴图的声明;

基于所述空白贴图的声明,生成与所述空白贴图相应大小的空白画布;

在所述空白画布上绘制对应所述对象的装扮。

所述可执行程序,还用于被处理器执行时实现:

清除在所述空白画布上绘制的对应所述对象的所述装扮;

在清除所绘制的所述装扮后的画布上绘制所述对象的更新的装扮。

本领域的技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储装置、随机存取存储器(ram,randomaccessmemory)、只读存储器(rom,read-onlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机、服务器、或者网络装置等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储装置、ram、rom、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1