CN109872375A - 一种骨骼动画关键帧压缩方法及装置 - Google Patents

一种骨骼动画关键帧压缩方法及装置 Download PDF

Info

Publication number
CN109872375A
CN109872375A CN201910022992.0A CN201910022992A CN109872375A CN 109872375 A CN109872375 A CN 109872375A CN 201910022992 A CN201910022992 A CN 201910022992A CN 109872375 A CN109872375 A CN 109872375A
Authority
CN
China
Prior art keywords
node
bone
animation
frame
error threshold
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.)
Granted
Application number
CN201910022992.0A
Other languages
English (en)
Other versions
CN109872375B (zh
Inventor
江卓浩
黄龙程
卢歆翮
陈汉辉
李茂�
吴海权
陈镇秋
杨键
陈晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Hills Residence Guangzhou Shi You Network Technology Co Ltd
Zhuhai Kingsoft Online Game Technology Co Ltd
Original Assignee
Western Hills Residence Guangzhou Shi You Network Technology Co Ltd
Zhuhai Kingsoft Online Game Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Western Hills Residence Guangzhou Shi You Network Technology Co Ltd, Zhuhai Kingsoft Online Game Technology Co Ltd filed Critical Western Hills Residence Guangzhou Shi You Network Technology Co Ltd
Priority to CN201910022992.0A priority Critical patent/CN109872375B/zh
Publication of CN109872375A publication Critical patent/CN109872375A/zh
Application granted granted Critical
Publication of CN109872375B publication Critical patent/CN109872375B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本申请公开了一种骨骼动画关键帧压缩方法,包括以下步骤:读取动画文件的内容,生成动画文件内各个三维模型的骨骼节点树;统计每个节点的间接后代数量,并根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列;为骨骼节点序列中的各个节点从前到后按照从小到大分配相应的误差阈值;比较各个节点对应的误差阈值及动画帧与相邻前后帧中各个节点对应骨骼参数的距离,以保留或剔除所述动画帧中的节点而形成压缩动画文件。本申请还公开了相应的骨骼动画关键帧压缩装置。本申请的有益效果为:通过针对性地压缩末端骨骼节点的关键帧密度,使得在保证动画整体质量的前提下,降低游戏软件或视频动画等的分发成本。

Description

一种骨骼动画关键帧压缩方法及装置
技术领域
本申请涉及计算机图形学领域,尤其涉及一种骨骼动画关键帧压缩方法及装置。
背景技术
在计算机图形学领域中,目前有两类主流的动画类型:关键帧动画和骨骼动画。在关键帧动画中,三维模型在每幅关键帧中都仅是一个固定的“姿势”。动画制作人员通过在绘制三维模型运动过程中的多个关键动作的“快照”(即关键帧),并由计算机依据相邻两幅关键帧进行插值平滑计算,从而得到关于该三维模型较为流畅的动画。虽然关键帧帧动画由于只需要进行插值计算,从而相对于骨骼动画的计算量较小;然而,由于只能基于“姿势”固定的关键帧进行插值计算,一方面对于复杂的组合动作,需要绘制多张“关键帧”以避免三维模型在插值过程中出现的自身“穿刺”的毛病;另一方面,由于插值一般是线性的,从而使得画面动作表现比较粗糙,不够细腻(例如早期的Flash动画)。
相反,骨骼动画将三维模型划分为骨骼(Bone)和蒙皮(Mesh)。其中,骨骼又进一步地划分为具有多个层级关系的树形结构骨骼。在该树形结构中,父节点的骨骼在运动时,作为其子节点的骨骼将跟随父节点处的骨骼运动;反之,子节点的骨骼在运动时不影响父节点的骨骼。蒙皮则将三维模型的顶点映射到骨骼,即指定某个顶点由那几根骨骼控制。具体地,在骨骼运动的时候,三维模型的顶点根据控制其运动的骨骼及其控制权重的百分比而作出相应的运动。虽然上述模型的运动方式更接近实际,真实感强而使得画面表现细腻,但是由于模型的所有顶点都要根据骨骼的实时变化计算,使得其对硬件的计算能力要求非常高,以保证画面的流畅。即使动画以预先绘制的方式保存为相应的动画文件,使得其能够在硬件参数相对较低的设备上流畅播放,其文件中也需要包含大量的数据。这令单个动画文件的体积往往非常庞大。
为此,目前骨骼动画也一定程度上参考关键帧动画的制作思路而压缩文件本身的体积。具体地,骨骼动画的关键帧精简方法是根据预先设定的误差容忍值,通过前后关键帧做插值位移计算,比较动画帧中数据与的插值位移之间的差异是否超出误差设定阈值,而确定是否剔除该动画帧。由于该方法并没有考虑到骨骼之间的父子关系,因此往往导致精简过后动画质量差,容易出现晃动。
发明内容
本申请的目的是解决现有技术的不足,提供一种骨骼动画关键帧压缩方法及装置,能够获得在保证动画整体表现的前提下压缩动画文件体积的效果。
为了实现上述目的,本申请采用以下的技术方案。
首先,本申请提出一种骨骼动画关键帧压缩方法。该方法包括以下步骤:
S100)读取动画文件的内容,生成动画文件内各个三维模型的骨骼节点树;
S200)统计每个节点的间接后代数量,并根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列;
S300)为骨骼节点序列中的各个节点从前到后按照从小到大分配相应的误差阈值;
S400)比较各个节点对应的误差阈值及动画帧与相邻前后帧中各个节点对应骨骼参数的距离,以保留或剔除所述动画帧中的节点而形成压缩动画文件。
进一步地,在本申请的上述方法中,所述步骤S200还包括以下的子步骤:
S201)采用广度优先算法(Breadth-First-Search)遍历骨骼节点树,以递归计算骨骼节点树中各个节点的间接后代数量;
S202)按照骨骼节点树中各个节点之间的父子关系,采用归并排序算法将根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列。
再进一步地,在本申请的上述方法中,所述步骤S300还包括以下的子步骤:
S301)分别为骨骼节点序列中的头节点和尾节点分配预设的最大误差阈值和最小误差阈值;
S302)根据骨骼节点序列中各个节点的间接后代数量,通过对最大误差阈值和最小误差阈值线性插值的方式为每个节点分配对应的误差阈值。
进一步地,在本申请的上述方法中,所述步骤S400还包括以下的子步骤:
S401)设置动画文件的首尾帧为关键帧,所述关键帧记录所有节点的骨骼参数;
S402)对于首尾帧除外的动画帧,分别提取与所述动画帧相邻的前动画帧和后动画帧;
S403)根据前动画帧和后动画帧中各个节点的骨骼参数,通过线性插值计算所述动画帧对应节点的理想骨骼参数,以计算所述动画帧中各个节点的理想骨骼参数与实际的骨骼参数之间的插值差异;
S404)比较各个节点的插值差异和对应的误差阈值,如果插值差异小于误差阈值则从所述动画帧中剔除对应节点,反之保留节点在所述动画帧中。
可替代地,在本申请的上述方法中,插值差异为各个节点的理想骨骼参数与实际的骨骼参数之间的切比雪夫距离(Chebyshev distance)。
进一步地,在本申请的上述方法中,在步骤S403和S404中,所述动画帧中各个节点线性插值计算和比较是按照骨骼节点树采用广度优先算法依次执行的。
再进一步地,在本申请的上述方法中,当在所述动画帧中剔除某个节点时,同时直接剔除所述节点的所有子节点。
其次,本申请提出一种骨骼动画关键帧压缩装置。该装置包括以下模块:读取模块,用于读取动画文件的内容,生成动画文件内各个三维模型的骨骼节点树;统计模块,用于统计每个节点的间接后代数量,并根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列;配置模块,用于为骨骼节点序列中的各个节点从前到后按照从小到大分配相应的误差阈值;压缩模块,用于比较各个节点对应的误差阈值及动画帧与相邻前后动画帧中各个节点对应骨骼参数的距离,以保留或剔除所述动画帧中的节点而形成压缩动画文件。
进一步地,在本申请的上述装置中,所述统计模块还包括以下的子模块:递归模块,用于采用广度优先算法遍历骨骼节点树,以递归计算骨骼节点树中各个节点的间接后代数量;排序模块,用于按照骨骼节点树中各个节点之间的父子关系,采用归并排序算法将根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列。
再进一步地,在本申请的上述模块中,所述配置模块还包括以下的子模块:分配模块,用于分别为骨骼节点序列中的头节点和尾节点分配预设的最大误差阈值和最小误差阈值;第一插值模块,用于根据骨骼节点序列中各个节点的间接后代数量,通过对最大误差阈值和最小误差阈值线性插值的方式为每个节点分配对应的误差阈值。
进一步地,在本申请的上述装置中,所述压缩模块还可以包括以下的子模块:
设置模块,用于设置动画文件的首尾帧为关键帧,所述关键帧记录所有节点的骨骼参数;提取模块,用于对于首尾帧除外的动画帧,分别提取与所述动画帧相邻的前动画帧和后动画帧;第二插值模块,用于根据前动画帧和后动画帧中各个节点的骨骼参数,通过线性插值计算所述动画帧对应节点的理想骨骼参数,以计算所述动画帧中各个节点的理想骨骼参数与实际的骨骼参数之间的插值差异;比较模块,用于比较各个节点的插值差异和对应的误差阈值,如果插值差异小于误差阈值则从所述动画帧中剔除对应节点,反之保留节点在所述动画帧中。
可替代地,在本申请的上述装置中,插值差异为各个节点的理想骨骼参数与实际的骨骼参数之间的切比雪夫距离。
进一步地,在本申请的上述装置中,在调用第二插值模块和比较模块时,所述动画帧中各个节点线性插值计算和比较是按照骨骼节点树采用广度优先算法依次执行的。
进一步地,在本申请的上述装置中,当在所述动画帧中剔除某个节点时,同时直接剔除所述节点的所有子节点。
最后,本申请还提出一种计算机可读存储介质,其上存储有计算机指令。上述指令被处理器执行时,执行如下步骤:
S100)读取动画文件的内容,生成动画文件内各个三维模型的骨骼节点树;
S200)统计每个节点的间接后代数量,并根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列;
S300)为骨骼节点序列中的各个节点从前到后按照从小到大分配相应的误差阈值;
S400)比较各个节点对应的误差阈值及动画帧与相邻前后帧中各个节点对应骨骼参数的距离,以保留或剔除所述动画帧中的节点而形成压缩动画文件。
进一步地,在处理器执行上述指令时,所述步骤S200还包括以下的子步骤:
S201)采用广度优先算法遍历骨骼节点树,以递归计算骨骼节点树中各个节点的间接后代数量;
S202)按照骨骼节点树中各个节点之间的父子关系,采用归并排序算法将根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列。
再进一步地,在处理器执行上述指令时,所述步骤S300还包括以下的子步骤:
S301)分别为骨骼节点序列中的头节点和尾节点分配预设的最大误差阈值和最小误差阈值;
S302)根据骨骼节点序列中各个节点的间接后代数量,通过对最大误差阈值和最小误差阈值线性插值的方式为每个节点分配对应的误差阈值。
进一步地,在处理器执行上述指令时,所述步骤S400还包括以下的子步骤:
S401)设置动画文件的首尾帧为关键帧,所述关键帧记录所有节点的骨骼参数;
S402)对于首尾帧除外的动画帧,分别提取与所述动画帧相邻的前动画帧和后动画帧;
S403)根据前动画帧和后动画帧中各个节点的骨骼参数,通过线性插值计算所述动画帧对应节点的理想骨骼参数,以计算所述动画帧中各个节点的理想骨骼参数与实际的骨骼参数之间的插值差异;
S404)比较各个节点的插值差异和对应的误差阈值,如果插值差异小于误差阈值则从所述动画帧中剔除对应节点,反之保留节点在所述动画帧中。
可替代地,在处理器执行上述指令时,插值差异为各个节点的理想骨骼参数与实际的骨骼参数之间的切比雪夫距离。
进一步地,在处理器执行上述指令时,在步骤S403和S404中,所所述动画帧中各个节点线性插值计算和比较是按照骨骼节点树采用广度优先算法依次执行的。
进一步地,在处理器执行上述指令时,当在所述动画帧中剔除某个节点时,同时直接剔除所述节点的所有子节点。
本申请的有益效果为:根据三维模型中各个骨骼的重要程度,针对性地压缩末端骨骼节点的关键帧密度,使得在保证动画整体质量的前提下,尽可能压缩相应动画文件的体积,降低游戏软件或视频动画等的分发成本。
附图说明
图1所示为本申请所公开的骨骼动画关键帧压缩方法的方法流程图;
图2所示为采用图1所描述方法进行压缩后的骨骼节点树中互为父子关系的两个节点所对应动画曲线的示意图;
图3所示为在本申请的一个实施例中,排序骨骼节点树的各个节点的子方法流程图;
图4所示为在本申请的另一个实施例中,为各个节点分配误差阈值的子方法流程图;
图5所示为在本申请的又一个实施例中,比较各个节点的误差阈值及对应骨骼参数的子方法流程图;
图6所示为在图5的子方法流程中,相邻动画帧之间线性插值以形成理想骨骼参数的示意图;
图7所示为本申请所公开的骨骼动画关键帧压缩装置的模块结构图。
具体实施方式
以下将结合实施例和附图对本申请的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本申请的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本申请中所使用的上、下、左、右等描述仅仅是相对于附图中本申请各组成部分的相互位置关系来说的。在本申请和所附权利要求书中所使用的单数形式的“一种”、“该”和“所述”也旨在包括多数形式,除非上下文清楚地表示其他含义。
此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本申请中可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本申请范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”。
参照图1所示的方法流程图,本申请所公开的骨骼动画关键帧压缩方法可以包括以下步骤:
S100)读取动画文件的内容,生成动画文件内各个三维模型的骨骼节点树;
S200)统计每个节点的间接后代数量,并根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列;
S300)为骨骼节点序列中的各个节点从前到后按照从小到大分配相应的误差阈值;
S400)比较各个节点对应的误差阈值及动画帧与相邻前后帧中各个节点对应骨骼参数的距离,以保留或剔除所述动画帧中的节点而形成压缩动画文件。
具体地,当动画文件在被读入以后,按照各个骨骼节点之间的父子关系,生成相应的树形数据结构,以方便后继步骤对各节点中的数据进行检索和处理。其中,每根骨骼包含了以下三组参数:位移(position,包括x、y和z三个参数,表示骨骼在三维空间的坐标)、旋转(rotation,包括x、y、z和w四个参数,即使用四元数的方式表示骨骼的旋转量)及缩放(scale,包括x、y和z三个参数,表示骨骼在三维空间的三个正交方向上的缩放量),一共有10个浮点型数据。每根骨骼的上述10个浮点形数据所组成的10维向量(骨骼向量)对应于10维空间中的一个点。在骨骼的整个运动过程中,上述点随着播放时间在所述10维空间中运动。一方面,因为三维模型的骨骼分别处于不同的层次,所以根据骨骼所在的层次以匹配相应的误差阈值,能更有针对性地控制全体骨骼的运动精度;另一方面,由于子节点的骨骼在数量上远多于父节点的骨骼,因此对子节点的骨骼进行精度上的压缩(即采用更为宽松的误差阈值,使得能够更容易剔除动画帧中的子节点),能够更为显著地压缩最后所得的动画文件。参照图2所示的示意图,图中节点A1是节点A的子节点。帧N、N+1、N+2、……、N+4是相邻的动画帧。实线节点表示保留在动画帧中的节点,虚线节点表示从动画帧中剔除的节点。可以看到,经过上述压缩处理后,由于子节点采用更为宽松的误差阈值,所以相对于父节点A,在动画帧中记录更少子节点A1的数据,从而实现压缩动画文件的同时尽量保证动画整体质量的目的。
参照图3所示的子方法流程图,在本申请的上述一个或多个实施例中,所述步骤S200还包括以下的子步骤:
S201)采用广度优先算法遍历骨骼节点树,以递归计算骨骼节点树中各个节点的间接后代数量;
S202)按照骨骼节点树中各个节点之间的父子关系,采用归并排序算法将根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列。
其中,由于每个父节点的间接后代数量等于以其为根节点的子树的节点个数减去该节点的直接子节点(即与该节点直接相连的子节点)后,再减去自身;因此,在本申请的一个或多个实施例中,可以先采用广度优先算法遍历骨骼节点树,确定各个节点与其子节点(包括直接子节点和间接子节点)的间接后代数量的递归公式。因为在骨骼节点树中,叶子节点的间接后代数量为0,所以基于以上递归公式可以快速计算骨骼节点树中各个节点的间接后代数量。同时,由于在同一棵子树上,父节点的间接后代数量大于或等于子节点的间接后代数量,在本申请的上述一个或多个实施例中,对于这种已经初步排序的序列,为提高排序过程的算法效率和稳定性,可以基于上述各个节点间的父子关系,采用归并排序算法,根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列。本领域技术人员可以根据骨骼节点树的具体数据结构,采用本领域的常规广度优先搜索算法或其各种优化变形,本申请对此不予限定。
参照图4所示的子方法流程图,在本申请的一个或多个实施例中,所述步骤S300还包括以下的子步骤:
S301)分别为骨骼节点序列中的头节点和尾节点分配预设的最大误差阈值和最小误差阈值;
S302)根据骨骼节点序列中各个节点的间接后代数量,通过对最大误差阈值和最小误差阈值线性插值的方式为每个节点分配对应的误差阈值。
由于最大误差阈值用于控制骨骼节点树的根节点误差范围,因此该参数可以用于调整压缩后三维模型的整体质量。相应地,最小误差阈值用于控制骨骼节点树的根节点误差范围,因此该参数可以用于调整动画文件的压缩比率。然而,当两者之间的差较大时,压缩后的动画文件可能由于三维模型不同层次骨骼之间的精度误差控制差异较大,导致压缩后的动画文件不够流畅。在实际使用过程中,需要相关人员根据具体实际需要进行调整。
参照图5所示的子方法流程图,在本申请的一个或多个实施例中,所述步骤S400还可以包括以下的子步骤:
S401)设置动画文件的首尾帧为关键帧,所述关键帧记录所有节点的骨骼参数;
S402)对于首尾帧除外的动画帧,分别提取与所述动画帧相邻的前动画帧和后动画帧;
S403)根据前动画帧和后动画帧中各个节点的骨骼参数,通过线性插值计算所述动画帧对应节点的理想骨骼参数,以计算所述动画帧中各个节点的理想骨骼参数与实际的骨骼参数之间的插值差异;
S404)比较各个节点的插值差异和对应的误差阈值,如果插值差异小于误差阈值则从所述动画帧中剔除对应节点,反之保留节点在所述动画帧中。
具体地,参照图6所示的示意图,对于某个具体的节点在指定动画帧中的骨骼参数(即上述骨骼向量所对应的点在指定时刻所指向的位置),可以根据该节点分别在前动画帧和后动画帧中的骨骼参数(对应于骨骼向量所对应的点在前一时刻和后一时刻所在位置)的线性插值而估算得到。将估算得到理想骨骼参数与节点在指定动画帧中的骨骼参数相比较,即可得到两者之间的差异。
针对上述子步骤,可以有多种的进一步优化。例如,在本申请的上述一个或多个实施例中,插值差异为各个节点的理想骨骼参数与实际的骨骼参数之间的切比雪夫距离,即两者之间的距离为其各分量数值差绝对值的最大值,从而保证剔除相关节点所导致骨骼向量在各个分量上的精度损失在指定的误差阈值范围。
由于当父节点被剔除时,以该父节点为根节点的子数一般都会被剔除;因此为缩短上述压缩算法的运行时间,在本申请的上述一个或多个实施例中,在步骤S403和S404中,所述动画帧中各个节点线性插值计算和比较是按照骨骼节点树采用广度优先算法依次执行的。再进一步地,当在所述动画帧中剔除某个节点时,同时直接剔除所述节点的所有子节点。
参照图7所示的装置模块图,本申请所公开的骨骼动画关键帧压缩装置可以包括以下模块:读取模块,用于读取动画文件的内容,生成动画文件内各个三维模型的骨骼节点树;统计模块,用于统计每个节点的间接后代数量,并根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列;配置模块,用于为骨骼节点序列中的各个节点从前到后按照从小到大分配相应的误差阈值;压缩模块,用于比较各个节点对应的误差阈值及动画帧与相邻前后动画帧中各个节点对应骨骼参数的距离,以保留或剔除所述动画帧中的节点而形成压缩动画文件。具体地,当动画文件在被读入以后,按照各个骨骼节点之间的父子关系,生成相应的树形数据结构,以方便后继步骤对各节点中的数据进行检索和处理。其中,每根骨骼包含了以下三组参数:位移(position,包括x、y和z三个参数,表示骨骼在三维空间的坐标)、旋转(rotation,包括x、y、z和w四个参数,即使用四元数的方式表示骨骼的旋转量)及缩放(scale,包括x、y和z三个参数,表示骨骼在三维空间的三个正交方向上的缩放量),一共有10个浮点型数据。每根骨骼的上述10个浮点形数据所组成的10维向量(骨骼向量)对应于10维空间中的一个点。在骨骼的整个运动过程中,上述点随着播放时间在所述10维空间中运动。一方面,因为三维模型的骨骼分别处于不同的层次,所以根据骨骼所在的层次以匹配相应的误差阈值,能更有针对性地控制全体骨骼的运动精度;另一方面,由于子节点的骨骼在数量上远多于父节点的骨骼,因此对子节点的骨骼进行精度上的压缩(即采用更为宽松的误差阈值,使得能够更容易剔除动画帧中的子节点),能够更为显著地压缩最后所得的动画文件。参照图2所示的示意图,图中节点A1是节点A的子节点。帧N、N+1、N+2、……、N+4是相邻的动画帧。实线节点表示保留在动画帧中的节点,虚线节点表示从动画帧中剔除的节点。可以看到,经过上述压缩处理后,由于子节点采用更为宽松的误差阈值,所以相对于父节点A,在动画帧中记录更少子节点A1的数据,从而实现压缩动画文件的同时尽量保证动画整体质量的目的。
在本申请的上述一个或多个实施例中,所述统计模块还包括以下的子模块:递归模块,用于采用广度优先算法遍历骨骼节点树,以递归计算骨骼节点树中各个节点的间接后代数量;排序模块,用于按照骨骼节点树中各个节点之间的父子关系,采用归并排序算法将根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列。其中,由于每个父节点的间接后代数量等于以其为根节点的子树的节点个数减去该节点的直接子节点(即与该节点直接相连的子节点)后,再减去自身;因此,在本申请的一个或多个实施例中,可以先采用广度优先算法遍历骨骼节点树,确定各个节点与其子节点(包括直接子节点和间接子节点)的间接后代数量的递归公式。因为在骨骼节点树中,叶子节点的间接后代数量为0,所以基于以上递归公式可以快速计算骨骼节点树中各个节点的间接后代数量。同时,由于在同一棵子树上,父节点的间接后代数量大于或等于子节点的间接后代数量,在本申请的上述一个或多个实施例中,对于这种已经初步排序的序列,为提高排序过程的算法效率和稳定性,可以基于上述各个节点间的父子关系,采用归并排序算法,根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列。本领域技术人员可以根据骨骼节点树的具体数据结构,采用本领域的常规广度优先搜索算法或其各种优化变形,本申请对此不予限定。
在本申请的一个或多个实施例中,所述配置模块还包括以下的子模块:分配模块,用于分别为骨骼节点序列中的头节点和尾节点分配预设的最大误差阈值和最小误差阈值;第一插值模块,用于根据骨骼节点序列中各个节点的间接后代数量,通过对最大误差阈值和最小误差阈值线性插值的方式为每个节点分配对应的误差阈值。
由于最大误差阈值用于控制骨骼节点树的根节点误差范围,因此该参数可以用于调整压缩后三维模型的整体质量。相应地,最小误差阈值用于控制骨骼节点树的根节点误差范围,因此该参数可以用于调整动画文件的压缩比率。然而,当两者之间的差较大时,压缩后的动画文件可能由于三维模型不同层次骨骼之间的精度误差控制差异较大,导致压缩后的动画文件不够流畅。在实际使用过程中,需要相关人员根据具体实际需要进行调整。
在本申请的一个或多个实施例中,所述压缩模块还可以包括以下的子模块:设置模块,用于设置动画文件的首尾帧为关键帧,所述关键帧记录所有节点的骨骼参数;提取模块,用于对于首尾帧除外的动画帧,分别提取与所述动画帧相邻的前动画帧和后动画帧;第二插值模块,用于根据前动画帧和后动画帧中各个节点的骨骼参数,通过线性插值计算所述动画帧对应节点的理想骨骼参数,以计算所述动画帧中各个节点的理想骨骼参数与实际的骨骼参数之间的插值差异;比较模块,用于比较各个节点的插值差异和对应的误差阈值,如果插值差异小于误差阈值则从所述动画帧中剔除对应节点,反之保留节点在所述动画帧中。具体地,参照图6所示的示意图,对于某个节点在指定动画帧中的骨骼参数(即上述骨骼向量所对应的点在指定时刻所指向的位置),可以根据该节点分别在前动画帧和后动画帧中的骨骼参数(对应于骨骼向量所对应的点在前一时刻和后一时刻所在位置)的线性插值而估算得到。将估算得到理想骨骼参数与节点在指定动画帧中的骨骼参数相比较,即可得到两者之间的差异。
针对上述子模块,可以有多种的进一步优化。例如,在本申请的上述一个或多个实施例中,插值差异为各个节点的理想骨骼参数与实际的骨骼参数之间的切比雪夫距离,即两者之间的距离为其各分量数值差绝对值的最大值,从而保证剔除相关节点所导致骨骼向量在各个分量上的精度损失在指定的误差阈值范围。
由于当父节点被剔除时,以该父节点为根节点的子数一般都会被剔除;因此为缩短上述压缩算法的运行时间,在本申请的上述一个或多个实施例中,在步骤S403和S404中,所述动画帧中各个节点线性插值计算和比较是按照骨骼节点树采用广度优先算法依次执行的。再进一步地,当在所述动画帧中剔除某个节点时,同时直接剔除所述节点的所有子节点。
应当认识到,本申请的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。该方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
进一步地,该方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本申请的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文该步骤的指令或程序时,本文所述的申请包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本申请所述的方法和技术编程时,本申请还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本申请优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
其他变型在本申请的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其某些实施例。然而,应当理解,并不意图将本申请局限于所公开的一种或多种具体形式;相反,其意图涵盖如所附权利要求书中所限定落在本申请的精神和范围内的所有修改、替代构造和等效物。

Claims (9)

1.一种骨骼动画关键帧压缩方法,其特征在于,包括以下步骤:
S100)读取动画文件的内容,生成动画文件内各个三维模型的骨骼节点树;
S200)统计每个节点的间接后代数量,并根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列;
S300)为骨骼节点序列中的各个节点从前到后按照从小到大分配相应的误差阈值;
S400)比较各个节点对应的误差阈值及动画帧与相邻前后动画帧中各个节点对应骨骼参数的距离,以保留或剔除所述动画帧中的节点而形成压缩动画文件。
2.根据权利要求1所述的方法,其特征在于,所述步骤S200还包括以下的子步骤:
S201)采用广度优先算法遍历骨骼节点树,以递归计算骨骼节点树中各个节点的间接后代数量;
S202)按照骨骼节点树中各个节点之间的父子关系,采用归并排序算法将根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤S300还包括以下的子步骤:
S301)分别为骨骼节点序列中的头节点和尾节点分配预设的最大误差阈值和最小误差阈值;
S302)根据骨骼节点序列中各个节点的间接后代数量,通过对最大误差阈值和最小误差阈值线性插值的方式为每个节点分配对应的误差阈值。
4.根据权利要求3所述的方法,其特征在于,所述步骤S400还包括以下的子步骤:
S401)设置动画文件的首尾帧为关键帧,所述关键帧记录所有节点的骨骼参数;
S402)对于首尾帧除外的动画帧,分别提取与所述动画帧相邻的前动画帧和后动画帧;
S403)根据前动画帧和后动画帧中各个节点的骨骼参数,通过线性插值计算所述动画帧对应节点的理想骨骼参数,以计算所述动画帧中各个节点的理想骨骼参数与实际的骨骼参数之间的插值差异;
S404)比较各个节点的插值差异和对应的误差阈值,如果插值差异小于误差阈值则从所述动画帧中剔除对应节点,反之保留节点在所述动画帧中。
5.根据权利要求4所述的方法,其特征在于,插值差异为各个节点的理想骨骼参数与实际的骨骼参数之间的切比雪夫距离。
6.根据权利要求4或5所述的方法,其特征在于,在步骤S403和S404中,所述动画帧中各个节点线性插值计算和比较是按照骨骼节点树采用广度优先算法依次执行的。
7.根据权利要求6所述的方法,其特征在于,当在所述动画帧中剔除某个节点时,同时直接剔除所述节点的所有子节点。
8.一种骨骼动画关键帧压缩装置,其特征在于,包括以下模块:
读取模块,用于读取动画文件的内容,生成动画文件内各个三维模型的骨骼节点树;
统计模块,用于统计每个节点的间接后代数量,并根据每个节点的间接后代数量从大到小排序骨骼节点树的各个节点以形成骨骼节点序列;
配置模块,用于为骨骼节点序列中的各个节点从前到后按照从小到大分配相应的误差阈值;
压缩模块,用于比较各个节点对应的误差阈值及动画帧与相邻前后动画帧中各个节点对应骨骼参数的距离,以保留或剔除所述动画帧中的节点而形成压缩动画文件。
9.一种计算机可读存储介质,其上存储有计算机指令,其特征在于该指令被处理器执行时实现如权利要求1至7中任一项所述的方法的步骤。
CN201910022992.0A 2019-01-10 2019-01-10 一种骨骼动画关键帧压缩方法及装置 Active CN109872375B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910022992.0A CN109872375B (zh) 2019-01-10 2019-01-10 一种骨骼动画关键帧压缩方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910022992.0A CN109872375B (zh) 2019-01-10 2019-01-10 一种骨骼动画关键帧压缩方法及装置

Publications (2)

Publication Number Publication Date
CN109872375A true CN109872375A (zh) 2019-06-11
CN109872375B CN109872375B (zh) 2023-04-14

Family

ID=66917601

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910022992.0A Active CN109872375B (zh) 2019-01-10 2019-01-10 一种骨骼动画关键帧压缩方法及装置

Country Status (1)

Country Link
CN (1) CN109872375B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111161365A (zh) * 2019-12-30 2020-05-15 珠海金山网络游戏科技有限公司 一种骨骼动画数据的压缩方法及装置
CN111402369A (zh) * 2020-03-10 2020-07-10 京东数字科技控股有限公司 互动广告的处理方法、装置、终端设备及存储介质
CN111667544A (zh) * 2020-07-02 2020-09-15 腾讯科技(深圳)有限公司 动画数据压缩方法、装置、设备及存储介质
CN112634417A (zh) * 2020-12-25 2021-04-09 上海米哈游天命科技有限公司 一种角色动画的生成方法、装置、设备及存储介质
CN112802161A (zh) * 2021-01-27 2021-05-14 青岛联合创智科技有限公司 一种三维虚拟角色智能蒙皮方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104021584A (zh) * 2014-06-25 2014-09-03 无锡梵天信息技术股份有限公司 一种骨骼蒙皮动画的实现方法
CN105427363A (zh) * 2015-11-13 2016-03-23 华北理工大学 一种骨骼动画文件的存储方法
WO2017128893A1 (zh) * 2016-01-27 2017-08-03 努比亚技术有限公司 关键帧动画的生成装置及方法
CN107578462A (zh) * 2017-09-12 2018-01-12 北京城市系统工程研究中心 一种基于实时运动捕捉的骨骼动画数据处理方法
WO2018050001A1 (zh) * 2016-09-14 2018-03-22 厦门幻世网络科技有限公司 一种用于生成动画数据的方法和装置
US20180322680A1 (en) * 2017-05-08 2018-11-08 Microsoft Technology Licensing, Llc Creating a mixed-reality video based upon tracked skeletal features

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104021584A (zh) * 2014-06-25 2014-09-03 无锡梵天信息技术股份有限公司 一种骨骼蒙皮动画的实现方法
CN105427363A (zh) * 2015-11-13 2016-03-23 华北理工大学 一种骨骼动画文件的存储方法
WO2017128893A1 (zh) * 2016-01-27 2017-08-03 努比亚技术有限公司 关键帧动画的生成装置及方法
WO2018050001A1 (zh) * 2016-09-14 2018-03-22 厦门幻世网络科技有限公司 一种用于生成动画数据的方法和装置
US20180322680A1 (en) * 2017-05-08 2018-11-08 Microsoft Technology Licensing, Llc Creating a mixed-reality video based upon tracked skeletal features
CN107578462A (zh) * 2017-09-12 2018-01-12 北京城市系统工程研究中心 一种基于实时运动捕捉的骨骼动画数据处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李海燕等: "正向运动学和关键帧系统的骨骼动画引擎实现", 《电脑编程技巧与维护》 *
李顺意等: "基于帧间距的运动关键帧提取", 《计算机工程》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111161365A (zh) * 2019-12-30 2020-05-15 珠海金山网络游戏科技有限公司 一种骨骼动画数据的压缩方法及装置
CN111161365B (zh) * 2019-12-30 2023-05-09 珠海金山数字网络科技有限公司 一种骨骼动画数据的压缩方法及装置
CN111402369A (zh) * 2020-03-10 2020-07-10 京东数字科技控股有限公司 互动广告的处理方法、装置、终端设备及存储介质
CN111402369B (zh) * 2020-03-10 2023-11-03 京东科技控股股份有限公司 互动广告的处理方法、装置、终端设备及存储介质
CN111667544A (zh) * 2020-07-02 2020-09-15 腾讯科技(深圳)有限公司 动画数据压缩方法、装置、设备及存储介质
CN111667544B (zh) * 2020-07-02 2023-03-10 腾讯科技(深圳)有限公司 动画数据压缩方法、装置、设备及存储介质
CN112634417A (zh) * 2020-12-25 2021-04-09 上海米哈游天命科技有限公司 一种角色动画的生成方法、装置、设备及存储介质
CN112634417B (zh) * 2020-12-25 2023-01-10 上海米哈游天命科技有限公司 一种角色动画的生成方法、装置、设备及存储介质
CN112802161A (zh) * 2021-01-27 2021-05-14 青岛联合创智科技有限公司 一种三维虚拟角色智能蒙皮方法
CN112802161B (zh) * 2021-01-27 2022-11-15 青岛联合创智科技有限公司 一种三维虚拟角色智能蒙皮方法

Also Published As

Publication number Publication date
CN109872375B (zh) 2023-04-14

Similar Documents

Publication Publication Date Title
CN109872375A (zh) 一种骨骼动画关键帧压缩方法及装置
CN108898630B (zh) 一种三维重建方法、装置、设备和存储介质
CN104778688B (zh) 点云数据的配准方法及装置
CN104658038B (zh) 基于动作捕捉的三维数字内容智能制作方法及制作系统
CN109285215A (zh) 一种人体三维模型重建方法、装置和存储介质
CN109544677A (zh) 基于深度图像关键帧的室内场景主结构重建方法及系统
CN109934065A (zh) 一种用于手势识别的方法和装置
CN109377445A (zh) 模型训练方法、替换图像背景的方法、装置和电子系统
CN110728220A (zh) 基于人体动作骨骼信息的体操辅助训练方法
CN106030661A (zh) 视野独立的3d场景纹理化背景
CN108763827B (zh) 一种输电塔有限元模型建立方法及装置
CN109446952A (zh) 一种钢琴监督方法、装置、计算机设备及存储介质
CN110533639A (zh) 一种关键点定位方法及装置
CN109800401A (zh) 信息报表自动生成方法及装置
CN106204635B (zh) 基于l0最小化的人体连续帧骨骼优化方法
CN108242074A (zh) 一种基于单张讽刺肖像画的三维夸张人脸生成方法
CN105957149A (zh) 一种适用于高效渲染的城市三维模型数据预处理方法
CN107909114A (zh) 训练有监督机器学习的模型的方法和装置
CN110717978B (zh) 基于单张图像的三维头部重建方法
CN113129447A (zh) 基于单张手绘草图的三维模型生成方法、装置和电子设备
CN109993818B (zh) 三维人体模型运动合成的方法、装置、设备及介质
CN106250873A (zh) 运动目标提取方法及装置
CN110047509A (zh) 一种两级子空间划分方法及装置
CN106504267B (zh) 一种虚拟人运动数据关键帧抽取方法
CN109785413A (zh) 基于Unity的可配置动画文件树形压缩方法及装置

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
CB02 Change of applicant information

Address after: 519000 Room 102, 202, 302, 402 Room 327 Room 102, 202 Room 329 Room 302, 325 Qiandao Ring Road, Tangjiawan Town, High-tech Zone, Zhuhai City, Guangdong Province

Applicant after: Zhuhai Jinshan Digital Network Technology Co.,Ltd.

Applicant after: Guangzhou Xishanju Network Technology Co.,Ltd.

Address before: 519000 building 3, Jinshan Software Park, 325 Qiandao Ring Road, Xiangzhou District, Zhuhai City, Guangdong Province

Applicant before: ZHUHAI KINGSOFT ONLINE GAME TECHNOLOGY Co.,Ltd.

Applicant before: GUANGZHOU SEASUN ENTERTAINMENT NETWORK TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant