CN107610210A - 骨骼动画***优化方法、装置及骨骼动画*** - Google Patents
骨骼动画***优化方法、装置及骨骼动画*** Download PDFInfo
- Publication number
- CN107610210A CN107610210A CN201710831225.5A CN201710831225A CN107610210A CN 107610210 A CN107610210 A CN 107610210A CN 201710831225 A CN201710831225 A CN 201710831225A CN 107610210 A CN107610210 A CN 107610210A
- Authority
- CN
- China
- Prior art keywords
- bone
- reference count
- count parameter
- parameter
- skeleton cartoon
- 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
Links
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 true CN107610210A (zh) | 2018-01-19 |
CN107610210B 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) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111028321A (zh) * | 2019-12-16 | 2020-04-17 | 网易(杭州)网络有限公司 | 蒙皮检测方法、装置以及电子终端 |
CN111292402A (zh) * | 2020-02-13 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 数据处理的方法、装置、设备及计算机可读存储介质 |
CN113368501A (zh) * | 2021-05-13 | 2021-09-10 | 网易(杭州)网络有限公司 | 骨骼动画处理方法及装置、电子设备、存储介质 |
CN113808236A (zh) * | 2020-06-11 | 2021-12-17 | 北京达佳互联信息技术有限公司 | 图像处理方法、装置、电子设备和存储介质 |
Citations (6)
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的骨骼动画优化 |
CN104021584A (zh) * | 2014-06-25 | 2014-09-03 | 无锡梵天信息技术股份有限公司 | 一种骨骼蒙皮动画的实现方法 |
CN104077797A (zh) * | 2014-05-19 | 2014-10-01 | 无锡梵天信息技术股份有限公司 | 三维游戏动画*** |
CN105528804A (zh) * | 2015-12-17 | 2016-04-27 | 网易(杭州)网络有限公司 | 计算机动画中骨骼链的处理方法及装置 |
JP2017080199A (ja) * | 2015-10-29 | 2017-05-18 | キヤノンマーケティングジャパン株式会社 | 情報処理装置、情報処理方法、プログラム |
-
2017
- 2017-09-15 CN CN201710831225.5A patent/CN107610210B/zh active Active
Patent Citations (6)
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的骨骼动画优化 |
CN104077797A (zh) * | 2014-05-19 | 2014-10-01 | 无锡梵天信息技术股份有限公司 | 三维游戏动画*** |
CN104021584A (zh) * | 2014-06-25 | 2014-09-03 | 无锡梵天信息技术股份有限公司 | 一种骨骼蒙皮动画的实现方法 |
JP2017080199A (ja) * | 2015-10-29 | 2017-05-18 | キヤノンマーケティングジャパン株式会社 | 情報処理装置、情報処理方法、プログラム |
CN105528804A (zh) * | 2015-12-17 | 2016-04-27 | 网易(杭州)网络有限公司 | 计算机动画中骨骼链的处理方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111028321A (zh) * | 2019-12-16 | 2020-04-17 | 网易(杭州)网络有限公司 | 蒙皮检测方法、装置以及电子终端 |
CN111292402A (zh) * | 2020-02-13 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 数据处理的方法、装置、设备及计算机可读存储介质 |
CN111292402B (zh) * | 2020-02-13 | 2023-03-07 | 腾讯科技(深圳)有限公司 | 数据处理的方法、装置、设备及计算机可读存储介质 |
CN113808236A (zh) * | 2020-06-11 | 2021-12-17 | 北京达佳互联信息技术有限公司 | 图像处理方法、装置、电子设备和存储介质 |
CN113368501A (zh) * | 2021-05-13 | 2021-09-10 | 网易(杭州)网络有限公司 | 骨骼动画处理方法及装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107610210B (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107610210A (zh) | 骨骼动画***优化方法、装置及骨骼动画*** | |
CN109615524B (zh) | 洗钱犯罪团伙的识别方法、装置、计算机设备及存储介质 | |
CN107909485B (zh) | 基于无理赔的优惠数据生成方法、装置及计算机可读介质 | |
CN106919373A (zh) | 一种程序代码质量评估方法 | |
CN107146108A (zh) | 确认二手车评估价格的方法及设备 | |
WO2021180245A1 (zh) | 一种服务器、数据处理方法、装置及可读存储介质 | |
CN107316286A (zh) | 一种图像中雨雾同步合成、去除的方法和装置 | |
CN105302591B (zh) | 双mcu架构***更新程序的通信方法 | |
CN106775936A (zh) | 一种虚拟机的管理方法及装置 | |
CN106845925A (zh) | 基于bim快速算量和项目云端协同平台的工程对量方法 | |
CN105164684A (zh) | 用于提供眼镜片的*** | |
CN105405052A (zh) | 一种计算保险产品的保险相关费用的方法及*** | |
CN106530074A (zh) | 大金额出账控制方法、***以及头寸管理信息*** | |
CN108347048B (zh) | 一种适应跨区跨国调度模式的计划编制方法 | |
CN110865942B (zh) | 一种综合模块化航电***的模型规则校验方法 | |
US7926013B2 (en) | Validating continuous signal phase matching in high-speed nets routed as differential pairs | |
EP1514202B1 (de) | Verfahren zum verändern von entwurfsdaten für die herstellung eines bauteils sowie zugehöriger einheiten | |
CN107092700A (zh) | 一种基于大数据量下批量导入数据的方法及装置 | |
CN107680377A (zh) | 基于趋势拟合的交通流量数据交叉补全方法 | |
CN109255696A (zh) | 一种还款数据确定方法、装置、服务器及计算机存储介质 | |
CN111008835A (zh) | 用于确定区块链的交易验证节点的方法、设备、计算机可读存储介质和计算机程序产品 | |
CN108038132A (zh) | 数据质量分析方法及装置、存储介质、终端 | |
CN104572604B (zh) | 文字分栏处理方法及装置 | |
CN111611759B (zh) | 一种掩模辅助图形的优化方法、计算机可读介质及*** | |
CN106197431A (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 |