CN108492338B - 动画文件的压缩方法、装置、存储介质和电子装置 - Google Patents
动画文件的压缩方法、装置、存储介质和电子装置 Download PDFInfo
- Publication number
- CN108492338B CN108492338B CN201810134786.4A CN201810134786A CN108492338B CN 108492338 B CN108492338 B CN 108492338B CN 201810134786 A CN201810134786 A CN 201810134786A CN 108492338 B CN108492338 B CN 108492338B
- Authority
- CN
- China
- Prior art keywords
- data
- animation
- animation file
- precision
- storage
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/004—Predictors, e.g. intraframe, interframe coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种动画文件的压缩方法、装置、存储介质和电子装置。其中,该方法包括:获取动画文件中关键帧的关键帧数据,所述关键帧数据包括所述关键帧的动画数据和所述关键帧的属性数据,所述动画数据用于表示所述关键帧中的图像;检测所述动画数据的存储精度;将所述动画数据的所述存储精度降低到目标精度,得到降低精度后的关键帧数据;按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件。本发明解决了现有的动画文件太大且占用内存高的技术问题。
Description
技术领域
本发明涉及动画处理领域,具体而言,涉及一种动画文件的压缩方法、装置、存储介质和电子装置。
背景技术
美术制作完成的动画文件包含动画的全部数据,例如,动画文件包括所有帧的帧数据,还包括切线数据,时间数据等,这就导致动画文件太大,占用内存高。这样的数据直接放到游戏中使用,会带来很多的性能问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种动画文件的压缩方法、装置、存储介质和电子装置,以至少解决现有的动画文件太大且占用内存高的技术问题。
根据本发明实施例的一个方面,提供了一种动画文件的压缩方法,包括:获取动画文件中关键帧的关键帧数据,所述关键帧数据包括所述关键帧的动画数据和所述关键帧的属性数据,所述动画数据用于表示所述关键帧中的图像;检测到所述动画数据的存储精度;将所述动画数据的所述存储精度降低到目标精度,得到降低精度后的关键帧数据;按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件。
根据本发明实施例的另一方面,还提供了一种动画文件的压缩装置,包括:获取单元,用于获取动画文件中关键帧的关键帧数据,所述关键帧数据包括所述关键帧的动画数据和所述关键帧的属性数据,所述动画数据用于表示所述关键帧中的图像;第一检测单元,用于检测到所述动画数据的存储精度;调整单元,用于将所述动画数据的所述存储精度降低到目标精度,得到降低精度后的关键帧数据;存储单元,用于按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件。
在本发明实施例中,由于关键帧数据中表示图像的动画数据数据量比较大,会占用比较多的存储空间,较低存储精度的动画数据的数据量会减少,占用内存会减少,因此,通过降低存储精度可以减少动画文件需要存储的数据量,从而降低了动画文件的大小和占用的内存,解决现有的动画文件太大且占用内存高的技术问题,达到了减少动画文件的大小以及减少占用内存的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例硬件环境的示意图;
图2是根据本发明实施例的动画文件的压缩方法的流程图;
图3是根据本发明实施例的动画文件降低精度的数据对比示意图;
图4是根据本发明实施例的动画文件降低精度之前的存储数据的示意图;
图5是根据本发明实施例的动画文件降低精度之后的存储数据的示意图;
图6是根据本发明实施例的动画文件的存储数据的示意图;
图7是根据本发明实施例的关键帧的示意图;
图8是根据本发明实施例的动画文件删除关键帧之前的存储数据的示意图;
图9是根据本发明实施例的动画文件删除关键帧之后的存储数据的示意图;
图10是根据发明优选实施例的动画文件的压缩方法的流程图;
图11是根据发明实施例的动画文件的压缩装置的示意图;
图12是根据发明实施例的终端的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种动画文件的压缩方法。在本实施例中,上述动画文件的压缩方法可以应用于如图1所示的终端101和服务器102所构成的硬件环境中。如图1所示,终端101通过网络与服务器102进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端101可以是手机终端,也可以是PC终端、笔记本终端或平板电脑终端。
图2是根据本发明实施例的动画文件的压缩方法的流程图。如图2所示,该动画文件的压缩方法包括:
步骤S202,获取动画文件中关键帧的关键帧数据,关键帧数据包括关键帧的动画数据和关键帧的属性数据,动画数据用于表示关键帧中的图像。
动画文件包括关键帧和中间帧,关键帧包括二维动画中的原画,可以表示一个对象在运动过程中或者变化过程中关键动作所处的那一帧。中间帧可以是由软件创作的。两个关键帧之间可以包括多个中间帧。
动画数据可以理解为关键帧中表示图像和画面的数据,例如,动画文件在播放时在屏幕上显示场景中景物、人物和建筑等图像的数据。属性数据是关键帧本身的属性,与显示的图像不同,属性数据包括关键帧的播放时间和采用的模型等数据。
步骤S204,检测动画数据的存储精度。
动画数据包括多种类型的数据,每种类型的数据可以采用不同的存储精度进行存储。存储精度较高的情况下,存储的数据比较多,且占用内存比较多;存储精度较低的情况下,存储的数据减少,且占用的内存也会减少。存储精度的检测可以通过检测数据的数据存储位数来判断。数据存储位数较多则存储精度高,数据存储位数较少则存储精度低。数据存储位数可以用来表示数据保存到小数点后几位。
步骤S206,将动画数据的存储精度降低到目标精度,得到降低精度后的关键帧数据。
通过调整数据存储位数可以调节动画数据的存储精度,将动画数据的存储精度降低到目标精度包括:获取动画数据的数据存储位数;将动画数据的数据存储位数降低到目标位数,得到存储位数为目标位数的降低精度后的关键帧数据。
数据存储位数可以是保留小数点后面几位的位数,例如,0.00000123数据存储位数为小数点后的8位;0.00123的数据存储位数为小数点后5位。目标位数可以是只保留整数位,或者保留小数点后面几位。例如,在目标位数为保留整数位时,0.00000123降低存储精度后,该数据变为0;0.00123降低存储精度到目标位数后,该数据也变为0。再比如,目标位数为保留小数点后4位,则0.00000123降低存储精度后,该数据变为0,0.00123降低存储精度后,该数据变为0.0012。
可选地,将动画数据的数据存储位数降低到目标位数可以采用以下方式:获取动画数据的绝对值;在绝对值小于预设值时,将动画数据的数据存储位数设置为用于指示保存动画数据的整数位;在绝对值大于或者等于预设值时,将动画数据的数据存储位数设置为用于指示保存动画数据的小数点后的3位。
例如,对于动画数据的绝对值小于预设值0.01的动画数据设置为保存成动画数据的整数位,即保存为0;对于绝对值大于或者等于0.01的动画数据,设置为保存动画数据的后3位。举个例子:如图3所示,动画数据-4.78561973e-06的绝对值小于0.01,则该动画数据降低精度后保存为0;动画数据-0.262119353的绝对值大于0.01,则该动画数据降低精度后保存小数点后3位数据,即-0.262。
在降低精度后,会出现多个动画数据相同的情况,在目标精度下动画数据相同对动画文件的画面影响几乎可以忽略。需要说明的是,本实施例中的预设值不是固定不变的,可以根据不同的应用场景进行选择。例如,在选择0.01作为预设值来降低精度后,动画文件中某个动作的表现效果比较差,可以将预设值调大一点,减少降低精度相同的动画数据,从而提高动画文件的表现效果。
步骤S208,按照目标精度存储降低精度后的关键帧数据,得到压缩后的动画文件。
将动画数据的数据存储位数降低到目标位数之后,对这些降低精度后的关键帧数据进行存储,得到压缩后的动画文件。
动画文件可以按照多种存储格式进行存储,包括Constant存储格式,Dense存储格式和Stream存储格式。
Constant存储格式代表基本不变的数据,在动画文件中基本不变的数据用这个存储格式进行存储。例如,缩放数据,基本上都是1,用Constant存储格式进行存储。Constant存储格式的内存占用很小,基本上只有动画数据,不含有切线数据。
Dense存储格式,采用的是线性插值方式存储数据,不含有切线数据,占用较少内存。一般是线性插值的曲线会采用这种方式进行存储。
Stream存储格式,采用的是曲线插值方式,含有切线,时间等全部数据,占用较多内存。最高格式的存储,变化多样的曲线采用这种存储格式。
由于Stream存储格式存储的数据比较多,且占用内存较多,而Constant存储格式占用内存比较小,动画数据的变化使得降低精度后的关键帧数据可以采用Constant存储格式进行存储,降低关键帧数据的大小和关键帧数据的占用内存。上面3种方式可以在存储关键帧数据时进行选择,一般会根据关键帧的数据情况来选择存储方式,基本原则就是增加Constant存储格式的数据,减少Stream存储格式的数据。
举个例子,在动画文件中的动画数据降低精度之前关键帧数据采用Stream存储格式进行存储,在降低精度之后,满足Constant存储格式的存储规则,则可以改用Constant存储格式对关键帧数据进行存储。Constant存储格式占用的内存较小,则降低精度之后,动画文件的大小减小了,同时占用的内存也减小了。如图4所示,降低精度之前Stream存储格式的数据有241个,占所有数量的34.4%,Constant存储格式的数据有460个,占所有数量的65.6%。降低精度之后的数据如图5所示,Stream存储格式的数据有121个,占所有数量的17.3%,Constant存储格式的数据有580个,占所有数量的82.7%。可见,降低精度之后,Constant存储格式的数据增加了,Stream存储格式的数据减少了,因为Constant存储格式相比Stream存储格式的大小更小,占用的内存更小,也就是整个动画文件的大小更小,占用的内存更小。
本实施例中,由于较低存储精度的数据量会较少,且占用内存会减少,因此,通过降低存储精度可以减少动画文件需要存储的数据量,从而降低了动画文件的大小和占用的内存,解决现有的动画文件太大且占用内存高的技术问题,达到了减少动画文件的大小以及减少占用内存的技术效果。
可选地,为了进一步提高压缩效果,压缩后的动画文件包括多个类型的数据,在按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件之后,方法还包括:检测压缩后的动画文件中同一个类型的数据是否相同;在压缩后的动画文件中同一个类型的数据相同的情况下,从压缩后的动画文件中删除同一个类型的数据。
动画文件中大部分保存的是关键帧数据,关键帧数据中包含通道数据。通道包括Pos通道,Quaternion通道,Euler通道,Scale通道,Muscles通道,Generic通道和PPtr通道等。常用的通道包括Pos通道,Quaternion通道,Scale通道,分别代表位置,旋转,缩放。其中,位置通道Pos(x,y,z)包括3条曲线,旋转通道Quaternion(x,y,z,w)包括4条曲线,缩放通道Scale(x,y,z)包括3曲线。每个通道中包括多个关键帧的数据,例如,旋转通道中包括多个关键帧的旋转数据;位置通道包括多个关键帧的位置数据;缩放通道包括多个关键帧的缩放数据。如图6所示,该动画文件包括48个位置通道,48个旋转通道和44个缩放通道,那么所有曲线总数=48*3+48*4+44*3=468。图6中Curves Total表示所有曲线总数。
每种通道的数据表示一种类型的数据,当一种通道中的所有数据都是相同的,表示该通道在动画文件中是不变的,这种通道可以删除,则在动画文件中删除该通道。举个例子:Scale通道在动画文件中基本上不会有变化,一个通道中所有关键帧的缩放数据都是相同的,也就是说,所有关键帧的缩放都是一样的、不变的,这时可以将动画文件中的Scale通道都删除掉。这里也是需要具体的问题具体分析,如果动画确实有Scale变化,就不能删除了。而其他没有变化的通道就可以删除。
通道数量减少了,动画文件的大小也就变小了。并且这些可以删除的通道在动画的展示时并不需要,因此,删除也不会影响动画的展示效果。
可选地,在经过降低精度和删除通道之后,还可以对冗余的关键帧进行处理。因为,动画文件中存在多个相同的关键帧,而在动画展示时,根据开始关键帧和结束关键帧就可以,其他关键帧可以通过计算得到,所以,在按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件之后,方法还包括:检测压缩后的动画文件中是否存在连续相同的多个关键帧;在检测出压缩后的动画文件中存在连续相同的多个关键帧的情况下,保存多个关键帧中的第一帧和最后一帧;从压缩后的动画文件中删除多个关键帧中除了第一帧和最后一帧以外的其他关键帧。
图7示出了n个相同的关键帧,第一帧为1,最后一帧为n,删除关键帧中第2帧至第n-1帧。如图8所示,在删除关键帧之前,Constant存储格式的数据有136个,如图9所示,在删除关键帧之后,Constant存储格式的数据有460个,占比从19.4%升高到65.6%。在删除关键帧之前,Stream存储格式的数据有565个,在删除关键帧之后,Stream存储格式的数据有241个,占比从80.6%升高到204.2%。可见,删除关键帧之后,Constant存储格式的数据增加了,Stream存储格式的数据减少了,通过上面的说明可知,Constant存储格式的数据占用的内存比较小,则动画文件的大小和内存都减少了。
在本实施例中,动画文件首先由美工进行制作,得到用于表示二维或者三维画面的文件。然后将该动画文件导入到动画编辑器中进行编辑。上述说明中的降低精度、删除通道和删除关键帧都可以在动画编辑器中进行,从而降低导入到动画编辑器中的动画文件的大小和占用动画编辑器的内存。本实施例将动画文件导入到动画编辑器之前,还可以对动画文件进行处理。
可选地,获取动画文件中关键帧的关键帧数据包括:在动画文件的骨骼数据中确定出第一数据,其中,第一数据为在骨骼数据所表示的多种运动过程中保持不变的数据;从动画文件的帧数据中删除第一数据,得到动画数据。
动画文件以帧为单位,每个帧的数据包括骨骼数据。动画文件中的骨骼数据可以用来表示运动姿势。有些骨骼数据在运动过程中是保持不变的第一数据,那么这些数据都保存在动画文件中就造成数据的冗余,因此,在将动画文件导入到动画编辑器之前,可以将这些在多种运动过程中保持不变的骨骼数据删除。
通常,骨骼数据包括pos(x,y,z),rotation(x,y,z,w),scale(x,y,z)3个维度,一共会有3+4+3=10个曲线,少一根骨骼的骨骼数据,就会少很多的动画数据,这会直接导致动画文件的数据减少,即减少输入到动画编辑器的数据量。
以下结合图10对本实施例进行说明。
1、在3D绘图软件(如3DS Max/Maya)中绘制图片得到原始FBX资源文件。
2、隐藏骨骼,删除动画文件的骨骼数据中保持不变的数据,然后将删除骨骼数据之后的动画文件输入到Unity编辑器中。
3、降低精度,即降低动画文件中动画数据的存储精度。
4、裁剪通道,即删除数据保持不变的通道。
5、关键帧压缩,即删除关键帧中第一帧和最后一帧之间的其他关键帧的数据,然后输出优化后的FBX资源文件。
本实施例对于动画文件的大小以及内存优化效果明显,动画文件的大小压缩且内存压缩了,安装包的大小也减少,在动画文件应用到游戏等软件时,会提高游戏的下载速度,并且内存占用少也会减少使一些低配终端也能运行游戏。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明的另一个实施例,还提供了一种用于实施上述动画文件的压缩方法的动画文件的压缩装置。图11是根据发明实施例的动画文件的压缩装置的示意图。如图11所示,该装置包括:
获取单元1102用于获取动画文件中关键帧的关键帧数据,所述关键帧数据包括所述关键帧的动画数据和所述关键帧的属性数据,所述动画数据用于表示所述关键帧中的图像;
动画文件包括关键帧和中间帧,关键帧包括二维动画中的原画,可以表示一个对象在运动过程中或者变化过程中关键动作所处的那一帧。中间帧可以是由软件创作的。两个关键帧之间可以包括多个中间帧。
动画数据可以理解为关键帧中表示图像和画面的数据,例如,动画文件在播放时在屏幕上显示场景中景物、人物和建筑等图像的数据。属性数据是关键帧本身的属性,与显示的图像不同,属性数据包括关键帧的播放时间和采用的模型等数据。
第一检测单元1104用于检测到所述动画数据的存储精度;
动画数据包括多种类型的数据,每种类型的数据可以采用不同的存储精度进行存储。存储精度较高的情况下,存储的数据比较多,且占用内存比较多;存储精度较低的情况下,存储的数据减少,且占用的内存也会减少。存储精度的检测可以通过检测数据的数据存储位数来判断。数据存储位数较多则存储精度高,数据存储位数较少则存储精度低。数据存储位数可以用来表示数据保存到小数点后几位。
调整单元1106用于将所述动画数据的所述存储精度降低到目标精度;
通过调整数据存储位数可以调节动画数据的存储精度,所述调整单元包括:获取模块,用于获取所述动画数据的数据存储位数;降低模块,用于将所述动画数据的所述数据存储位数降低到目标位数,得到存储位数为所述目标位数的降低精度后的关键帧数据。
数据存储位数可以是保留小数点后面几位的位数,例如,0.00000123数据存储位数为小数点后的8位;0.00123的数据存储位数为小数点后5位。目标位数可以是只保留整数位,或者保留小数点后面几位。例如,在目标位数为保留整数位时,0.00000123降低存储精度后,该数据变为0;0.00123降低存储精度到目标位数后,该数据也变为0。再比如,目标位数为保留小数点后4位,则0.00000123降低存储精度后,该数据变为0,0.00123降低存储精度后,该数据变为0.0012。
可选地,所述降低模块包括:获取子模块,用于获取所述动画数据的绝对值;第一设置模块,用于在所述绝对值小于预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的整数位;第二设置模块,用于在所述绝对值大于或者等于所述预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的小数点后的3位。
例如,对于动画数据的绝对值小于预设值0.01的动画数据设置为保存成动画数据的整数位,即保存为0;对于绝对值大于或者等于0.01的动画数据,设置为保存动画数据的后3位。举个例子:如图3所示,动画数据-4.78561973e-06的绝对值小于0.01,则该动画数据降低精度后保存为0;动画数据-0.262119353的绝对值大于0.01,则该动画数据降低精度后保存小数点后3位数据,即-0.262。
在降低精度后,会出现多个动画数据相同的情况,在目标精度下动画数据相同对动画文件的画面影响几乎可以忽略。需要说明的是,本实施例中的预设值不是固定不变的,可以根据不同的应用场景进行选择。例如,在选择0.01作为预设值来降低精度后,动画文件中某个动作的表现效果比较差,可以将预设值调大一点,减少降低精度相同的动画数据,从而提高动画文件的表现效果。
存储单元1108用于按照所述目标精度存储降低精度后的关键帧数据据,得到压缩后的动画文件。
将动画数据的数据存储位数降低到目标位数之后,对这些降低降低精度后的关键帧数据进行存储,得到压缩后的动画文件。
动画文件可以按照多种存储格式进行存储,包括Constant存储格式,Dense存储格式和Stream存储格式。
Constant存储格式代表基本不变的数据,在动画文件中基本不变的数据用这个存储格式进行存储。例如,缩放数据,基本上都是1,用Constant存储格式进行存储。Constant存储格式的内存占用很小,基本上只有动画数据,不含有切线数据。
Dense存储格式,采用的是线性插值方式存储数据,不含有切线数据,占用较少内存。一般是线性插值的曲线会采用这种方式进行存储。
Stream存储格式,采用的是曲线插值方式,含有切线,时间等全部数据,占用较多内存。最高格式的存储,变化多样的曲线采用这种存储格式。
由于Stream存储格式存储的数据比较多,且占用内存较多,而Constant存储格式占用内存比较小,动画数据的变化使得降低精度后的关键帧数据可以采用Constant存储格式进行存储,降低关键帧数据的大小和关键帧数据的占用内存。上面3种方式可以在存储关键帧数据时进行选择,一般会根据关键帧的数据情况来选择存储方式,基本原则就是增加Constant存储格式的数据,减少Stream存储格式的数据。
举个例子,在动画文件中的动画数据降低精度之前关键帧数据采用Stream存储格式进行存储,在降低精度之后,满足Constant存储格式的存储规则,则可以改用Constant存储格式对关键帧数据进行存储。Constant存储格式占用的内存较小,则降低精度之后,动画文件的大小减小了,同时占用的内存也减小了。如图4所示,降低精度之前Stream存储格式的数据有241个,占所有数量的34.4%,Constant存储格式的数据有460个,占所有数量的65.6%。降低精度之后的数据如图5所示,Stream存储格式的数据有121个,占所有数量的17.3%,Constant存储格式的数据有580个,占所有数量的82.7%。可见,降低精度之后,Constant存储格式的数据增加了,Stream存储格式的数据减少了,因为Constant存储格式相比Stream存储格式的大小更小,占用的内存更小,也就是整个动画文件的大小更小,占用的内存更小。
本实施例中,由于较低存储精度的数据量会较少,且占用内存会减少,因此,通过降低存储精度可以减少动画文件需要存储的数据量,从而降低了动画文件的大小和占用的内存,解决现有的动画文件太大且占用内存高的技术问题,达到了减少动画文件的大小以及减少占用内存的技术效果。
可选地,为了进一步提高压缩效果,所述压缩后的动画文件包括多个类型的数据,所述装置还包括:第二检测单元,用于在按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件之后,检测所述压缩后的动画文件中同一个类型的数据是否相同;第一删除单元,用于在所述压缩后的动画文件中同一个类型的数据相同的情况下,从所述压缩后的动画文件中删除所述同一个类型的数据。
动画文件中大部分保存的是关键帧数据,关键帧数据中包含通道数据。通道包括Pos通道,Quaternion通道,Euler通道,Scale通道,Muscles通道,Generic通道和PPtr通道等。常用的通道包括Pos通道,Quaternion通道,Scale通道,分别代表位置,旋转,缩放。其中,位置通道Pos(x,y,z)包括3条曲线,旋转通道Quaternion(x,y,z,w)包括4条曲线,缩放通道Scale(x,y,z)包括3曲线。每个通道中包括多个关键帧的数据,例如,旋转通道中包括多个关键帧的旋转数据;位置通道包括多个关键帧的位置数据;缩放通道包括多个关键帧的缩放数据。如图6所示,该动画文件包括48个位置通道,48个旋转通道和44个缩放通道,那么所有曲线总数=48*3+48*4+44*3=468。图6中Curves Total表示所有曲线总数。
每种通道的数据表示一种类型的数据,当一种通道中的所有数据都是相同的,表示该通道在动画文件中是不变的,这种通道可以删除,则在动画文件中删除该通道。举个例子:Scale通道在动画文件中基本上不会有变化,一个通道中所有关键帧的缩放数据都是相同的,也就是说,所有关键帧的缩放都是一样的、不变的,这时可以将动画文件中的Scale通道都删除掉。这里也是需要具体的问题具体分析,如果动画确实有Scale变化,就不能删除了。而其他没有变化的通道就可以删除。
通道数量减少了,动画文件的大小也就变小了。并且这些可以删除的通道在动画的展示时并不需要,因此,删除也不会影响动画的展示。
可选地,在经过降低精度和删除通道之后,还可以对冗余的关键帧进行处理。因为,动画文件中存在多个相同的关键帧,而在动画展示时,根据开始关键帧和结束关键帧就可以,其他关键帧可以通过计算得到,所以,所述装置还包括:第三检测单元,用于在按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件之后,检测所述压缩后的动画文件中是否存在连续相同的多个关键帧;保存单元,用于在检测出所述压缩后的动画文件中存在连续相同的多个关键帧的情况下,保存所述多个关键帧中的第一帧和最后一帧;第二删除单元,用于从所述压缩后的动画文件中删除所述多个关键帧中除了所述第一帧和所述最后一帧以外的其他关键帧。
图7示出了n个相同的关键帧,第一帧为1,最后一帧为n,删除关键帧中第2帧至第n-1帧。如图8所示,在删除关键帧之前,Constant存储格式的数据有136个,如图9所示,在删除关键帧之后,Constant存储格式的数据有460个,占比从19.4%升高到65.6%。在删除关键帧之前,Stream存储格式的数据有565个,在删除关键帧之后,Stream存储格式的数据有241个,占比从80.6%升高到204.2%。可见,删除关键帧之后,Constant存储格式的数据增加了,Stream存储格式的数据减少了,通过上面的说明可知,Constant存储格式的数据占用的内存比较小,则动画文件的大小和内存都减少了。
在本实施例中,动画文件首先由美工进行制作,得到用于表示二维或者三维画面的文件。然后将该动画文件导入到动画编辑器中进行编辑。上述说明中的降低精度、删除通道和删除关键帧都可以在动画编辑器中进行,从而降低导入到动画编辑器中的动画文件的大小和占用动画编辑器的内存。本实施例将动画文件导入到动画编辑器之前,还可以对动画文件进行处理。
可选地,所述获取单元包括:确定模块,用于在动画文件的所述骨骼数据中确定出第一数据,其中,所述第一数据为在所述骨骼数据所表示的多种运动过程中保持不变的数据;删除模块,用于从所述动画文件的帧数据中删除所述第一数据,得到所述动画数据。
动画文件以帧为单位,每个帧的包括骨骼数据。动画文件中的骨骼数据可以用来表示运动姿势。有些骨骼数据在运动过程中是保持不变的第一数据,那么这些数据都保存在动画文件中就造成数据的冗余,因此,在将动画文件导入到动画编辑器之前,可以将这些在多种运动过程中保持不变的骨骼数据删除。
通常,骨骼数据包括pos(x,y,z),rotation(x,y,z,w),scale(x,y,z)3个维度,一共会有3+4+3=10个曲线,少一根骨骼的骨骼数据,就会少很多的动画数据,这会直接导致动画文件的数据减少,即减少输入到动画编辑器的数据量。
根据本发明实施例的又一个方面,还提供了一种用于实施上述动画文件的压缩方法的电子装置,如图12所示,该电子装置包括,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取动画文件中关键帧的动画数据;
S2,检测到所述动画数据的存储精度;
S3,将所述动画数据的所述存储精度降低到目标精度;
S4,按照所述目标精度存储所述动画数据,得到压缩后的动画文件。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
获取所述动画数据的数据存储位数;将所述动画数据的所述数据存储位数降低到目标位数,得到存储位数为所述目标位数的数据。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
获取所述动画数据的绝对值;在所述绝对值小于预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的整数位;在所述绝对值大于或者等于所述预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的小数点后的3位。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
检测所述压缩后的动画文件中同一个类型的数据是否相同;在所述压缩后的动画文件中同一个类型的数据相同的情况下,从所述压缩后的动画文件中删除所述同一个类型的数据。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
在所述骨骼数据中确定出第一数据,其中,所述第一数据为在所述骨骼数据所表示的多种运动过程中保持不变的数据;从所述动画文件的帧数据中删除所述第一数据,得到所述动画数据。
可选地,图12是根据本发明实施例的一种电子装置的结构框图。如图12所示,该电子装置可以包括:一个或多个(图中仅示出一个)处理器121、至少一个通信总线122、用户接口123、至少一个传输装置124和存储器125。其中,通信总线122用于实现这些组件之间的连接通信。其中,用户接口123可以包括显示器126和键盘127。传输装置124可选的可以包括标准的有线接口和无线接口。
本领域普通技术人员可以理解,图12所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图12其并不对上述电子装置的结构造成限定。例如,电子装置12还可包括比图12中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图12所示不同的配置。
其中,存储器125可用于存储软件程序以及模块,如本发明实施例中的动画文件的压缩方法对应的程序指令/模块,处理器121通过运行存储在存储器125内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的动画文件的压缩方法。存储器125可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器125可进一步包括相对于处理器121远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置124用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置124包括一个网络适配器(NetworkInterface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置124为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,存储器125用于存储执行动画文件的压缩方法的文件。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
通过传输装置调用存储器125存储的信息及应用程序,以执行下述步骤:获取动画文件中关键帧的动画数据;检测到所述动画数据的存储精度;将所述动画数据的所述存储精度降低到目标精度;按照所述目标精度存储所述动画数据,得到压缩后的动画文件。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
获取所述动画数据的数据存储位数;将所述动画数据的所述数据存储位数降低到目标位数,得到存储位数为所述目标位数的数据。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
获取所述动画数据的绝对值;在所述绝对值小于预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的整数位;在所述绝对值大于或者等于所述预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的小数点后的3位。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
检测所述压缩后的动画文件中同一个类型的数据是否相同;在所述压缩后的动画文件中同一个类型的数据相同的情况下,从所述压缩后的动画文件中删除所述同一个类型的数据。
可选的,上述处理器121还可以执行如下步骤的程序代码:检测所述压缩后的动画文件中是否存在连续相同的多个关键帧;在检测出所述压缩后的动画文件中存在连续相同的多个关键帧的情况下,保存所述多个关键帧中的第一帧和最后一帧;从所述压缩后的动画文件中删除所述多个关键帧中除了所述第一帧和所述最后一帧以外的其他关键帧。
可选地,存储介质还被设置为存储用于执行上述实施例中的方法中所包括的步骤的计算机程序,本实施例中对此不再赘述。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种动画文件的压缩方法,其特征在于,包括:
获取动画文件中关键帧的关键帧数据,其中,所述动画文件包括关键帧和中间帧,所述关键帧数据包括所述关键帧的动画数据和所述关键帧的属性数据,所述动画数据用于表示所述关键帧中的图像;
检测所述动画数据的存储精度;
将所述动画数据的所述存储精度降低到目标精度,得到降低精度后的关键帧数据,包括:获取所述动画数据的数据存储位数;获取所述关键帧数据的绝对值;在所述绝对值小于预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的整数位;在所述绝对值大于或者等于所述预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的小数点后的3位,以将所述动画数据的数据存储位数降低到目标位数,得到存储位数为所述目标位数的所述降低精度后的关键帧数据;
按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件。
2.根据权利要求1所述的方法,其特征在于,所述压缩后的动画文件包括多个类型的数据,在按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件之后,所述方法还包括:
检测所述压缩后的动画文件中同一个类型的数据是否相同;
在所述压缩后的动画文件中同一个类型的数据相同的情况下,从所述压缩后的动画文件中删除所述同一个类型的数据。
3.根据权利要求1所述的方法,其特征在于,在按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件之后,所述方法还包括:
检测所述压缩后的动画文件中是否存在连续相同的多个关键帧;
在检测出所述压缩后的动画文件中存在连续相同的多个关键帧的情况下,保存所述多个关键帧中的第一帧和最后一帧;
从所述压缩后的动画文件中删除所述多个关键帧中除了所述第一帧和所述最后一帧以外的其他关键帧。
4.根据权利要求1至3中任一项所述的方法,其特征在于,获取动画文件中关键帧的关键帧数据包括:
在所述动画文件的骨骼数据中确定出第一数据,其中,所述第一数据为在所述骨骼数据所表示的多种运动过程中保持不变的数据;
从所述动画文件中删除所述第一数据,得到所述动画数据。
5.一种动画文件的压缩装置,其特征在于,包括:
获取单元,用于获取动画文件中关键帧的关键帧数据,其中,所述动画文件包括关键帧和中间帧,所述关键帧数据包括所述关键帧的动画数据和所述关键帧的属性数据,所述动画数据用于表示所述关键帧中的图像;
第一检测单元,用于检测所述动画数据的存储精度;
调整单元,用于将所述动画数据的所述存储精度降低到目标精度,得到降低精度后的关键帧数据;
存储单元,用于按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件;
所述调整单元包括:
获取模块,用于获取所述动画数据的数据存储位数;
降低模块,用于将所述动画数据的所述数据存储位数降低到目标位数,得到存储位数为所述目标位数的所述降低精度后的关键帧数据;
所述降低模块包括:
获取子模块,用于获取所述动画数据的绝对值;
第一设置模块,用于在所述绝对值小于预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的整数位;
第二设置模块,用于在所述绝对值大于或者等于所述预设值时,将所述动画数据的所述数据存储位数设置为用于指示保存所述动画数据的小数点后的3位。
6.根据权利要求5所述的装置,其特征在于,所述压缩后的动画文件包括多个类型的数据,所述装置还包括:
第二检测单元,用于在按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件之后,检测所述压缩后的动画文件中同一个类型的数据是否相同;
第一删除单元,用于在所述压缩后的动画文件中同一个类型的数据相同的情况下,从所述压缩后的动画文件中删除所述同一个类型的数据。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第三检测单元,用于在按照所述目标精度存储所述降低精度后的关键帧数据,得到压缩后的动画文件之后,检测所述压缩后的动画文件中是否存在连续相同的多个关键帧;
保存单元,用于在检测出所述压缩后的动画文件中存在连续相同的多个关键帧的情况下,保存所述多个关键帧中的第一帧和最后一帧;第二删除单元,用于从所述压缩后的动画文件中删除所述多个关键帧中除了所述第一帧和所述最后一帧以外的其他关键帧。
8.根据权利要求5至7中任一项所述的装置,其特征在于,所述获取单元包括:
确定模块,用于在所述动画文件的骨骼数据中确定出第一数据,其中,所述第一数据为在所述骨骼数据所表示的多种运动过程中保持不变的数据;
删除模块,用于从所述动画文件中删除所述第一数据,得到所述动画数据。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至4任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至4任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810134786.4A CN108492338B (zh) | 2018-02-09 | 2018-02-09 | 动画文件的压缩方法、装置、存储介质和电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810134786.4A CN108492338B (zh) | 2018-02-09 | 2018-02-09 | 动画文件的压缩方法、装置、存储介质和电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108492338A CN108492338A (zh) | 2018-09-04 |
CN108492338B true CN108492338B (zh) | 2021-12-24 |
Family
ID=63340271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810134786.4A Active CN108492338B (zh) | 2018-02-09 | 2018-02-09 | 动画文件的压缩方法、装置、存储介质和电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108492338B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109544664B (zh) * | 2018-11-21 | 2023-03-28 | 北京像素软件科技股份有限公司 | 动画数据处理方法、装置、电子设备及可读存储介质 |
CN110060310B (zh) * | 2019-01-30 | 2023-10-20 | 创新先进技术有限公司 | 文件压缩方法、装置及设备 |
CN112069042B (zh) * | 2019-06-11 | 2023-04-14 | 腾讯科技(深圳)有限公司 | 动画性能监测方法、装置、存储介质和计算机设备 |
CN112307139A (zh) * | 2019-07-30 | 2021-02-02 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
CN111161365B (zh) * | 2019-12-30 | 2023-05-09 | 珠海金山数字网络科技有限公司 | 一种骨骼动画数据的压缩方法及装置 |
CN111667544B (zh) * | 2020-07-02 | 2023-03-10 | 腾讯科技(深圳)有限公司 | 动画数据压缩方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8681145B2 (en) * | 2009-03-20 | 2014-03-25 | Disney Enterprises, Inc. | Attribute transfer between computer models including identifying isomorphic regions in polygonal meshes |
CN101655859B (zh) * | 2009-07-10 | 2012-06-13 | 北京大学 | 快速去除冗余关键帧的方法及装置 |
EP2503697A1 (en) * | 2011-03-22 | 2012-09-26 | Pii Limited | Method and apparatus for data compression |
CN103605774A (zh) * | 2013-11-29 | 2014-02-26 | 珠海金山网络游戏科技有限公司 | 一种顶点动画的数据压缩方法 |
CN104732574B (zh) * | 2014-12-30 | 2017-12-12 | 北京像素软件科技股份有限公司 | 一种角色游戏的压缩方法及装置 |
-
2018
- 2018-02-09 CN CN201810134786.4A patent/CN108492338B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108492338A (zh) | 2018-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108492338B (zh) | 动画文件的压缩方法、装置、存储介质和电子装置 | |
CN108010112B (zh) | 动画处理方法、装置及存储介质 | |
CN112233217B (zh) | 一种虚拟场景的渲染方法和装置 | |
CN109936763B (zh) | 视频的处理及发布方法 | |
CN110189246B (zh) | 图像风格化生成方法、装置及电子设备 | |
CN112764752A (zh) | 页面的展示方法和装置、存储介质、电子装置 | |
CN113470092B (zh) | 地形的渲染方法和装置、电子设备和存储介质 | |
CN116115995A (zh) | 图像渲染处理方法、装置及电子设备 | |
CN113709553A (zh) | 一种屏幕录制方法、装置、芯片和终端 | |
CN112714338A (zh) | 视频传输、播放方法、装置、计算机设备及存储介质 | |
CN114598893A (zh) | 文字的视频实现方法及系统、电子设备、存储介质 | |
CN108416830B (zh) | 动画显示控制方法、装置、设备及存储介质 | |
JP2017192080A (ja) | 画像圧縮装置、画像復号装置、画像圧縮方法及び画像圧縮プログラム | |
CN113989442B (zh) | 建筑信息模型构建方法及相关装置 | |
CN116206038A (zh) | 一种渲染方法、装置、电子设备及存储介质 | |
CN109829974B (zh) | 一种智能眼镜的三维图形自适应显示方法 | |
CN112449249A (zh) | 视频流处理方法及装置、电子设备及存储介质 | |
CN112451966A (zh) | 一种数据共享处理的方法、系统及终端 | |
CN112597334B (zh) | 通信数据中心的数据处理方法 | |
CN108519962A (zh) | 一种应用于安卓系统的字体显示方法、装置和终端设备 | |
WO2023246403A1 (zh) | 模型的训练方法、水印复原方法及相关设备 | |
CN116385597B (zh) | 文本配图方法和装置 | |
CN109361956B (zh) | 基于时间的视频剪切方法及相关产品 | |
CN117915088A (zh) | 视频处理方法、装置、电子设备及计算机可读存储介质 | |
CN106331834A (zh) | 一种多媒体数据处理方法及其设备 |
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 |