首页> 中国专利> 计算机动画中骨骼链的处理方法及装置

计算机动画中骨骼链的处理方法及装置

摘要

本发明公开了一种计算机动画中骨骼链的处理方法及装置。其中,该方法包括:获取切割轨迹,其中,切割轨迹用于将游戏角色模型进行分离;确定与切割轨迹关联的骨骼链上待删除的部分骨骼节点;重新建立骨骼链上剩余骨骼节点的连接关系。本发明解决了相关技术中完全采用物理系统动画对游戏角色遭受击打的动作进行描述易增加系统的计算负担,降低系统的计算性能的技术问题。

著录项

  • 公开/公告号CN105528804A

    专利类型发明专利

  • 公开/公告日2016-04-27

    原文格式PDF

  • 申请/专利权人 网易(杭州)网络有限公司;

    申请/专利号CN201510955764.0

  • 发明设计人 徐星;

    申请日2015-12-17

  • 分类号G06T13/40;

  • 代理机构北京博浩百睿知识产权代理有限责任公司;

  • 代理人宋子良

  • 地址 310000 浙江省杭州市滨江区长河街道网商路599号4幢7层

  • 入库时间 2023-12-18 15:50:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-08

    授权

    授权

  • 2016-05-25

    实质审查的生效 IPC(主分类):G06T13/40 申请日:20151217

    实质审查的生效

  • 2016-04-27

    公开

    公开

说明书

技术领域

本发明涉及互联网领域,具体而言,涉及一种计算机动画中骨骼链的处理方法及 装置。

背景技术

骨骼动画是指在骨骼控制下,通过顶点混合动态计算蒙皮网格的顶点,而骨骼的 运动相对于其父骨骼,并由动画关键帧数据驱动。一个骨骼动画通常可以包括:骨骼 层次结构数据,网格(Mesh)数据,网格蒙皮数据(skininfo)和骨骼的动画(关键 帧)数据。

帧是指动画中最小单位的单幅影像画面,其相当于电影胶片上的每一格镜头,在 动画软件的时间轴上,帧可以表现为一格或一个标记。而关键帧则相当于二维动画中 的原画,其是指角色或者物体在运动或变化中的关键动作所处的那一帧。在关键帧与 关键帧之间的动画可以由软件来创建,被称作过渡帧或者中间帧。

人物的一根骨骼通常可以采用数学的一个向量来描述,一个模型是骨骼的集合, 而向量的集合则是矩阵,故计算机中一个模型可以采用矩阵来描述。如果需要使得一个 模型运动起来,其在数学上等价于这个矩阵的各种类型的混合运算,因此,计算机的三 维动作动画实际上就是矩阵运算。

动作的一个姿势(POSE)即为动作的一帧,因为它只是一帧,所以这个姿势是静态 的,通常不会改变。

物理系统动画是动画的一种表演方式,其不同于“骨骼动画”,骨骼动画是通过美 工预先制作完成的在游戏中的表演。然而,物理系统动画则是游戏中通过实时运算得 到的,其不需要通过美工预先制作的方式来生成。特别是在表现结果上,骨骼动画的表 现形式是相对固定的,每次重复播放都只能按照相同的形式进行表演,而物理系统动 画则可以通过设定力道的大小而产生多种不同的表现结果。以网络游戏的特定场景为 例,用户所选择的游戏角色为一名剑客,在游戏副本中通过击杀敌对士兵获取经验值 以及装备,如果采用物理系统动画对士兵被击杀后的形态进行描述,其表演过程虽然 更加丰富,但是如果每次都采用实时运算的方式,则会增加过多的计算开销,进而降 低计算性能。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种计算机动画中骨骼链的处理方法及装置,以至少解决相 关技术中完全采用物理系统动画对游戏角色遭受击打的动作进行描述易增加系统的计 算负担,降低系统的计算性能的技术问题。

根据本发明实施例的一个方面,提供了一种计算机动画中骨骼链的处理方法。包 括:获取切割轨迹,其中,切割轨迹用于将游戏角色模型进行分离;确定与切割轨迹 关联的骨骼链上待删除的部分骨骼节点;重新建立骨骼链上剩余骨骼节点的连接关系。

进一步地,确定与切割轨迹关联的待删除的部分骨骼节点包括:采用切割轨迹将 游戏角色模型划分为第一区域和第二区域,其中,位于第一区域内以及位于切割轨迹 上的全部骨骼节点在切割轨迹形成后发生位移变化,而位于第二区域内的全部骨骼节 点在切割轨迹形成后保持当前位置不变;从骨骼链上查找位于第一区域内和/或位于切 割轨迹上的一个或多个骨骼节点,将查找到的骨骼节点集合作为待删除的部分骨骼节 点。

进一步地,重新建立骨骼链上剩余骨骼节点的连接关系包括:采用待删除的部分 骨骼节点对应的骨骼矩阵生成变换矩阵;通过变换矩阵建立骨骼链上剩余骨骼节点的 连接关系。

进一步地,采用以下公式生成变换矩阵:变换矩阵=骨骼矩阵x*骨骼矩阵x+1*... *骨骼矩阵x+m;其中,骨骼链上有N个骨骼节点,在按照N的取值从小到大的方向上 后一个骨骼节点依次为前一个骨骼节点的父骨骼,从第x个至第x+m个骨骼节点为待 删除的部分骨骼节点,0<x<x+m<N且x,m和N均为正整数。

进一步地,通过变换矩阵建立骨骼链上剩余骨骼节点的连接关系包括:计算骨骼 矩阵x-1与变换矩阵的乘积结果,确定待重定向的骨骼节点;将待重定向的骨骼节点 设置为与骨骼矩阵x-1对应的骨骼节点的父骨骼。

根据本发明实施例的另一方面,还提供了一种计算机动画中骨骼链的处理装置, 包括:获取模块,用于获取切割轨迹,其中,切割轨迹用于将游戏角色模型进行分离; 确定模块,用于确定与切割轨迹关联的骨骼链上待删除的部分骨骼节点;建立模块, 用于重新建立骨骼链上剩余骨骼节点的连接关系。

进一步地,确定模块包括:划分单元,用于采用切割轨迹将游戏角色模型划分为 第一区域和第二区域,其中,位于第一区域内以及位于切割轨迹上的全部骨骼节点在 切割轨迹形成后发生位移变化,而位于第二区域内的全部骨骼节点在切割轨迹形成后 保持当前位置不变;查找单元,用于从骨骼链上查找位于第一区域内和/或位于切割轨 迹上的一个或多个骨骼节点,将查找到的骨骼节点集合作为待删除的部分骨骼节点。

进一步地,建立模块包括:生成单元,用于采用待删除的部分骨骼节点对应的骨 骼矩阵生成变换矩阵;建立单元,用于通过变换矩阵建立骨骼链上剩余骨骼节点的连 接关系。

进一步地,生成单元,用于采用以下公式生成变换矩阵:变换矩阵=骨骼矩阵x* 骨骼矩阵x+1*...*骨骼矩阵x+m;其中,骨骼链上有N个骨骼节点,在按照N的取 值从小到大的方向上后一个骨骼节点依次为前一个骨骼节点的父骨骼,从第x个至第 x+m个骨骼节点为待删除的部分骨骼节点,0<x<x+m<N且x,m和N均为正整数。

进一步地,建立单元包括:确定子单元,用于计算骨骼矩阵x-1与变换矩阵的乘 积结果,确定待重定向的骨骼节点;设置子单元,用于将待重定向的骨骼节点设置为 与骨骼矩阵x-1对应的骨骼节点的父骨骼。

在本发明实施例中,采用确定与切割轨迹关联的骨骼链上待删除的部分骨骼节点; 重新建立骨骼链上剩余骨骼节点的连接关系的方式,在通过切割轨迹将游戏角色模型 进行分离后,并非对游戏角色模型的全部骨骼均采用物理系统动画进行描述,而是对 待删除的部分骨骼节点采用物理系统动画进行描述,并重新建立骨骼链上剩余骨骼节 点的连接关系进而采用骨骼动画进行描述,从而实现了减轻系统的计算负担,提高系 统的计算性能的技术效果,进而解决了相关技术中完全采用物理系统动画对游戏角色 遭受击打的动作进行描述易增加系统的计算负担,降低系统的计算性能的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图 中:

图1是根据本发明实施例的计算机动画中骨骼链的处理方法的流程图;

图2是根据本发明优选实施例的游戏击杀对象被切割后的示意图;

图3是根据本发明优选实施例的骨骼焊接的处理方法的流程图;

图4是根据本发明实施例的计算机动画中骨骼链的处理装置的结构框图;

图5是根据本发明优选实施例的计算机动画中骨骼链的处理装置的结构框图。

以上附图中的标记如下所示:1、切割轨迹;2、第一区域;3、第二区域;4、右 肩骨骼;5、右臂骨骼;6、第一脊椎骨骼;7、第二脊椎骨骼。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的 附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例 仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领 域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于 本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第 二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这 样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在 这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的 任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方 法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚 地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例,提供了一种计算机动画中骨骼链的处理方法的方法实施例, 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算 机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以 不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的计算机动画中骨骼链的处理方法的流程图,如图1所 示,该方法包括如下步骤:

步骤S102,获取切割轨迹,其中,切割轨迹用于将游戏角色模型进行分离;

步骤S104,确定与切割轨迹关联的骨骼链上待删除的部分骨骼节点;

步骤S106,重新建立骨骼链上剩余骨骼节点的连接关系。

通过上述步骤,可以实现减轻系统的计算负担,提高系统的计算性能的技术效果, 进而解决了相关技术中完全采用物理系统动画对游戏角色遭受击打的动作进行描述易 增加系统的计算负担,降低系统的计算性能的技术问题。

可选地,在步骤S104中,确定与切割轨迹关联的待删除的部分骨骼节点可以包括 以下步骤:

步骤S1:采用切割轨迹将游戏角色模型划分为第一区域和第二区域,其中,位于 第一区域内以及位于切割轨迹上的全部骨骼节点在切割轨迹形成后发生位移变化,而 位于第二区域内的全部骨骼节点在切割轨迹形成后保持当前位置不变;

步骤S2:从骨骼链上查找位于第一区域内和/或位于切割轨迹上的一个或多个骨 骼节点,将查找到的骨骼节点集合作为待删除的部分骨骼节点。

在本发明的优选实施例中,可以通过美工方式制作完成的切割后的游戏击杀对象 (例如:用户所使用的游戏角色在副本中需要击杀的敌对士兵),只切割游戏击杀对象 的蒙皮,而仍然保持原有的骨骼不变。蒙皮可以在字面上理解为将皮肤蒙在模型上, 因为游戏击杀对象需要被切割开来,所以蒙皮需要预留一个切口。由此可以确保原有的 骨骼不变,而不需要针对每次游戏击杀对象的死亡场景而分别制作一套死亡骨骼动画。

进一步地,图2是根据本发明优选实施例的游戏击杀对象被切割后的示意图。如 图2所示,骨骼更新的规则如下:由于每一根骨骼都是相对于父骨骼运动的,假设根骨 骼为b_root(图中未示出),那么b_root的移动必然会带动被击杀对象模型全身骨骼 的运动,其最终的动画效果在于:如果一个模型在移动,右臂骨骼(b_rightarm)的父 骨骼是右肩骨骼(b_rightclav),即手臂是相对于肩膀运动的,肩膀的运动必然会带动 手臂运动;当肩膀扭动的时候,手臂则会保持和肩膀相对位置不变的情况下,跟随着肩 膀移动。图2中的切割轨迹切断了第一脊椎骨骼(b_spine1)与父骨骼第二脊椎骨骼 (b_spine)之间的关联关系。故而,需要将右臂骨骼(b_rightarm)的父骨骼从原本 的右肩骨骼(b_rightclav)替换为第二脊椎骨骼(b_spine)。此处需要进行相应的骨 骼变换处理,其可以称之为“焊接”。

可选地,在步骤S106中,重新建立骨骼链上剩余骨骼节点的连接关系可以包括以 下操作:

步骤S3:采用待删除的部分骨骼节点对应的骨骼矩阵生成变换矩阵;

步骤S4:通过变换矩阵建立骨骼链上剩余骨骼节点的连接关系。

如上述图2所示,因为骨骼的集合会将游戏角色塑造成一个整体模型,在游戏角 色被切开在b_spine1处时,需要将原来的b_spine1的父骨骼删除,以便当b_spine 更新下一步动作的时候,b_spine1便不会再跟随b_spine做出移动。在该优选实施例 中,由于模型是被斜着切割的,b_rightarm位于上述第一区域,b_spine1位于上述切 割轨迹上,因此,b_rightarm和b_spine1均属于上述待删除的骨骼节点。而剩余的 b_rightarm需要与身体主干部分进行连接,所以b_rightarm和b_rightclav之间的 连接需要被切断,然后再将b_rightarm的父骨骼重定向到b_spine上。此处可以合理 推导,如果直接在右臂与脊椎之间建立连接,所呈现的模型从外表看上去会十分怪异。 因此,需要通过上述变换矩阵来构建右臂与脊椎之间的虚拟相对位置。

可选地,在步骤S3中,可以采用以下公式生成变换矩阵:

变换矩阵=骨骼矩阵x*骨骼矩阵x+1*...*骨骼矩阵x+m;

其中,骨骼链上有N个骨骼节点,在按照N的取值从小到大的方向上后一个骨骼 节点依次为前一个骨骼节点的父骨骼,从第x个至第x+m个骨骼节点为待删除的部分 骨骼节点,0<x<x+m<N且x,m和N均为正整数。

在优选实施例中,如图2所示,构建虚拟相对位置的过程如下:

需要新增<变换矩阵>=m_bone_trans[b_rightclav]*m_bone_trans[b_spine1], 进而实现骨骼矩阵(b_rightarm相对于原有父骨骼b_rightclav)*<变换矩阵>=骨 骼矩阵(b_rightarm相对于新的父骨骼b_spine),其中,m_bone_trans可以理解为骨 骼矩阵,即上述变换矩阵可以转化为:<变换矩阵>=骨骼矩阵(b_rightclav)*骨骼 矩阵(b_spine1)。

在初始状态下,通过美工制作的原始骨骼数据的父子关系依次为:第二脊椎骨骼 (b_spine)是第一脊椎骨骼(b_spine1)的父骨骼,第一脊椎骨骼(b_spine1)是右 肩骨骼(b_rightarm)的父骨骼,而右肩骨骼(b_rightarm)又是右臂骨骼(b_rightarm) 的父骨骼。

在骨骼动画中,每一根骨骼的骨骼矩阵都是相对于其父骨骼的偏移,因此,上述< 变换矩阵>即为从右臂骨骼(b_rightarm)到第二脊椎骨骼(b_spine)之间的相对位 移全部相加,以确保当改变其中一个骨骼的父骨骼后,该骨骼的相对位置仍然可以保 持不变。

需要说明的是,上述变换矩阵与切割轨迹密切相关,故而选取第二脊椎骨骼、第 一脊椎骨骼b_spine1、右肩骨骼b_rightarm的父骨骼以及右臂骨骼b_rightarm。如 果采用另外的切割方式,则处理骨骼的方式将会随之改变。故而,可以得到以下通式:

如果需要将骨骼A1的父骨骼替换成骨骼An,则假设骨骼A1的父骨骼是A2,A2 的父骨骼是A3...以此类推,直至A(n-1)的父骨骼是An,那么:

<变换矩阵>=骨骼矩阵A2*骨骼矩阵A3*...*骨骼矩阵A(n-1)

为此,执行上述焊接操作的重要前提条件是必须向父骨骼链上的骨骼焊接。

可选地,在步骤S4中,通过变换矩阵建立骨骼链上剩余骨骼节点的连接关系可以 包括以下步骤:

步骤S41:计算骨骼矩阵x-1与变换矩阵的乘积结果,确定待重定向的骨骼节点;

步骤S42:将待重定向的骨骼节点设置为与骨骼矩阵x-1对应的骨骼节点的父骨 骼。

在动画更新过程中,与b_rightarm骨骼对应的每帧图像都需要乘以变换矩阵。通 过上述计算过程能够实现针对任意骨骼均可实现焊接,而并不局限于上述右臂骨骼、右 肩骨骼以及脊椎骨骼。

图3是根据本发明优选实施例的骨骼焊接的处理方法的流程图,如图3所示,该 方法包括如下步骤:

步骤S302:在通过切割轨迹对游戏角色模型进行切割后,原有的骨骼链被切断, 假设当前需要将骨骼B与骨骼C之间属于上述第一区域以及切割轨迹上的骨骼节点全 部删除,并将骨骼B焊接至骨骼C上。

步骤S304:将游戏角色模型设置为初始化状态;

步骤S306:初始化生成一个单位变换矩阵A;

步骤S308:初始化设置骨骼A为骨骼B的父骨骼;

步骤S310:判断骨骼A是否为非法骨骼;如果是,则转到步骤S324;如果否,则 转到步骤S312;

“非法骨骼”是指事实上并不存在的骨骼,其只适用于一种情况,即由于根骨骼 b_root的父骨骼在事实上并不存在,因此,如果需要获取根骨骼b_root的父骨骼, 那么,该父骨骼就会被认定为非法骨骼。

步骤S312:判断骨骼A是否等于骨骼C;如果是,则转到步骤S320;如果否,则 继续执行步骤S314;

步骤S314:将骨骼A转换成矩阵B;

步骤S316:将矩阵B与上述矩阵A进行乘积运算,再赋值给上述矩阵A;

步骤S318:将当前计算得到的骨骼A设置为上述骨骼A的父骨骼;返回至步骤S310, 重复执行步骤S310-步骤S318,直至最终计算得到的骨骼A与骨骼C相同;

步骤S320:对最终计算得到的矩阵A进行保存;

经过以上步骤后得到的矩阵A,是一个虚拟变换矩阵,然后在每次播放动画时, 如果骨骼B需要更新,则只需要乘以矩阵A,即可得到所要变换的相对位置。

步骤S322:将骨骼B的父骨骼设置为骨骼C;

步骤S324:直接将骨骼B的父骨骼设置为骨骼C;

步骤S326:整个流程结束。

在上述步骤全部执行完毕后,由于骨骼已经被切割完成,因此,模型播放动画只 会影响下半身,以最终实现游戏角色的下半身按照骨骼动画进行播放,而上半身则按 照物理系统动画进行播放。

图4是根据本发明实施例的计算机动画中骨骼链的处理装置的结构框图。如图4 所示,该计算机动画中骨骼链的处理装置可以包括:获取模块10,用于获取切割轨迹, 其中,切割轨迹用于将游戏角色模型进行分离;确定模块20,用于确定与切割轨迹关 联的骨骼链上待删除的部分骨骼节点;建立模块30,用于重新建立骨骼链上剩余骨骼 节点的连接关系。

可选地,图5是根据本发明优选实施例的计算机动画中骨骼链的处理装置的结构 框图。如图5所示,确定模块20可以包括:划分单元200,用于采用切割轨迹将游戏 角色模型划分为第一区域和第二区域,其中,位于第一区域内以及位于切割轨迹上的 全部骨骼节点在切割轨迹形成后发生位移变化,而位于第二区域内的全部骨骼节点在 切割轨迹形成后保持当前位置不变;查找单元202,用于从骨骼链上查找位于第一区 域内和/或位于切割轨迹上的一个或多个骨骼节点,将查找到的骨骼节点集合作为待删 除的部分骨骼节点。

可选地,如图5所示,建立模块30可以包括:生成单元300,用于采用待删除的 部分骨骼节点对应的骨骼矩阵生成变换矩阵;建立单元302,用于通过变换矩阵建立 骨骼链上剩余骨骼节点的连接关系。

可选地,生成单元300,用于采用以下公式生成变换矩阵:变换矩阵=骨骼矩阵x *骨骼矩阵x+1*...*骨骼矩阵x+m;其中,骨骼链上有N个骨骼节点,在按照N的 取值从小到大的方向上后一个骨骼节点依次为前一个骨骼节点的父骨骼,从第x个至 第x+m个骨骼节点为待删除的部分骨骼节点,0<x<x+m<N且x,m和N均为正整数。

可选地,建立单元302可以包括:确定子单元(图中未示出),用于计算骨骼矩阵 x-1与变换矩阵的乘积结果,确定待重定向的骨骼节点;设置子单元(图中未示出), 用于将待重定向的骨骼节点设置为与骨骼矩阵x-1对应的骨骼节点的父骨骼。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有 详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它 的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分, 可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件 可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所 显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模 块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显 示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到 多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案 的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成 的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时, 可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质 上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的 形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一 台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所 述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘 等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润 饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号