CN107610210B - 骨骼动画系统优化方法、装置及骨骼动画系统 - Google Patents
骨骼动画系统优化方法、装置及骨骼动画系统 Download PDFInfo
- Publication number
- CN107610210B CN107610210B CN201710831225.5A CN201710831225A CN107610210B CN 107610210 B CN107610210 B CN 107610210B CN 201710831225 A CN201710831225 A CN 201710831225A CN 107610210 B CN107610210 B CN 107610210B
- Authority
- CN
- China
- Prior art keywords
- skeleton
- parameter
- bone
- reference counting
- animation
- 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
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种骨骼动画系统优化方法。该方法为系统中的每一根骨骼设置初值为0的第一和第二引用计数参数;引用计数参数按照以下方法更新:当该骨骼每被一个新的蒙皮引用或者被绑定一个新的模型或特效时,则将该骨骼的第一引用计数参数加1,并检查该骨骼当前的两个引用计数参数是否都为0,如是,则向上逐级递归查找到第一个两个引用计数参数不都为0的父骨骼,并将所找到的每一根父骨骼的第二引用计数参数加1;在进行骨骼动画计算时,仅对两个引用计数参数不都为0的骨骼进行动画计算。本发明还公开了一种骨骼动画系统优化装置及一种骨骼动画系统。本发明可大幅减少要计算的骨骼数量,进而提高骨骼动画系统的运行效率。
Description
技术领域
本发明涉及骨骼动画系统,尤其涉及一种骨骼动画系统优化方法、装置。
背景技术
目前骨骼动画广泛应用于游戏引擎中。骨骼动画从技术角度可以分为两部分:骨骼和蒙皮,蒙皮即为顶点网格,它依附在骨骼上,跟随骨骼位置变化做出扭曲运动。骨骼位置的计算依赖于已有的动画数据资源,然后依据时间做出位置插值。骨骼动画中的骨骼分为两种类型,一种是基本骨骼,一种是辅助骨骼。基本骨骼就是构成骨架的必要骨骼,比如构成角色骨架的头骨、大腿骨、小腿骨、盆骨等,用于对依附的蒙皮提供位置信息。辅助骨骼并非角色骨架的必要骨骼,多用于链接绑定特效、模型等。随着游戏行业的发展,角色越来越复杂,角色本身拥有的骨骼数量以及辅助骨骼数量也越来越多。骨骼动画系统的运行消耗和角色数量、单根骨骼的计算量以及整个骨架的骨骼数量成正比。骨骼数量的增多,势必增加骨骼动画系统的消耗,进而影响整个游戏引擎的运行效率。
综上可知,有必要对骨骼动画系统进行优化,以尽可能在保证骨骼动画系统运行正确的前提下减少要计算的骨骼数量,进而提高骨骼动画系统的运行效率。
发明内容
本发明所要解决的技术问题在于克服现有技术不足,提供一种骨骼动画系统优化方法,可在保证骨骼动画系统运行正确的前提下减少要计算的骨骼数量,进而提高骨骼动画系统的运行效率。
本发明具体采用以下技术方案解决上述技术问题:
一种骨骼动画系统优化方法,为系统中的每一根骨骼设置两个初始值均为0的参数:第一引用计数参数和第二引用计数参数;对于系统中的每一根骨骼,其第一引用计数参数和第二引用计数参数按照以下方法更新:当该骨骼每被一个新的蒙皮引用或者被绑定一个新的模型或特效时,则将该骨骼的第一引用计数参数加1,并检查该骨骼当前的第一引用计数参数和第二引用计数参数是否都为0,如是,则向上逐级递归查找到第一个第一引用计数参数和第二引用计数参数不都为0的父骨骼,并将所找到的每根父骨骼的第二引用计数参数加1;在进行骨骼动画计算时,将第一引用计数参数和第二引用计数参数都为0的骨骼排除,仅对第一引用计数参数和第二引用计数参数不都为0的骨骼进行动画计算。
根据相同的发明思路还可以得到以下技术方案:
一种骨骼动画系统优化装置,包括:
引用计数模块,用于为系统中的每一根骨骼设置两个初始值均为0的参数:第一引用计数参数和第二引用计数参数;并按照以下方法对系统中每一根骨骼的第一引用计数参数和第二引用计数参数进行更新:当该骨骼每被一个新的蒙皮引用或者被绑定一个新的模型或特效时,则将该骨骼的第一引用计数参数加1,并检查该骨骼当前的第一引用计数参数和第二引用计数参数是否都为0,如是,则向上逐级递归查找到第一个第一引用计数参数和第二引用计数参数不都为0的父骨骼,并将所找到的每根父骨骼的第二引用计数参数加1;
优化模块,用于在进行骨骼动画计算时,将第一引用计数参数和第二引用计数参数都为0的骨骼排除,仅将第一引用计数参数和第二引用计数参数不都为0的骨骼提供给系统进行动画计算。
一种骨骼动画系统,包括上述优化装置。
相比现有技术,本发明具有以下有益效果:
本发明通过设置骨骼的引用计数参数,在骨骼动画计算时,将未被蒙皮所使用且未绑定特效和模型的骨骼剔除在外,不对其进行动画计算,从而在保证骨骼动画系统运行正确的前提下大幅减少要计算的骨骼数量,可比现有技术减少50%以上骨骼计算数量,进而有效提高了骨骼动画系统的运行效率。
本发明仅通过设置两个引用计数参数即可实现,算法简单,不会占用额外的软硬件资源。
附图说明
图1为具体实施方式中骨骼引用计数参数的更新流程示意图;
图2为具体实施方式中骨骼动画计算的判断流程示意图。
具体实施方式
骨骼动画系统中,基础骨骼用于对附加在其上的蒙皮提供位置信息,辅助骨骼用于对绑定其上的特效和模型提供位置信息。美术制作的骨骼包括所有该角色可能使用的蒙皮以及绑定信息所对应的骨骼,但一个角色在同一时间往往不可能同时用到该骨架可以使用的所有蒙皮以及绑定的特效和模型。比如,游戏中的无头骑士,头部是没有的,那么头部骨骼的位置计算在这个时候就毫无意义,属于计算资源的浪费。再比如,角色目前没有绑定特效A,但是用于绑定特效A的辅助骨骼还在计算。本发明将针对这两种情况,通过剔除多余的骨骼计算来对骨骼动画系统进行优化。
另外在骨骼动画计算过程中,每根骨骼Bone的已有动画数据位置是相对于其父骨骼的位置,因此如果要计算当前骨骼Bone,那么在这之前一定要计算其父骨骼FBone。这是我们在做骨骼动画引用计数时不得不考虑的一点:
BM=BAM*FBM(BM为Bone骨骼动画计算结果,BAM为Bone动画插值结果,FBM为父骨骼FBone的最终骨骼动画计算结果)。
根据以上思路可得到本发明技术方案如下:
一种骨骼动画系统优化方法,为系统中的每一根骨骼设置两个初始值均为0的参数:第一引用计数参数和第二引用计数参数;对于系统中的每一根骨骼,其第一引用计数参数和第二引用计数参数按照以下方法更新:当该骨骼每被一个新的蒙皮引用或者被绑定一个新的模型或特效时,则将该骨骼的第一引用计数参数加1,并检查该骨骼当前的第一引用计数参数和第二引用计数参数是否都为0,如是,则向上逐级递归查找到第一个第一引用计数参数和第二引用计数参数不都为0的父骨骼,并将所找到的每根父骨骼的第二引用计数参数加1;在进行骨骼动画计算时,将第一引用计数参数和第二引用计数参数都为0的骨骼排除,仅对第一引用计数参数和第二引用计数参数不都为0的骨骼进行动画计算。
一种骨骼动画系统优化装置,包括:
引用计数模块,用于为系统中的每一根骨骼设置两个初始值均为0的参数:第一引用计数参数和第二引用计数参数;并按照以下方法对系统中每一根骨骼的第一引用计数参数和第二引用计数参数进行更新:当该骨骼每被一个新的蒙皮引用或者被绑定一个新的模型或特效时,则将该骨骼的第一引用计数参数加1,并检查该骨骼当前的第一引用计数参数和第二引用计数参数是否都为0,如是,则向上逐级递归查找到第一个第一引用计数参数和第二引用计数参数不都为0的父骨骼,并将所找到的每根父骨骼的第二引用计数参数加1;
优化模块,用于在进行骨骼动画计算时,将第一引用计数参数和第二引用计数参数都为0的骨骼排除,仅将第一引用计数参数和第二引用计数参数不都为0的骨骼提供给系统进行动画计算。
一种骨骼动画系统,包括上述优化装置。
为便于公众理解,下面以一个具体实例并结合附图来对本发明技术方案进行进一步详细说明。
本发明的基础是对每根骨骼建立骨骼引用计数,本实施例中对每根骨骼增加如下数据结构:
该结构体中,common_ref表示当前骨骼与多少个蒙皮、模型、特效有绑定关系。child_ref表示当前骨骼有多少根子骨骼在使用中。
在骨骼初始化时,将所有骨骼的骨骼引用计数参数设置为0。
BoneRefs.common_ref=0
BoneRefs.child_ref=0
骨骼引用计数参数的更新流程如图1所示。对引用计数会产生影响的操作有绑定蒙皮、特效、模型。蒙皮是在角色初始化的时候绑定到角色的整个骨架上,在蒙皮数据中有一个骨骼列表,保存了该蒙皮绑定所对应的多根骨骼。而绑定模型和特效的操作一般发生在游戏过程中,一般情况下模型和特效只绑定在一根骨骼上。蒙皮初始化或者检查到模型特效的绑定操作后,首先查找要绑定的骨骼Bone(一根或者多根),检查Bone的骨骼引用BoneRefs:如果Bone的BoneRefs.common_ref和BoneRefs.child_ref不都为0,说明Bone已经被引用,无需检查Bone的父骨骼FBone,直接将BoneRefs.common_ref做加1操作;如果BoneRefs.common_ref和BoneRefs.child_ref都为0,表示当前骨骼从未被引用过,因为当前骨骼的计算依赖于其父骨骼FBone,所以当我们将Bone的引用参数BonesRefs.common_ref加1后需要查找Bone的父骨骼FBone。如果父骨骼FBone的common_ref和child_ref不都为0,表示父骨骼已经被引用过,只需要将FBone的child_ref加1即可。如果父骨骼FBone的common_ref和child_ref都为0,表示FBone也从未被引用过,因为它的计算也依赖于它的父骨骼FFBone,所以在FBone加1操作后需要递归检查FBone的父骨骼FFBone;依次类推,做递归检查,直到检查到父骨骼的引用参数common_ref和child_ref不都为0时,停止检查,并对这个父骨骼的child_ref做加1操作。
之所以有检查父骨骼的操作,原因正如之前提到的,每根骨骼的计算需要用到其父骨骼FBone的骨骼动画运算结果。如果我们只将当前骨骼Bone引用计数common_ref增加,而父骨骼的引用计数common_ref和child_ref都为0,父骨骼的位置没有计算,那么无法得到Bone的骨骼动画运算结果。
骨骼动画计算时的判断流程如图2所示,在决定是否对Bone进行骨骼动画计算时,要同时考虑它的common_ref和child_ref,如果common_ref不为0,表示该骨骼被蒙皮或者特效或者模型引用,如果child_ref不为0,表示当前骨骼被子骨骼引用,需要对骨骼Bone进行计算。只有Bone的common_ref和child_ref都为0的时候,表示该骨骼既没被蒙皮或者特效引用也没有被子骨骼引用,不需要进行计算。
为了验证本发明技术效果,使用本发明优化方法前后所需的骨骼计算数量进行测试比较(所选角色为常态下只绑定一件武器),测试结果如下表1所示:
表1
使用前骨骼计算数量 | 使用后骨骼计算数量 |
140 | 69 |
可以看出,就此角色而言,本发明方法将骨骼动画计算效率提升约51%。
Claims (3)
1.一种骨骼动画系统优化方法,其特征在于,为系统中的每一根骨骼设置两个初始值均为0的参数:第一引用计数参数和第二引用计数参数;对于系统中的每一根骨骼,其第一引用计数参数和第二引用计数参数按照以下方法更新:当该骨骼每被一个新的蒙皮引用或者被绑定一个新的模型或特效时,则将该骨骼的第一引用计数参数加1,并检查该骨骼当前的第一引用计数参数和第二引用计数参数是否都为0,如是,则向上逐级递归查找到第一个第一引用计数参数和第二引用计数参数不都为0的父骨骼,并将所找到的每根父骨骼的第二引用计数参数加1;在进行骨骼动画计算时,将第一引用计数参数和第二引用计数参数都为0的骨骼排除,仅对第一引用计数参数和第二引用计数参数不都为0的骨骼进行动画计算。
2.一种骨骼动画系统优化装置,其特征在于,包括:
引用计数模块,用于为系统中的每一根骨骼设置两个初始值均为0的参数:第一引用计数参数和第二引用计数参数;并按照以下方法对系统中每一根骨骼的第一引用计数参数和第二引用计数参数进行更新:当该骨骼每被一个新的蒙皮引用或者被绑定一个新的模型或特效时,则将该骨骼的第一引用计数参数加1,并检查该骨骼当前的第一引用计数参数和第二引用计数参数是否都为0,如是,则向上逐级递归查找到第一个第一引用计数参数和第二引用计数参数不都为0的父骨骼,并将所找到的每根父骨骼的第二引用计数参数加1;
优化模块,用于在进行骨骼动画计算时,将第一引用计数参数和第二引用计数参数都为0的骨骼排除,仅将第一引用计数参数和第二引用计数参数不都为0的骨骼提供给系统进行动画计算。
3.一种骨骼动画系统,其特征在于,包括权利要求2所述优化装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710831225.5A CN107610210B (zh) | 2017-09-15 | 2017-09-15 | 骨骼动画系统优化方法、装置及骨骼动画系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710831225.5A CN107610210B (zh) | 2017-09-15 | 2017-09-15 | 骨骼动画系统优化方法、装置及骨骼动画系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107610210A CN107610210A (zh) | 2018-01-19 |
CN107610210B true CN107610210B (zh) | 2020-10-02 |
Family
ID=61062455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710831225.5A Active CN107610210B (zh) | 2017-09-15 | 2017-09-15 | 骨骼动画系统优化方法、装置及骨骼动画系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107610210B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111028321A (zh) * | 2019-12-16 | 2020-04-17 | 网易(杭州)网络有限公司 | 蒙皮检测方法、装置以及电子终端 |
CN111292402B (zh) * | 2020-02-13 | 2023-03-07 | 腾讯科技(深圳)有限公司 | 数据处理的方法、装置、设备及计算机可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017080199A (ja) * | 2015-10-29 | 2017-05-18 | キヤノンマーケティングジャパン株式会社 | 情報処理装置、情報処理方法、プログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521860A (zh) * | 2011-11-16 | 2012-06-27 | 戚军 | 一种骨骼动画的实现方法 |
CN102930584A (zh) * | 2012-11-13 | 2013-02-13 | 沈阳信达信息科技有限公司 | 基于gpu的骨骼动画优化 |
CN104077797B (zh) * | 2014-05-19 | 2017-05-10 | 无锡梵天信息技术股份有限公司 | 三维游戏动画系统 |
CN104021584B (zh) * | 2014-06-25 | 2017-06-06 | 无锡梵天信息技术股份有限公司 | 一种骨骼蒙皮动画的实现方法 |
CN105528804B (zh) * | 2015-12-17 | 2019-01-08 | 网易(杭州)网络有限公司 | 计算机动画中骨骼链的处理方法及装置 |
-
2017
- 2017-09-15 CN CN201710831225.5A patent/CN107610210B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017080199A (ja) * | 2015-10-29 | 2017-05-18 | キヤノンマーケティングジャパン株式会社 | 情報処理装置、情報処理方法、プログラム |
Also Published As
Publication number | Publication date |
---|---|
CN107610210A (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106339351B (zh) | 一种sgd算法优化系统及方法 | |
CN108563808A (zh) | 基于fpga的异构可重构图计算加速器系统的设计方法 | |
CN107291457A (zh) | 整车控制器软件的远程更新计算系统及方法 | |
CN107610210B (zh) | 骨骼动画系统优化方法、装置及骨骼动画系统 | |
CN111914936A (zh) | 语料数据的数据特征增强方法、装置及计算机设备 | |
Filgueira et al. | Adaptive-compi: Enhancing mpi-based applications’ performance and scalability by using adaptive compression | |
DE102004011450A1 (de) | Anvisierte Fehlertoleranz durch spezielle CPU-Befehle | |
CN111858440A (zh) | 一种分布式数据并行训练系统、方法、终端及存储介质 | |
CN107977504B (zh) | 一种非对称堆芯燃料管理计算方法、装置及终端设备 | |
CN113886590A (zh) | 数据汇总方法、装置、计算机设备及存储介质 | |
CN106681837B (zh) | 基于数据表的数据淘汰方法及装置 | |
CN109558226A (zh) | 一种基于核间中断的dsp多核并行计算调度方法 | |
CN111047504B (zh) | 一种基于SystemC的GPU子图像处理的TLM微结构 | |
CN110569038B (zh) | 随机验证参数设计方法、装置、计算机设备及存储介质 | |
CN108543307B (zh) | 使用Physx物理引擎模拟流程的整合优化方法及装置 | |
JP5687122B2 (ja) | ソフトウェア評価装置、ソフトウェア評価方法およびシステム評価装置 | |
CN103117748A (zh) | 一种bwt实现方法中对后缀进行排序的方法及系统 | |
CN111079830A (zh) | 目标任务模型的训练方法、装置和服务器 | |
CN112631880A (zh) | 基于调用链的性能分析方法及装置 | |
CN116206021A (zh) | 服装与骨骼的绑定方法、装置、设备及存储介质 | |
CN113361380B (zh) | 人体关键点检测模型训练方法、检测方法及装置 | |
CN115080386A (zh) | 基于自动驾驶功能要求的场景有效性分析方法与设备 | |
CN104320659A (zh) | 背景建模方法、装置及设备 | |
CN107256281B (zh) | 一种基于裁剪法的fpga可重构资源非矩形布局方法 | |
CN100508612C (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 |