CN112202751B - 动画的处理方法、装置、电子设备及存储介质 - Google Patents
动画的处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112202751B CN112202751B CN202011022432.4A CN202011022432A CN112202751B CN 112202751 B CN112202751 B CN 112202751B CN 202011022432 A CN202011022432 A CN 202011022432A CN 112202751 B CN112202751 B CN 112202751B
- Authority
- CN
- China
- Prior art keywords
- animation
- data
- playing
- target
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种动画的处理方法、装置、电子设备及存储介质;方法包括:依据播放顺序,依次加载目标动画对应的至少两个数据文件,每个所述数据文件包括所述目标动画的部分动画数据;分别对各所述数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放;其中,对于任意两个播放顺序相邻的第一数据文件及第二数据文件:在播放所述第一数据文件包括的部分动画数据的过程中,加载所述第二数据文件并进行所述逆向数据处理,以在播放完成所述第一数据文件包括的部分动画数据后,播放所述第二数据文件包括的部分动画数据;通过本发明,能够减少动画播放时所需的加载时间以及所占用的播放内存,提高用户体验。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种动画的处理方法、装置、电子设备及存储介质。
背景技术
相关技术中,动画在播放时,是以整个动画为单位,即每次播放都会加载整个动画资源。而当动画中存在大量的动画对象或者动作导致动画资源较大时,每个对象或者每个场景物体的动画实例化都会占用大量的内存、以及消耗大量的加载时间,导致动画播放卡顿严重,影响用户体验。
发明内容
本发明实施例提供一种动画的处理方法、装置、电子设备及存储介质,能够减少动画播放时所需的加载时间以及所占用的播放内存,提高用户体验。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种动画的处理方法,包括:
依据播放顺序,依次加载目标动画对应的至少两个数据文件,每个所述数据文件包括所述目标动画的部分动画数据;
分别对各所述数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放;
其中,对于任意两个播放顺序相邻的第一数据文件及第二数据文件:
在播放所述第一数据文件包括的部分动画数据的过程中,加载所述第二数据文件并进行所述逆向数据处理,以在播放完成所述第一数据文件包括的部分动画数据后,播放所述第二数据文件包括的部分动画数据.
本发明实施例还提供一种动画的处理装置,包括:
加载模块,用于依据播放顺序,依次加载目标动画对应的至少两个数据文件,每个所述数据文件包括所述目标动画的部分动画数据;
播放处理模块,用于分别对各所述数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放;
其中,对于任意两个播放顺序相邻的第一数据文件及第二数据文件:
在播放所述第一数据文件包括的部分动画数据的过程中,加载所述第二数据文件并进行所述逆向数据处理,以在播放完成所述第一数据文件包括的部分动画数据后,播放所述第二数据文件包括的部分动画数据。
上述方案中,所述装置还包括:
正向处理模块,用于获取所述目标动画的动画数据;
将所述动画数据划分为至少两个动画数据块;
分别对各所述动画数据块进行正向数据处理,得到所述目标动画对应的至少两个数据文件。
上述方案中,所述正向处理模块,还用于当所述动画数据块为播放顺序为第一位的目标动画数据块时,对所述目标动画数据块进行压缩处理,得到所述目标动画数据块对应的压缩数据;
获取存储有所述目标动画的基础播放信息的动画数据结构体;
将所述压缩数据填充至所述动画数据结构体,并序列化填充后的动画数据结构体得到所述目标动画数据块对应的数据文件。
上述方案中,所述正向处理模块,还用于获取所述目标动画的空对象;
将所述空对象及所述目标动画数据块进行压缩处理,得到所述目标动画数据块对应的压缩数据。
上述方案中,所述播放处理模块,还用于当所述数据文件为所述目标动画数据块对应的数据文件时,对所述目标动画数据块对应的数据文件进行反序列化处理,得到所述压缩数据;
对所述压缩数据进行解压缩处理,得到所述目标动画数据块包括的部分动画数据及所述动画数据结构体;
响应于针对所述目标动画的播放指令,基于所述动画数据结构体播放所述目标动画数据块包括的部分动画数据。
上述方案中,所述正向处理模块,还用于当所述动画数据块为播放顺序非第一位的任一动画数据块时,对所述动画数据块进行压缩处理,得到所述动画数据块对应的压缩数据;
将所述压缩数据进行序列化处理得到序列化数据;
基于所述序列化数据生成目标格式的对应所述动画数据块的数据文件。
上述方案中,所述加载模块,还用于获取所述目标动画对应的数据处理模式;
当所述目标动画对应的数据处理模式为流送功能模式时,依据播放顺序,依次加载目标动画对应的至少两个数据文件。
上述方案中,所述装置还包括:
呈现模块,用于呈现数据流送功能控件;
响应于针对所述数据流送功能控件的触发操作,控制所述目标动画的数据处理模式为流送功能模式。
上述方案中,所述播放处理模块,还用于通过第一线程播放所述第一数据文件包括的部分动画数据;
相应的,所述播放处理模块,还用于创建与所述第一线程异步的第二线程;
通过所述第二线程加载所述第二数据文件并进行所述逆向数据处理。
上述方案中,所述播放处理模块,还用于在播放所述第一数据文件包括的部分动画数据的过程中,检测是否接收到所述第二数据文件的加载请求;
当接收到所述第二数据文件的加载请求时,创建与所述第一线程异步的第二线程。
上述方案中,所述播放处理模块,还用于当对所述第一数据文件进行所述逆向数据处理,得到存储有所述目标动画的基础播放信息的动画数据结构体时,
将所述第二数据文件填充至所述动画数据结构体,以在得到所述第二数据文件包括的部分动画数据后,基于所述动画数据结构体播放所述第二数据文件包括的部分动画数据。
上述方案中,所述装置还包括:
释放模块,用于获取所述目标动画的播放时间;
确定所述播放时间距当前时间的时长;
当所述时长达到时长阈值时,释放内存中所述目标动画的动画数据。
本发明实施例还提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的动画的处理方法。
本发明实施例还提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时,实现本发明实施例提供的动画的处理方法。
本发明实施例具有以下有益效果:
在播放目标动画时,依据播放顺序,依次加载目标动画对应的、包含目标动画的部分动画数据的至少两个数据文件,并对加载的各数据文件进行逆向数据处理,得到数据文件中包含的部分动画数据以实现目标动画的播放;
这里,动画播放的过程中,针对任意两个播放顺序相邻的第一数据文件及第二数据文件,需要在播放第一数据文件包括的部分动画数据的过程中,加载第二数据文件并进行逆向数据处理,从而在播放完成第一数据文件包括的部分动画数据后,可直接播放第二数据文件包括的部分动画数据,避免了因目标动画过大导致动画加载时间太长或者卡顿的问题,同时降低动画播放时所占用的播放内存,提高用户体验。
附图说明
图1是本发明实施例提供的动画的处理方法的实施场景示意图;
图2是本发明实施例提供的电子设备的结构示意图;
图3是本发明实施例提供的动画的处理方法的流程示意图;
图4是本发明实施例提供的基于流送功能模式处理得到的动画数据结构的示意图;
图5是本发明实施例提供的目标动画的动画数据块的处理流程示意图;
图6是本发明实施例提供的动画的处理方法的流程示意图;
图7是本发明实施例提供的目标动画的播放流程示意图;
图8是本发明实施例提供的动画的处理装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
2)动画(Animation):指游戏中角色、动态物体的动作和活动表现。
3)动画序列(AnimSequence):指游戏中单个动画,复杂动画需要多个动画序列组成。
4)动画混合空间(BlendSpace):指根据多个输入的值混合任意数量动画的资源。
5)模型(Mesh):值游戏中的角色、物体的模型,动画正是不同时间改变模型的各部分位置达到视觉动态效果。
6)动画数据(AnimationData):指单个动画的具体数据,里面包括动画的长度,一段动画中各个时间点对应模型的位置等信息。
7)动画数据块(AnimDataChunk):指将动画数据分割成的一个个数据块。
8)块数据(BulkData):额外数据的集合成单独的文件,不会随着对象资源包一起序列化和反序列化,通常用于存储一些资源数据。
9)对象(Object):指程序运行中的一个个实体,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
10)序列化(Serialization):序列化是将对象的状态信息转换为可以存储或传输的形式的过程,反序列化反之。
基于上述对本发明实施例中涉及的名词和术语的解释,下面说明本发明实施例提供的动画的处理方法的实施场景,参见图1,图1是本发明实施例提供的动画的处理方法的实施场景示意图,为实现支撑一个示例性应用,终端200(包括终端200-1和终端200-2),通过网络300连接服务器100,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。
终端200(包括终端200-1和终端200-2),用于向服务器发送获取目标动画的动画数据获取请求;
服务器100,用于响应于该动画数据获取请求,返回目标动画的动画数据;
终端200(包括终端200-1和终端200-2),还用于接收返回的动画数据,将动画数据划分并保存为、包括目标动画的部分动画数据的至少两个数据文件;依据播放顺序,依次加载目标动画对应的至少两个数据文件;分别对各数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放。
具体地,终端在播放目标动画时,针对任意两个播放顺序相邻的第一数据文件及第二数据文件:在播放第一数据文件包括的部分动画数据的过程中,加载第二数据文件并进行逆向数据处理,以在播放完成第一数据文件包括的部分动画数据后,播放第二数据文件包括的部分动画数据,能够减少动画播放时所需的加载时间以及所占用的播放内存,提高用户体验。
在实际应用中,服务器100可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端200可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本发明在此不做限制。
下面对本发明实施例提供的动画的处理方法的电子设备的硬件结构做详细说明,电子设备包括但不限于服务器或终端。参见图2,图2是本发明实施例提供的电子设备的结构示意图,图2所示的电子设备400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。电子设备400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Me mory),易失性存储器可以是随机存取存储器(RAM,Random Access Memor y)。本发明实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本发明实施例提供的动画的处理装置可以采用软件方式实现,图2示出了存储在存储器450中的动画的处理装置455,其可以是程序和插件等形式的软件,包括以下软件模块:加载模块4551和播放处理模块4552,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
在另一些实施例中,本发明实施例提供的动画的处理装置可以采用软硬件结合的方式实现,作为示例,本发明实施例提供的动画的处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的动画的处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application SpecificIntegrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Comp lex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programm able Gate Array)或其他电子元件。
基于上述对本发明实施例的动画的处理方法的实施场景及电子设备的说明,下面说明本发明实施例提供的动画的处理方法。参见图3,图3是本发明实施例提供的动画的处理方法的流程示意图;在一些实施例中,该动画的处理方法可由服务器或终端单独实施,或由服务器及终端协同实施,以终端实施为例,本发明实施例提供的动画的处理方法包括:
步骤301:终端依据播放顺序,依次加载目标动画对应的至少两个数据文件。
这里,在本发明实施例中,将目标动画的动画数据划分存储为多个数据文件,其中,每个数据文件包括目标动画的部分动画数据。
在实际应用中,终端在播放目标动画时,需要根据播放顺序,依次加载目标动画对应的每个数据文件,从而基于每个数据文件中所包括的目标动画的部分动画数据进行动画播放。
在一些实施例中,终端可通过如下方式得到目标动画对应的至少两个数据文件:获取目标动画的动画数据;将动画数据划分为至少两个动画数据块;分别对各动画数据块进行正向数据处理,得到目标动画对应的至少两个数据文件。
在实际应用中,可以首先获取目标动画的动画数据,然后将动画数据进行划分,得到至少两个动画数据块;分别对各动画数据块进行正向数据处理,比如序列化处理、存储处理等,从而得到目标动画对应的多个数据文件。
在实际实施时,可通过如下方式对目标动画的动画数据进行划分:针对目标动画,预先设置每个动画数据块分割后所对应的动画帧数或者时长;从而根据预先设置的每个动画数据块所对应的动画帧数或者时长,对目标动画的动画数据进行分割,以得到对应的多个动画数据块。
举例来说,比如可以预先设置每个动画数据块分割后所对应的动画时长,那么当目标动画的总时长为2s时,可以按照播放顺序,对目标动画的动画数据依次进行划分,得到0.2s的一号动画数据块、0.3s的二号动画数据块等等。参见图4,图4是本发明实施例提供的基于流送功能模式处理得到的动画数据结构的示意图。这里,包括目标动画的空对象以及前几帧动画数据构成的一号ch unk数据、存储为BulkData文件的二号chunk数据、三号chunk数据等,其中空对象只包含目标动画的动画基础数据,如目标动画的时长、起始帧等。
在一些实施例中,终端可通过如下方式分别对各动画数据块进行正向数据处理:当动画数据块为播放顺序为第一位的目标动画数据块时,对目标动画数据块进行压缩处理,得到目标动画数据块对应的压缩数据;获取存储有目标动画的基础播放信息的动画数据结构体;将压缩数据填充至动画数据结构体,并序列化填充后的动画数据结构体得到目标动画数据块对应的数据文件。
在一些实施例中,终端可通过如下方式对目标动画数据块进行压缩处理:获取目标动画的空对象;将空对象及目标动画数据块进行压缩处理,得到目标动画数据块对应的压缩数据。
在实际应用中,针对处于不同播放顺序的动画数据块可以采用不同的正向数据处理方式,接下来进行分别说明。
当动画数据块为播放顺序为第一位的目标动画数据块时,首先对该目标动画数据块进行压缩处理,得到目标动画数据块对应的压缩数据;在实际应用中,该处于播放顺序为第一位的目标动画数据块即为目标动画播放时所对应的前几帧动画数据。因此在压缩处理时,还需要获取目标动画的空对象,然后将空对象以及目标动画数据块进行压缩处理,得到目标动画数据块对应的压缩数据。需要说明的是,该空对象即为目标动画对应的空壳对象,用于存储目标动画的动画对象基础数据,比如目标动画的时长、起始帧、起始时间等。
然后获取目标动画的动画数据结构体,该动画数据结构体用于存储待播放的动画数据。由于目标动画数据块的播放顺序为第一位,此时则需要直接将目标动画数据块对应的压缩数据填充到动画数据结构体中,并序列化填充后的动画数据结构体以得到目标动画数据块对应的数据文件,将得到的数据文件加载至内存中等待播放。这里,需要说明的是,该目标动画数据块对应的数据文件为动画文件。
这里,当播放顺序为第一位的目标动画数据块(即一号动画数据块)的动画帧数或者时长小于目标动画的动画帧数或总时长时,此时目标动画还对应有其他动画数据块(即二号动画数据块、三号动画数据块等等)。此时将目标动画对应的其他动画数据块确定为播放顺序处于非第一位的任一动画数据块。
在一些实施例中,终端还可通过如下方式分别对各动画数据块进行正向数据处理:当动画数据块为播放顺序非第一位的任一动画数据块时,对动画数据块进行压缩处理,得到动画数据块对应的压缩数据;将压缩数据进行序列化处理得到序列化数据;基于序列化数据生成目标格式的对应动画数据块的数据文件。
当动画数据块为播放顺序非第一位的任一动画数据块时,对各动画数据块进行压缩处理,得到动画数据块对应的压缩数据;然后将压缩数据进行序列化处理得到序列化数据,从而基于得到的序列化数据生成目标格式的对应相应动画数据块的数据文件。在实际实施时,可以将处于播放顺序非第一位的任一动画数据块,经过压缩处理和序列化处理后生成并存储为BulkData文件,以降低动画播放时动画数据所占的播放内存。
具体地,参见图5,图5是本发明实施例提供的目标动画的动画数据块的处理流程示意图。这里,是根据目标动画的帧数对动画数据进行划分得到的多个动画数据块。主要包括:
步骤501,根据目标动画的帧数将动画数据划分为多个动画数据块chunk;
步骤502,判断播放顺序为第一位的动画数据块(即一号动画数据块chun k)的帧数是否大于帧数阈值(比如,该帧数阈值可以是目标动画的总帧数),若否,则执行步骤504;若是,则执行步骤503;
步骤503:将播放顺序为非第一位的动画数据块(即二号动画数据块以及随后的动画数据块chunk)保存为BulkData文件;
步骤504:将播放顺序为第一位的动画数据块(即一号动画数据块chunk)随动画对象一起保存为动画文件,等待播放。
在一些实施例中,终端可通过如下方式依次加载目标动画对应的至少两个数据文件:获取目标动画对应的数据处理模式;当目标动画对应的数据处理模式为流送功能模式时,依据播放顺序,依次加载目标动画对应的至少两个数据文件。
在一些实施例中,终端可通过如下方式控制目标动画的数据处理模式为流送功能模式:呈现数据流送功能控件;响应于针对数据流送功能控件的触发操作,控制目标动画的数据处理模式为流送功能模式。
这里,在本发明实施例中,针对目标动画的数据处理模式设置了流送功能模式,该流送功能模式,用于将目标动画的动画数据划分为多个数据文件,从而在动画播放时,依据播放顺序,依次加载目标动画的各数据文件,使得在播放完成处于第一位的目标动画数据块后,直接从动画数据结构体中取用处于第二位的动画数据块所包含的部分动画数据,以实现处于第二位的动画数据块的播放。
在实际应用中,终端还可呈现用于管理流送功能模式的数据流送功能控件。当接收到针对该数据流送功能控件的触发操作时,响应于该触发操作,控制目标动画的数据处理模式为流送功能模式。基于此,当播放目标动画时,需要获取目标动画对应的数据处理模式;当目标动画对应的数据处理模式为流送功能模式时,依据播放顺序,依次加载目标动画对应的至少两个数据文件。
步骤302:分别对各数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放。
这里,在实际应用中,针对加载得到的目标动画的各数据文件进行逆向处理,比如反序列化处理、解压处理等,得到相应数据文件中包括的部分动画数据并播放。具体地,对于任意两个播放顺序相邻的第一数据文件及第二数据文件:在播放第一数据文件包括的部分动画数据的过程中,加载第二数据文件并进行逆向数据处理,以在播放完成第一数据文件包括的部分动画数据后,播放第二数据文件包括的部分动画数据。
在一些实施例中,针对处于播放顺序为第一位的目标动画数据块,终端可通过如下方式分别对各数据文件进行逆向数据处理:当数据文件为目标动画数据块对应的数据文件时,对目标动画数据块对应的数据文件进行反序列化处理,得到压缩数据;对压缩数据进行解压缩处理,得到目标动画数据块包括的部分动画数据及动画数据结构体;响应于针对目标动画的播放指令,基于动画数据结构体播放目标动画数据块包括的部分动画数据。
在实际应用中,当数据文件为目标动画数据块对应的数据文件时,对目标动画数据块对应的数据文件进行反序列化处理,得到压缩数据;对压缩数据进行解压缩处理,得到目标动画数据块包括的部分动画数据及动画数据结构体,从而在接收到针对目标动画的播放指令时,响应于该播放指令,基于动画数据结构体播放目标动画数据块包括的部分动画数据。
在一些实施例中,终端可通过第一线程播放第一数据文件包括的部分动画数据。同时,在通过第一线程播放第一数据文件包括的部分动画数据的过程中,还需要检测是否接收到第二数据文件的加载请求;当接收到第二数据文件的加载请求时,创建与第一线程异步的第二线程。
在实际应用中,终端在播放第一数据文件包括的部分动画数据的过程中,需要请求加载接下来要播放的第二数据文件,以避免中间出现播放卡顿的情况,此时需要对是否接收到加载请求进行检测。当检测到已接收到第二数据文件的加载请求时,创建与第一线程异步的第二线程。相应的,终端通过第二线程加载第二数据文件并进行逆向数据处理,以得到第二数据文件包括的部分动画数据。
在一些实施例中,终端可通过如下方式播放第二数据文件包括的部分动画数据:当对第一数据文件进行逆向数据处理,得到目标动画的动画数据结构体时,将第二数据文件填充至动画数据结构体,以在得到第二数据文件包括的部分动画数据后,基于动画数据结构体播放第二数据文件包括的部分动画数据。
这里,当终端通过第二线程加载第二数据文件并进行逆向数据处理,得到第二数据文件包括的部分动画数据后,将第二数据文件包括的部分动画数据填充到动画数据结构体中,以等待第一数据文件包括的部分动画数据播放完成后,直接从动画数据结构体中取用第二数据文件包括的部分动画数据,以实现处于第二数据文件包括的部分动画数据的播放。
在一些实施例中,终端可通过如下方式释放内存中目标动画的动画数据:获取目标动画的播放时间;确定播放时间距当前时间的时长;当时长达到时长阈值时,释放内存中目标动画的动画数据。
这里,在实际应用中,终端还可以获取目标动画的播放时间,比如目标动画的播放初始时间或者播放结束时间等。然后确定播放时间距离当前时间的时长,当该时长达到时长阈值之后,即一段时间内某个目标动画没有播放过,则卸载掉这个目标动画的动画数据以释放内存。
应用本发明上述实施例,在播放目标动画时,依据播放顺序,依次加载目标动画对应的、包含目标动画的部分动画数据的至少两个数据文件,并对加载的各数据文件进行逆向数据处理,得到数据文件中包含的部分动画数据以实现目标动画的播放;
这里,动画播放的过程中,针对任意两个播放顺序相邻的第一数据文件及第二数据文件,需要在播放第一数据文件包括的部分动画数据的过程中,加载第二数据文件并进行逆向数据处理,从而在播放完成第一数据文件包括的部分动画数据后,可直接播放第二数据文件包括的部分动画数据,避免了因目标动画过大导致动画加载时间太长或者卡顿的问题,同时降低动画播放时所占用的播放内存,提高用户体验。
下面将说明本发明实施例在一个实际的应用场景中的示例性应用。
现有方案中,游戏中实现是以整个动画序列为单位,即每次都会加载整个动画资源。而在大型游戏中,存在大量的动画对象,随时都可能有瞬时间的动画并发加载和数量较大的动画内存占用,并且会随着人数、动作数量的增加而增长。在现有的技术中,动画的加载都是整体化,每个角色、每个场景物体的动画实例化都会占用大量的内存和时间,特别是在大制作游戏中,多个角色同屏会有明显的卡顿现象和内存空间占用过大问题。
基于此,本发明实施例提供一种动画的处理方法,以至少解决上述存在的问题,接下来进行详细说明。下面首先说明本发明实施例提供的动画的处理方法中涉及的关键术语,包括:
1)动画(Animation):指游戏中角色、动态物体的动作和活动表现。
2)动画序列(AnimSequence):指游戏中单个动画,复杂动画需要多个动画序列组成。
3)动画混合空间(BlendSpace):指根据多个输入的值混合任意数量动画的资源。
4)模型(Mesh):值游戏中的角色、物体的模型,动画正是不同时间改变模型的各部分位置达到视觉动态效果。
5)动画数据(AnimationData):指单个动画的具体数据,里面包括动画的长度,一段动画中各个时间点对应模型的位置等信息。
6)动画数据块(AnimDataChunk):指将动画数据分割成的一个个数据块。
7)块数据(BulkData):额外数据的集合成单独的文件,不会随着对象资源包一起序列化和反序列化,通常用于存储一些资源数据。
8)对象(Object):指程序运行中的一个个实体,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
9)序列化(Serialization):序列化是将对象的状态信息转换为可以存储或传输的形式的过程,反序列化反之。
10)虚幻引擎,是一个面向下一代游戏机和DirectX9个人电脑的完整的游戏开发平台,提供了游戏开发者需要的大量的核心技术、数据生成工具和基础支持。
基于上述对本发明实施例中涉及的名词和术语的解释,下面说明本发明实施例提供的动画的处理方法。本发明针对基于虚幻引擎的游戏的动画数据加载和内存问题,设计了一套流送加载和内存管理方案。针对动画序列的播放,采用生产者/消费者模式思想,在运行时,动画对象(消费者)即将对特定动画数据有需求时,向动画管理对象(生产者)请求数据,动画管理对象负责加载出这些数据并放在自身的一块内存中供动画对象取用,同时负责管理这块内存,在数据过期时(不再被需求时)把它清理掉不再占用内存。参见图6,图6是本发明实施例提供的动画的处理方法的流程示意图,包括:
步骤601:终端向服务器发送获取目标动画的动画数据获取请求。
这里,该终端设置有用于开发的虚幻引擎,通过虚幻引擎向服务器发送获取目标动画的动画数据获取请求。
步骤602:服务器响应于该动画数据获取请求,返回目标动画的动画数据。
步骤603:接收到服务器返回的目标动画的动画数据,将获取的动画数据划分为至少两个动画数据块。
这里,在实际应用中,针对待播放目标动画的动画序列,获取目标动画的动画数据,将获取的动画数据分割成多个动画数据块。具体地,可以根据具体需求(如目标动画的时长或者帧数)对目标动画的动画数据进行分割,得到多个动画数据块。
举例来说,比如可以预先设置每个动画数据块分割后所对应的动画时长,那么当目标动画的总时长为2s时,可以按照播放顺序,对目标动画的动画数据依次进行划分,得到0.2s的一号动画数据块、0.3s的二号动画数据块等等。参见图4,图4是本发明实施例提供的基于流送功能模式处理得到的动画数据结构的示意图。这里,包括目标动画的空对象以及前几帧动画数据构成的一号ch unk数据、存储为BulkData文件的二号chunk数据、三号chunk数据等,其中空对象只包含目标动画的动画基础数据,如目标动画的时长、起始帧等。
步骤604:当动画数据块为播放顺序为第一位的目标动画数据块时,对目标动画数据块进行压缩处理,得到目标动画数据块对应的压缩数据。
这里,播放顺序为第一位的目标动画数据块即为目标动画播放时所对应的前几帧动画数据。
步骤605:将压缩数据填充至动画数据结构体,与动画对象一起序列化得到相应的动画文件并保存。
这里,在实际应用中,对处于第一位的目标动画数据块进行压缩时,需要获取目标动画的空对象,然后将空对象及处于第一位的目标动画数据块进行压缩处理,得到目标动画数据块对应的压缩数据。并将压缩数据填充到动画数据结构体,与动画对象一起序列化得到相应的动画文件并保存。这里,在目标动画的空对象中还存储有目标动画的动画对象基础数据,比如目标动画的时长、起始帧、起始时间等。
步骤606:当动画数据块为播放顺序非第一位的任一动画数据块时,对动画数据块进行压缩处理,得到动画数据块对应的压缩数据。
这里,当播放顺序为第一位的目标动画数据块(即一号动画数据块)的动画帧数或者时长小于目标动画的动画帧数或时长时,此时目标动画还对应有其他动画数据块,即二号动画数据块、三号动画数据块等等。将该目标动画对应的其他动画数据块确定为播放顺序非第一位的任一动画数据块。
针对播放顺序非第一位的任一动画数据块,对动画数据块进行压缩处理,得到相应动画数据块对应的压缩数据。
步骤607:将压缩数据进行序列化处理得到序列化数据,基于序列化数据生成目标格式的对应动画数据块的数据文件。
这里,在实际应用中,对任一动画数据块所对应的压缩数据进行序列化处理得到序列化数据,将得到的序列号数据生成BulkData文件并保存。
具体地,参见图5,图5是本发明实施例提供的目标动画的动画数据块的处理流程示意图。这里,是根据目标动画的帧数对动画数据进行划分得到的多个动画数据块。主要包括:步骤501,根据目标动画的帧数将动画数据划分为多个动画数据块chunk;步骤502,判断播放顺序为第一位的动画数据块(即一号动画数据块chunk)的帧数是否大于帧数阈值(比如,该帧数阈值可以是目标动画的总帧数),若否,则执行步骤504;若是,则执行步骤503;步骤503:将播放顺序为非第一位的动画数据块(即二号动画数据块以及随后的动画数据块chunk)保存为BulkData文件;步骤504:将播放顺序为第一位的动画数据块(即一号动画数据块chunk)随动画对象一起保存为动画文件,等待播放。
步骤608:依据播放顺序,依次加载目标动画对应的动画数据块包含的部分动画数据。
步骤609:分别对各动画数据块对应的数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放。
参见图7,图7是本发明实施例提供的目标动画的播放流程示意图。包括:
步骤701:针对处于播放顺序为第一位的目标动画数据块(一号动画数据块chunk),可与动画对象同时加载;
步骤702:加载完成后直接进行反序列化处理,得到处于第一位的目标动画数据块包含的目标动画的部分动画数据以及动画对象基础数据;
步骤703:将反序列化得到的动画对象注册到动画管理对象中;
步骤704:当接收到针对目标动画的播放指令时,触发目标动画的播放,即播放处于第一位的目标动画数据块包含的动画数据;
步骤705:判断目标动画是否处于播放状态:若否,则返回步骤704;若是,则执行步骤706;
步骤706:在播放处于第一位的目标动画数据块的过程中,向动画管理对象发送处于第二位的动画数据块的加载请求;动画管理对象检测到已接收到处于第二位的动画数据块的加载请求,开启异步子线程加载处于第二位的动画数据块对应的BulkData文件,并在加载完成后,将处于第二位的动画数据块所包含的部分动画数据填充到动画数据结构体中,以等待动画对象在播放完成处于第一位的目标动画数据块后,直接从动画数据结构体中取用处于第二位的动画数据块所包含的部分动画数据,以实现处于第二位的动画数据块的播放。
步骤707:判断目标动画是否播放完成:若否,则返回步骤706;若是,则执行步骤708。
步骤708:动画管理对象实时监测目标动画是否超时未访问:若是,则执行步骤709;若否,则执行步骤710。
步骤709:卸载目标动画的动画数据;
动画管理对象记录每个目标动画上次播放时的访问时间,在该播放时的访问时间距离当前时间的时长超出时长阈值之后,即一段时间内某个目标动画没有播放过,则卸载掉这个目标动画的动画数据以释放内存。
步骤710:继续保存此目标动画的动画数据,等待访问。
在实际应用中,还可以设置用于控制数据流送功能模式的功能控件,当接收到针对该数据流送功能控件的触发操作时,响应于该触发操作,控制目标动画的数据处理模式为流送功能模式。
在实际实施时,可以针对流送功能模式配置功能开关(即数据流送功能控件),如此可以适配原生的AnimSequence,不改变原有动画压缩、运行等流程,实现新旧数据处理模式之间的一键切换。
应用本发明上述实施例,大大提升了动画初始化性能以及节省内存占用。以游戏动画为例,在正常的虚拟战斗中,单个客户端约有动画对象900个,节省内存约10MB,在客户端有多个玩家进入视野时动画端加载耗时明显减少。参见下表1:
使用本方案前 | 使用本方案后 | |
客户端内存占用(兆) | 19 | 9 |
动画初始化时间(毫秒) | 200 | 80 |
表1
除了在版本运行时,本发明实施例提供的动画的处理方法同样适配于编辑器流程,压缩解压算法适应不同版本,可做到编辑器调试流送动画、流送动画和原有动画流程一键切换,极大方便了调试流程。
另外,在动画播放一号Chunk时会请求加载二号,因此配置一号Chunk时长时,关系到二号Chunk加载时间。一号Chunk过大会导致加载变慢,动画对象占用内存变大,而过小又会导致二号Chunk加载时间不够,因此需要做出一个权衡。在项目中,我们选择配置一号Chunk的时长为0.2s,帧数为6帧左右,实践无发现有动画异常表现。
另外,考虑到特殊情况:
一、在低端机型上运行时,极端情况还是可能存在播放到二号Chunk数据时但还未加载完成的情况,针对这种情况,当播放到对应Chunk但未加载完成时,强制等待此动画Chunk加载完成,之后再继续播放,因此理论上可能会存在瞬时的卡顿,但这是避免错误动画播放的一种保护措施,本项目测试中并未发现。
二、在BlendSpace做混合时,有时可能直接取一个AnimSequence的后部帧数据作为输入,这时如果在动画管理对象中此AnimSequence的Chunk数据没被加载过或是已经被释放,则取不到正确的输入数据,此时会用一号Chunk的末尾帧数据参与计算,同时等待Chunk数据加载,而当加载超过一定时间(可配置)时还没加载完此Chunk,则会强制等待加载完成,同样在理论上会存在瞬时的卡顿,但这是一种保护措施,本项目测试中并未发现有明显异常。
应用本发明上述实施例,提供一种基于虚幻引擎的动画流送管理方式,将动画数据划分为多个动画数据块进行存储和使用,并对所有动画数据进行加载和卸载的管理,解决了短时间加载多个动画导致的卡顿问题和大量动画占用内存过大的问题,能够使加载动画的初始化时间大大减少,动画对象所占用内存也得到改善。
下面继续说明本发明实施例提供的动画的处理装置455,在一些实施例中,动画的处理装置可采用软件模块的方式实现。参见图8,图8是本发明实施例提供的动画的处理装置455的结构示意图,本发明实施例提供的动画的处理装置455包括:
加载模块4551,用于依据播放顺序,依次加载目标动画对应的至少两个数据文件,每个所述数据文件包括所述目标动画的部分动画数据;
播放处理模块4552,用于分别对各所述数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放;
其中,对于任意两个播放顺序相邻的第一数据文件及第二数据文件:
在播放所述第一数据文件包括的部分动画数据的过程中,加载所述第二数据文件并进行所述逆向数据处理,以在播放完成所述第一数据文件包括的部分动画数据后,播放所述第二数据文件包括的部分动画数据。
在一些实施例中,所述装置还包括:
正向处理模块,用于获取所述目标动画的动画数据;
将所述动画数据划分为至少两个动画数据块;
分别对各所述动画数据块进行正向数据处理,得到所述目标动画对应的至少两个数据文件。
在一些实施例中,所述正向处理模块,还用于当所述动画数据块为播放顺序为第一位的目标动画数据块时,对所述目标动画数据块进行压缩处理,得到所述目标动画数据块对应的压缩数据;
获取存储有所述目标动画的基础播放信息的动画数据结构体;
将所述压缩数据填充至所述动画数据结构体,并序列化填充后的动画数据结构体得到所述目标动画数据块对应的数据文件。
在一些实施例中,所述正向处理模块,还用于获取所述目标动画的空对象;
将所述空对象及所述目标动画数据块进行压缩处理,得到所述目标动画数据块对应的压缩数据。
在一些实施例中,所述播放处理模块4552,还用于当所述数据文件为所述目标动画数据块对应的数据文件时,对所述目标动画数据块对应的数据文件进行反序列化处理,得到所述压缩数据;
对所述压缩数据进行解压缩处理,得到所述目标动画数据块包括的部分动画数据及所述动画数据结构体;
响应于针对所述目标动画的播放指令,基于所述动画数据结构体播放所述目标动画数据块包括的部分动画数据。
在一些实施例中,所述正向处理模块,还用于当所述动画数据块为播放顺序非第一位的任一动画数据块时,对所述动画数据块进行压缩处理,得到所述动画数据块对应的压缩数据;
将所述压缩数据进行序列化处理得到序列化数据;
基于所述序列化数据生成目标格式的对应所述动画数据块的数据文件。
在一些实施例中,所述加载模块4551,还用于获取所述目标动画对应的数据处理模式;
当所述目标动画对应的数据处理模式为流送功能模式时,依据播放顺序,依次加载目标动画对应的至少两个数据文件。
在一些实施例中,所述装置还包括:
呈现模块,用于呈现数据流送功能控件;
响应于针对所述数据流送功能控件的触发操作,控制所述目标动画的数据处理模式为流送功能模式。
在一些实施例中,所述播放处理模块4552,还用于通过第一线程播放所述第一数据文件包括的部分动画数据;
相应的,所述播放处理模块,还用于创建与所述第一线程异步的第二线程;
通过所述第二线程加载所述第二数据文件并进行所述逆向数据处理。
在一些实施例中,所述播放处理模块4552,还用于在播放所述第一数据文件包括的部分动画数据的过程中,检测是否接收到所述第二数据文件的加载请求;
当接收到所述第二数据文件的加载请求时,创建与所述第一线程异步的第二线程。
在一些实施例中,所述播放处理模块4552,还用于当对所述第一数据文件进行所述逆向数据处理,得到存储有所述目标动画的基础播放信息的动画数据结构体时,
将所述第二数据文件填充至所述动画数据结构体,以在得到所述第二数据文件包括的部分动画数据后,基于所述动画数据结构体播放所述第二数据文件包括的部分动画数据。
在一些实施例中,所述装置还包括:
释放模块,用于获取所述目标动画的播放时间;
确定所述播放时间距当前时间的时长;
当所述时长达到时长阈值时,释放内存中所述目标动画的动画数据。
应用本发明上述实施例,在播放目标动画时,依据播放顺序,依次加载目标动画对应的、包含目标动画的部分动画数据的至少两个数据文件,并对加载的各数据文件进行逆向数据处理,得到数据文件中包含的部分动画数据以实现目标动画的播放;
这里,动画播放的过程中,针对任意两个播放顺序相邻的第一数据文件及第二数据文件,需要在播放第一数据文件包括的部分动画数据的过程中,加载第二数据文件并进行逆向数据处理,从而在播放完成第一数据文件包括的部分动画数据后,可直接播放第二数据文件包括的部分动画数据,避免了因目标动画过大导致动画加载时间太长或者卡顿的问题,同时降低动画播放时所占用的播放内存,提高用户体验。
本发明实施例还提供一种电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的动画的处理方法。
本发明实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本发明实施例提供的动画的处理方法。
本发明实施例还提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时,实现本发明实施例提供的动画的处理方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EP ROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。计算机可以是包括智能终端和服务器在内的各种计算设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(H TML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (11)
1.一种动画的处理方法,其特征在于,应用于游戏场景,所述方法包括:
获取目标动画的空对象,其中,所述空对象用于存储目标动画的动画对象基础数据;
其中,所述动画对象基础数据包括以下至少之一:所述目标动画的时长、起始帧、起始时间;
对至少两个动画数据块中、播放顺序为第一位的第一动画数据块,以及所述空对象进行压缩处理,得到所述第一动画数据块对应的压缩数据;
将所述压缩数据填充至存储有所述目标动画的基础播放信息的动画数据结构体;并对填充后的动画数据结构体进行序列化处理,得到所述第一动画数据块对应的数据文件;
对至少两个所述动画数据块中、播放顺序为非第一位的任一第二动画数据块进行压缩处理,得到所述第二动画数据块对应的压缩数据;对所述第二动画数据块对应的压缩数据进行序列化处理得到序列化数据;基于所述序列化数据,生成所述第二动画数据块对应的块数据格式的数据文件;
依据所述播放顺序,依次加载各所述动画数据块对应的数据文件,每个所述数据文件包括所述目标动画的部分动画数据;
分别对各所述数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放;
其中,对于任意两个播放顺序相邻的第一数据文件及第二数据文件:
在播放所述第一数据文件包括的部分动画数据的过程中,加载所述第二数据文件,并对所述第一数据文件进行所述逆向数据处理,得到存储有所述目标动画的基础播放信息的动画数据结构体;
在播放完成所述第一数据文件包括的部分动画数据后,将所述第二数据文件包括的部分动画数据填充至所述动画数据结构体,基于所述动画数据结构体播放所述第二数据文件包括的部分动画数据。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述目标动画的动画数据;
将所述动画数据划分为至少两个动画数据块,得到所述目标动画对应的至少两个动画数据块。
3.如权利要求1所述的方法,其特征在于,所述分别对各所述数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放,包括:
当所述数据文件为所述目标动画数据块对应的数据文件时,对所述目标动画数据块对应的数据文件进行反序列化处理,得到所述压缩数据;
对所述压缩数据进行解压缩处理,得到所述目标动画数据块包括的部分动画数据及所述动画数据结构体;
响应于针对所述目标动画的播放指令,基于所述动画数据结构体播放所述目标动画数据块包括的部分动画数据。
4.如权利要求1所述的方法,其特征在于,所述依据所述播放顺序,依次加载各所述动画数据块对应的数据文件,包括:
获取所述目标动画对应的数据处理模式;
当所述目标动画对应的数据处理模式为流送功能模式时,依据所述播放顺序,依次加载各所述动画数据块对应的数据文件。
5.如权利要求4所述的方法,其特征在于,所述获取所述目标动画对应的数据处理模式之前,所述方法还包括:
呈现数据流送功能控件;
响应于针对所述数据流送功能控件的触发操作,控制所述目标动画的数据处理模式为流送功能模式。
6.如权利要求1所述的方法,其特征在于,所述播放所述第一数据文件包括的部分动画数据,包括:
通过第一线程播放所述第一数据文件包括的部分动画数据;
相应的,所述加载所述第二数据文件并进行所述逆向数据处理,包括:
创建与所述第一线程异步的第二线程;
通过所述第二线程加载所述第二数据文件并进行所述逆向数据处理。
7.如权利要求6所述的方法,其特征在于,所述创建与所述第一线程异步的第二线程,包括:
在播放所述第一数据文件包括的部分动画数据的过程中,检测是否接收到所述第二数据文件的加载请求;
当接收到所述第二数据文件的加载请求时,创建与所述第一线程异步的第二线程。
8.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述目标动画的播放时间;
确定所述播放时间距当前时间的时长;
当所述时长达到时长阈值时,释放内存中所述目标动画的动画数据。
9.一种动画的处理装置,其特征在于,应用于游戏场景,所述装置包括:
正向处理模块,用于获取目标动画的空对象,其中,所述空对象用于存储目标动画的动画对象基础数据;其中,所述动画对象基础数据包括以下至少之一:所述目标动画的时长、起始帧、起始时间;对至少两个动画数据块中、播放顺序为第一位的第一动画数据块,以及所述空对象进行压缩处理,得到所述第一动画数据块对应的压缩数据;将所述压缩数据填充至存储有所述目标动画的基础播放信息的动画数据结构体;并对填充后的动画数据结构体进行序列化处理,得到所述第一动画数据块对应的数据文件;
对至少两个所述动画数据块中、播放顺序为非第一位的任一第二动画数据块进行压缩处理,得到所述第二动画数据块对应的压缩数据;对所述第二动画数据块对应的压缩数据进行序列化处理得到序列化数据;基于所述序列化数据,生成所述第二动画数据块对应的块数据格式的数据文件;
加载模块,用于依据所述播放顺序,依次加载各所述动画数据块对应的数据文件,每个所述数据文件包括所述目标动画的部分动画数据;
播放处理模块,用于分别对各所述数据文件进行逆向数据处理,得到相应数据文件包括的部分动画数据并播放;
其中,对于任意两个播放顺序相邻的第一数据文件及第二数据文件:
在播放所述第一数据文件包括的部分动画数据的过程中,加载所述第二数据文件,并对所述第一数据文件进行所述逆向数据处理,得到存储有所述目标动画的基础播放信息的动画数据结构体;
在播放完成所述第一数据文件包括的部分动画数据后,将所述第二数据文件包括的部分动画数据填充至所述动画数据结构体,基于所述动画数据结构体播放所述第二数据文件包括的部分动画数据。
10.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现如权利要求1至8任一项所述的动画的处理方法。
11.一种计算机可读存储介质,其特征在于,存储有可执行指令,所述可执行指令被处理器执行时,用于实现如权利要求1至8任一项所述的动画的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011022432.4A CN112202751B (zh) | 2020-09-25 | 2020-09-25 | 动画的处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011022432.4A CN112202751B (zh) | 2020-09-25 | 2020-09-25 | 动画的处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112202751A CN112202751A (zh) | 2021-01-08 |
CN112202751B true CN112202751B (zh) | 2022-06-07 |
Family
ID=74007183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011022432.4A Active CN112202751B (zh) | 2020-09-25 | 2020-09-25 | 动画的处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112202751B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791821B (zh) * | 2021-09-18 | 2023-11-17 | 广州博冠信息科技有限公司 | 基于虚幻引擎的动画处理方法、装置、介质与电子设备 |
CN114443719A (zh) * | 2022-01-29 | 2022-05-06 | 上海哔哩哔哩科技有限公司 | 动画处理方法及装置 |
CN114840261A (zh) * | 2022-04-29 | 2022-08-02 | 中国第一汽车股份有限公司 | 开机动画播放方法、装置、车辆和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102647634A (zh) * | 2012-05-02 | 2012-08-22 | 合一网络技术(北京)有限公司 | 一种基于HTML5video的多分片视频播放方法及装置 |
CN102905188A (zh) * | 2012-11-01 | 2013-01-30 | 北京奇艺世纪科技有限公司 | 一种视频码流切换方法及装置 |
CN106713948A (zh) * | 2015-11-13 | 2017-05-24 | 北京国双科技有限公司 | 视频分段加载方法和装置 |
CN107911729A (zh) * | 2017-10-23 | 2018-04-13 | 广州市百果园网络科技有限公司 | 网络视频播放方法及终端 |
CN109246461A (zh) * | 2018-11-30 | 2019-01-18 | 北京微播视界科技有限公司 | 视频预加载的方法、应用客户端及电子设备 |
CN110611844A (zh) * | 2019-10-18 | 2019-12-24 | 网易(杭州)网络有限公司 | 应用中播放器的控制方法、装置和视频播放装置 |
CN110933482A (zh) * | 2019-12-06 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 视频加载方法、装置、计算机可读存储介质和计算机设备 |
CN111372117A (zh) * | 2018-12-25 | 2020-07-03 | 浙江大华技术股份有限公司 | 一种视频播放方法、装置、电子设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663796B (zh) * | 2012-04-16 | 2014-06-25 | 广东威创视讯科技股份有限公司 | 一种开放图形库的动画处理方法和装置 |
US10165245B2 (en) * | 2012-07-06 | 2018-12-25 | Kaltura, Inc. | Pre-fetching video content |
KR101564421B1 (ko) * | 2014-05-02 | 2015-10-29 | 삼성전자주식회사 | 동영상 처리 장치 및 방법 |
CN106791933B (zh) * | 2017-01-20 | 2019-11-12 | 杭州当虹科技股份有限公司 | 基于web端的在线快速编辑视频的方法和系统 |
CN108566518A (zh) * | 2018-03-29 | 2018-09-21 | 上海掌门科技有限公司 | 一种视频编辑、播放方法、设备及计算机可读介质 |
CN109636884A (zh) * | 2018-10-25 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 动画处理方法、装置及设备 |
CN110784750B (zh) * | 2019-08-13 | 2022-11-11 | 腾讯科技(深圳)有限公司 | 视频播放方法、装置及计算机设备 |
CN111669623B (zh) * | 2020-06-28 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 视频特效的处理方法、装置以及电子设备 |
-
2020
- 2020-09-25 CN CN202011022432.4A patent/CN112202751B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102647634A (zh) * | 2012-05-02 | 2012-08-22 | 合一网络技术(北京)有限公司 | 一种基于HTML5video的多分片视频播放方法及装置 |
CN102905188A (zh) * | 2012-11-01 | 2013-01-30 | 北京奇艺世纪科技有限公司 | 一种视频码流切换方法及装置 |
CN106713948A (zh) * | 2015-11-13 | 2017-05-24 | 北京国双科技有限公司 | 视频分段加载方法和装置 |
CN107911729A (zh) * | 2017-10-23 | 2018-04-13 | 广州市百果园网络科技有限公司 | 网络视频播放方法及终端 |
CN109246461A (zh) * | 2018-11-30 | 2019-01-18 | 北京微播视界科技有限公司 | 视频预加载的方法、应用客户端及电子设备 |
CN111372117A (zh) * | 2018-12-25 | 2020-07-03 | 浙江大华技术股份有限公司 | 一种视频播放方法、装置、电子设备及存储介质 |
CN110611844A (zh) * | 2019-10-18 | 2019-12-24 | 网易(杭州)网络有限公司 | 应用中播放器的控制方法、装置和视频播放装置 |
CN110933482A (zh) * | 2019-12-06 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 视频加载方法、装置、计算机可读存储介质和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112202751A (zh) | 2021-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112202751B (zh) | 动画的处理方法、装置、电子设备及存储介质 | |
US20220264029A1 (en) | Video special effect processing method and apparatus, and electronic device | |
US20220221998A1 (en) | Memory management method, electronic device and non-transitory computer-readable medium | |
CN103914205B (zh) | 一种智能终端的文件缩略图展示方法和装置 | |
CN109445955B (zh) | 一种计数方法及计数系统 | |
CN112988400B (zh) | 显存优化方法、装置、电子设备以及可读存储介质 | |
CN105184847A (zh) | 3d游戏渲染引擎的渲染方法 | |
CN112257135A (zh) | 一种基于多线程的模型加载方法、装置、存储介质及终端 | |
CN109726076B (zh) | 一种小程序生命周期管理方法和系统 | |
CN109871364B (zh) | 一种数据融合与关联处理方法 | |
CN105183566B (zh) | 3d游戏渲染引擎的资源管理方法 | |
CN110399214B (zh) | 一种优化显卡负载的方法、装置及计算机设备 | |
CN107807821A (zh) | 动画弹窗的实现方法和终端 | |
CN106850650B (zh) | 用于游戏客户端访问数据的方法及客户端游戏系统 | |
WO2020220971A1 (zh) | 一种文件加载方法、装置、电子设备及存储介质 | |
CN112473144A (zh) | 游戏资源数据的处理方法及装置 | |
CN113225605A (zh) | 视频播放处理方法、装置、电子设备及存储介质 | |
CN110968395A (zh) | 一种在模拟器中处理渲染指令的方法及移动终端 | |
CN111111201A (zh) | 一种基于游戏的技能创建方法、装置、服务器及介质 | |
CN115309516A (zh) | 一种应用生命周期的检测方法、装置及计算机设备 | |
CN104866291A (zh) | 一种基于Android的手机2D游戏引擎 | |
CN114205680A (zh) | 视频封面展示方法及其装置、设备、介质、产品 | |
CN108897582A (zh) | 界面加载方法、装置、电子设备、服务器,以及存储介质 | |
CN115729549A (zh) | 生成用户交互界面的方法、装置、存储介质和电子装置 | |
EP1678611B1 (en) | Audio processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |