一种unity3d动画数据压缩方法及系统技术方案

技术编号:35050913 阅读:29 留言:0更新日期:2022-09-28 10:51
本发明专利技术提供一种基于Unity3d的动画压缩方法及系统。该方法根据为动画数据关键帧的不同骨骼节点设置相应的压缩参数阈值,依次对动画数据中各骨骼节点的关键数据帧进行剔除处理实现对动画数据的精简;并对精简后动画数据采用平滑曲线进行处理以改善压缩动画走样的问题。通过本发明专利技术提供的技术方案可以在动画数据在几乎不走样的情况下,大幅减少动画数据的大小。小。小。

【技术实现步骤摘要】
一种unity3d动画数据压缩方法及系统


[0001]本专利技术属于数据压缩领域,具体涉及一种对unity3d动画进行数据压缩方法及系统。

技术介绍

[0002]移动设备在运行游戏程序通常会占用相当大一部分内存,由于移动设备本身的内存是有限的,游戏动画数据一旦过大会对程序的稳定性产生严重影响;另外、过大的游戏安装包和数据资源还会浪费大量的用户下载时间。
[0003]Unity3d是一种3D游戏引擎,常常用于3D游戏开发或虚拟场景展示。采用Unity3d引擎开发的游戏动画数据尺寸过大一直是影响游戏开发项目相关机制指标的关键问题,一个几秒钟的简单动画、相关的数据可能达到10MB。Unity3d引擎内部默认的动画导入工作流中尽管包含了精简数据的处理方法。该处理方法具体包括:对动画数据关键帧中骨骼的旋转坐标和缩放的值设置一个阈值,当前帧和前一帧两个关键帧中同一骨骼节点的骨骼数据相差不超过所述阈值,就剔除所述当前帧中的该骨骼节点的骨骼数据帧;对于删除骨骼数据帧后的动画数据,没有做过曲线平滑过渡的操作。采用上述方法进行动画压缩时,所述阈值设置太小、则压缩不了多少数据,设置太大则动画走样严重;并且相关的阈值无法根据不同骨骼位置/骨骼节点的实际情况进行改变。对于有些关键的骨骼节点如脚的立足点,稍有数据变更就会形成站立姿态不扎实,脚部抖动的问题。

技术实现思路

[0004]为了解决unity3d自带的动画数据精简处理方法存在上述不足,本专利技术提供一种unity3d动画数据压缩方法及系统。通过本专利技术提供的技术方案能够对动画数据关键帧中的不同骨骼节点灵活设置相应的压缩参数阈值,且在剔除当前帧中骨骼节点的骨骼数据帧时考虑了相邻的前、后关键帧中该骨骼节点的相关压缩参数之间差异,并对删除骨骼数据帧后的动画数据进行曲线平滑过渡处理,改善了压缩后动画走样的现象。
[0005]本专利技术提供的技术方案具体实现为:
[0006]一种unity3d动画数据压缩方法,该方法包括:为待压缩动画数据中的每个骨骼节点设置压缩参数相应的阈值;在对所述待动画数据压缩时,获取其中每个骨骼节点的压缩参数对应的阈值;除去每个骨骼节点的首、尾两个关键帧外、按照时间轴顺序对每个骨骼节点依次获取对应的关键帧作为当前关键帧;若具体骨骼节点的压缩参数在该当前关键帧的取值、与该压缩参数在与当前关键帧前、后相邻的两个关键帧的取值的差值小于为该骨骼节点的所述压缩参数对应的阈值,则剔除该具体骨骼节点的所述当前关键帧;所述待压缩动画数为.FBX动画文件导入到Unity3d、未经unity3d优化处理导出的无损的.anim文件。
[0007]进一步地、该方法包括以下步骤:
[0008]A.按照时间顺序获取待压缩动画数据中各骨骼节点的第二个关键帧作为各骨骼节点初始的当前关键帧;
[0009]B.获取各骨骼节点的当前关键帧的下一关键帧,判断所述下一关键帧是否为相关骨骼节点的最后一个关键帧,若否、进入步骤D进行动画数据精简处理;若是,则输出精简后的动画数据,进行曲线平滑处理获得最终的.anim文件;
[0010]C.判断每个骨骼节点的当前关键帧的压缩参数值与其前、后相邻的两个关键帧的压缩参数值的差值是否小于为该骨骼节点设置的所述压缩参数的阈值;若是、则剔除相应骨骼节点的所述当前关键帧后,返回步骤B执行;若否、直接返回到步骤B执行;在返回步骤B前、以各骨骼节点的所述当前关键帧的下一关键帧作为新的当前关键帧。进一步地、将为不同骨骼节点对应的压缩参数设置的阈值存储在压缩参数配置表中;在进行压缩处理时,通过查询所述压缩参数配置表获取对应不同骨骼节点的压缩参数的阈值。
[0011]进一步地,所述压缩参数至少包括以下三组:特定骨骼节点的关键帧的具体数值(value),包括特定骨骼节点的坐标或者缩放比例。特定骨骼节点的输入曲线正切值(inTangent):该特定骨骼节点在所有关键帧的坐标数值组成的样条曲线中,前一关键帧的坐标数值和当前关键帧的坐标数值在所述样条曲线上内切线角度差值的正切值。特定骨骼节点的输出曲线正切值(outTangent):该特定骨骼节点所有关键帧的数值组成的样条曲线中,当前关键帧的坐标数值和下一关键帧的坐标数值在所述样条曲线上外切线角度差值的正切值。
[0012]当所述特定骨骼节点的三组压缩参数的数值都小于各自对应的阈值时,剔除该骨骼节点在当前关键帧中的骨骼数据帧。为了进一步减少动画数据的大小,对小数点后6位的浮点型动画数据截取小数点后3位进行存储。
[0013]与上述方法相对应,本专利技术还提供一种unity3d动画数据压缩系统,该压缩系统采用上述动画数据压缩方法对待压缩文件进行压缩处理。所述待压缩文件为Unity3d保存的、且未经过unity3d导入优化处理的无损的.anim文件。例如将.FBX动画文件导入到Unity3d、不开启unity3d的导入优化功能,到处为无损的.anim文件。
附图说明
[0014]图1是本专利技术提供的unity3d动画数据压缩方法的流程图。
具体实施方式
[0015]下面将参照附图更详细地描述本专利技术的示例性实施例。虽然附图中显示了本专利技术的示例性实施例,然而应当理解,可以以各种形式实现本专利技术的技术方案而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本专利技术提供的技术方案。下面将参考附图并结合实施例来详细说明本专利技术。
[0016]图1为本专利技术提供的unity3d动画数据压缩方法的流程图。如图1所示,本专利技术提供的unity3d动画数据压缩方法,包括以下步骤:
[0017]A、将导入到Unity3d、未经unity3d优化处理的格式为.FBX动画文件保存为无损的.anim文件作为待压缩动画数据。
[0018]B、按照时间顺序获取待压缩动画数据中各骨骼节点的第二个关键帧作为各骨骼节点初始的当前关键帧;
[0019]C、获取各骨骼节点的当前关键帧的下一关键帧,判断所述下一关键帧是否为相关
骨骼节点的最后一个关键帧,若否、进入步骤D进行动画数据精简处理;若是,则输出精简后的动画数据,进行曲线平滑处理获得最终的.anim文件;
[0020]D.判断每个骨骼节点的当前关键帧的压缩参数值与其前、后相邻的两个关键帧的压缩参数值的差值是否小于为该骨骼节点的所述压缩参数设置的阈值;若是、则剔除相应骨骼节点的所述当前关键帧后,返回步骤C执行;若否、直接返回到步骤C执行;在返回步骤C前、以各骨骼节点的所述当前关键帧的下一关键帧作为新的当前关键帧。
[0021]优选地、将为不同骨骼节点对应的压缩参数设置的阈值存储在压缩参数配置表中;在进行压缩处理时,通过查询所述压缩参数配置表获取对应不同骨骼节点的压缩参数的阈值。
[0022]进一步地,所述压缩参数包括以下三组:特定骨骼节点的关键帧的具体数值(value),包括特定骨骼节点的坐标或者缩放比例。特定骨骼节点的输入曲线正切值(inTangent):该特定骨骼节点在所有关键帧的坐标数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种unity3d动画数据压缩方法,其特征在于,该方法包括:为待压缩动画数据中的每个骨骼节点设置压缩参数相应的阈值;在对所述待动画数据压缩时,获取其中每个骨骼节点的压缩参数对应的阈值;除去每个骨骼节点的首、尾两个关键帧外、按照时间轴顺序对每个骨骼节点依次获取对应的关键帧作为当前关键帧;若任一骨骼节点的压缩参数在该当前关键帧的取值、与该压缩参数在与当前关键帧前、后相邻的两个关键帧的取值的差值小于为该骨骼节点的所述压缩参数设置的阈值,则剔除该具体骨骼节点的所述当前关键帧;所述待压缩动画数据为.FBX动画文件导入到Unity3d、未经unity3d优化处理导出的无损的.anim文件。2.如权利要求1所述动画数据压缩方法,其特征在于,所述方法包括以下步骤:A.按照时间顺序获取待压缩动画数据中各骨骼节点的第二个关键帧作为各骨骼节点初始的当前关键帧;B.获取各骨骼节点的当前关键帧的下一关键帧,判断所述下一关键帧是否为相关骨骼节点的最后一个关键帧,若否、进入步骤D进行动画数据精简处理;若是,则输出精简后的动画数据,进行曲线平滑处理获得最终的.anim文件;C.判断每个骨骼节点的当前关键帧的压缩参数值与其前、后相邻的两个关键帧的压缩参数值的差值是否小于为该骨骼节点设置的所述压缩参数的阈值;若是、则剔除相应骨骼节点的所述当前关键帧后,返回步骤B执行;若否、直接返回到步骤B执行;在返回步骤B前...

【专利技术属性】
技术研发人员:谈欣诚
申请(专利权)人:盛趣信息技术上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1