一种高精度自动骨骼绑定方法转让专利

申请号 : CN202210777889.9

文献号 : CN114842155B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王凯

申请人 : 埃瑞巴蒂成都科技有限公司

摘要 :

本发明一种高精度自动骨骼绑定方法,包括以下步骤:S1:对与建模对象相似的几何体进行标准建模,得到标准骨骼模型,然后对标准骨骼模型进行手动骨骼绑定;S2:通过采集设备采集与建模对象相似的几何体的模型,生成一个高面数的精确实物静态模型;S3:对所述标准骨骼模型和所述精确实物静态模型进行空间匹配:对所述精确实物静态模型做空间位置的代理骨骼权重精确传递,实现标准骨骼模型对精确实物静态模型的精确控制。本发明解决了通用的自动骨骼动态绑定的工具精度低的技术问题。

权利要求 :

1.一种高精度自动骨骼绑定方法,其特征在于,包括以下步骤:

S1:对与建模对象相似的几何体进行标准建模,得到标准骨骼模型,然后对标准骨骼模型进行手动骨骼绑定;所述标准骨骼模型具有顶点;

S2:通过采集设备采集与建模对象相似的几何体的模型,生成一个高面数的精确实物静态模型,作为待绑定的实物模型;

S3:对所述标准骨骼模型和所述精确实物静态模型进行空间匹配:以所述步骤S1所得的标准模型的顶点作为代理骨骼的顶点,对所述精确实物静态模型做代理骨骼权重的精确传递,实现标准骨骼模型对精确实物静态模型的精确控制;

所述的空间匹配实现的方法包括如下步骤:mesh生成、mesh坐标调整、mesh遍历、顶点权重传递、修正平滑权重;

所述mesh生成包括以下步骤:所述采集设备云生成的实物mesh,记为mesh1,已有的标准带骨骼的实物模型mesh,记为mesh2;mesh2的骨骼记为Bone[n],骨骼变换矩阵记为BoneMatrics[n];

所述mesh坐标调整包括以下步骤:将mesh1、mesh2放置在空间的原点(0,0,0)处;

所述mesh遍历包括以下步骤:如果mesh1和mesh2出现交叉重叠,取mesh2的顶点开始遍历,每个顶点搜索其局部坐标空间下,阈值半径r1的球体内,存在mesh1的哪些顶点,将搜索到的顶点的索引放入特定的缓冲,记为vexterIndexBuffer[m],直到遍历完所有mesh2的顶点;每个vexterIndexBuffer[i]中存放了mesh1在阈值半径r1内的mesh1的顶点的索引;所述vexterIndexBuffer[i]为int数组;

所述顶点权重传递包括以下步骤:再次遍历vexterIndexBuffer[m],将

vexterIndexBuffer[m]收集到的顶点逐一传递mesh2对应的顶点的权重;

所述修正平滑权重包括:修正权重:完成权重传递后,由于mesh1的一个顶点被mesh2几个顶点同时包含,在上一步顶点权重传递中会进行距离判定和权重更新,传递权重后的mesh1的顶点上的权重部分可能出现4个Bone的权重之和大于1或者小于1的情况,遍历mesh1的所有顶点,检测顶点4个权重大于1或者小于1的情况,按照读取的权重比例,将4个权重压缩或者放大至4个权重相加之和等于1,使mesh1的显示比例正常;

平滑权重:遍历mesh1的所有顶点,在另一个阈值半径r2的范围内,每两个顶点之间同一个骨骼的权重分配值大于某个阈值a,重新调整这两个顶点当前骨骼权重的分配使其平滑,同时调整当前顶点内其他3个骨骼权重的比例,使其满足4个Bone权重相加等于1。

2.根据权利要求1所述的高精度自动骨骼绑定方法,其特征在于,所述修正平滑权重还包括使用训练过的Deeplearning深度网络对完成顶点权重传递的生成模型进行骨骼权重矫正,使其进一步平滑。

3.根据权利要求2所述的高精度自动骨骼绑定方法,其特征在于,根据情况重复所述修正平滑权重步骤;处理完毕后,平移或者旋转mesh2的骨骼,mesh1的相应部位也会跟着骨骼移动或者旋转,实现mesh2到mesh1的骨骼权重传递。

4.根据权利要求1‑3任一项所述的高精度自动骨骼绑定方法,其特征在于,所述阈值半径r1的值为0.5cm至1cm。

说明书 :

一种高精度自动骨骼绑定方法

技术领域

[0001] 本发明属于三维动态图形处理技术领域,尤其涉及一种高精度自动骨骼绑定方法。

背景技术

[0002] 随着科技的发展,计算机已经成为主要的动画制作工具。动画制作过程中最具有挑战性的、对动画效果起到决定作用的是三维人体动画。对三维人体角色的建模是动画技术的重点,包括运动捕捉、建模技术、运动控制技术等方面。其中骨骼绑定技术属于运动控制技术范围:骨骼控制一定数量的顶点,将三维模型的绑定作为一个整体,通过顶点混合动态计算不同运动状态下绑定的顶点位置,从而得到角色的运动效果。骨骼绑定技术主要研究骨骼中运动数据带动人体模型运动而产生动作。相对于二维动画,三维动画需要更多的规则限制,因此三维人体骨骼绑定技术具有非常大的挑战性。
[0003] 然而,目前市面上大部分骨骼绑定工具,只能由专业的动画绑定师通过手动操控的方式对已有静态模型进行骨骼搭建、并对各个部分的骨骼绑定来实现对静态模型的变形操控,这种传统的几何模型变形方式虽然能够准确的模拟几何体各个部位不同的变化权重,但是在实际开发中效率低下,不适应现代开发的需求:(1)骨骼搭建的效率低下,熟练的动画绑定师即使使用成熟的商业工具,也会消耗较长的时间;根据几何形态的不同,骨骼搭建的时间不可控;(2)完成骨骼搭建以后,对于复杂几何体,需要手动的对几何体各个部分分配不同骨骼的权重,从而实现骨骼对几何体网格的变形控制。基于复杂骨架和复杂几何体,时间复杂度是O(m*n),m表示几何体的顶点数,n表示骨骼的数量,而且全部是凭借动画绑定师的经验手动完成,效率完全不能适应现代开发和某些特殊场景需要快速动态的绑定骨骼。中国发明专利CN110310351A提供了一种基于草图的三维人体骨骼动画自动生成方法:以简化骨骼动画制作的交互方式作为着手点,以草图图像输入的方式提供待生成动画的首尾帧,使用Tensorflow构建神经网络框架分别实现系统的草图三维重建和骨骼动画插值帧信息自动合成两部分模块,最终实现了人体骨骼动画自动生成,提高了效率。
[0004] 市面上虽然出现了通用的自动骨骼动态绑定的工具,但是其实现方式由于几何体的精确度难以统一,所以只能用已有的通用骨骼根据骨骼和需要绑定的几何体在3D空间中的相对位置做近似的包围检测,从而实现骨骼权重的大致映射。对简单的几何体,勉强能满足需求,但是对于复杂几何体,由于直接用骨骼和静态模型的顶点的做几何包围的检测,误差会累积过大,导致复杂几何体的细节部分无法准确的映射正确的骨骼权重,所以绑定完毕,复杂几何体可能会出现模型相邻部位的变形不一致,不协调,甚至出现穿模的情况。

发明内容

[0005] 本发明目的在于提供一种高精度自动骨骼绑定方法,以解决通用的自动骨骼动态绑定的工具精度低的技术问题。
[0006] 为解决上述技术问题,本发明的一种高精度自动骨骼绑定方法的具体技术方案如下:
[0007] 一种高精度自动骨骼绑定方法,包括以下步骤:
[0008] S1:对与建模对象相似的几何体进行标准建模,得到标准骨骼模型,然后对标准骨骼模型进行手动骨骼绑定;所述标准骨骼模型具有顶点;
[0009] S2:通过采集设备采集与建模对象相似的几何体的模型,生成一个高面数的精确实物静态模型,作为待绑定的实物模型;
[0010] S3:对所述标准骨骼模型和所述精确实物静态模型进行空间匹配:以所述步骤S1所得的标准模型的顶点作为代理骨骼的顶点,对所述精确实物静态模型做空间位置的代理骨骼权重精确传递,实现标准骨骼模型对精确实物静态模型的精确控制。
[0011] 进一步,步骤S3所述的空间匹配实现的方法包括如下步骤:mesh生成、mesh坐标调整、mesh遍历、顶点权重传递、修正平滑权重。
[0012] 更进一步,所述mesh生成包括以下步骤:所述采集设备云生成的实物mesh,记为mesh1,已有的标准带骨骼的实物模型mesh,记为mesh2;mesh2的骨骼记为Bone[n],骨骼变换矩阵记为BoneMatrics[n];
[0013] 所述mesh坐标调整包括以下步骤:将mesh1、mesh2放置在空间的原点(0,0,0)处;
[0014] 所述mesh遍历包括以下步骤:如果mesh1和mesh2出现交叉重叠,取mesh2的顶点开始遍历,每个顶点搜索其局部坐标空间下,阈值半径r1的球体内,存在mesh1的哪些顶点,将搜索到的顶点的索引放入特定的缓冲,记为vexterIndexBuffer[m],直到遍历完所有mesh2的顶点;每个vexterIndexBuffer[i]中存放了mesh1在阈值半径r1内的mesh1的顶点的索引;所述vexterIndexBuffer[i]为int数组;
[0015] 所述顶点权重传递包括以下步骤:再次遍历vexterIndexBuffer[m],将vexterIndexBuffer[m]收集到的顶点逐一传递mesh2对应的顶点的权重;
[0016] 所述修正平滑权重包括: 修正权重:完成权重传递后,由于mesh1的一个顶点被mesh2几个顶点同时包含,在上一步顶点权重传递中会进行距离判定和权重更新,传递权重后的mesh1的顶点上的权重部分可能出现4个Bone的权重之和大于1或者小于1的情况,遍历mesh1的所有顶点,检测顶点4个权重大于1或者小于1的情况,按照读取的权重比例,将4个权重压缩(或者放大)至4个权重相加之和等于1,使mesh1的显示比例正常;
[0017] 平滑权重:遍历mesh1的所有顶点,在另一个阈值半径r2的范围内,每两个顶点之间同一个骨骼的权重分配值大于某个阈值a,重新调整这两个顶点当前骨骼权重的分配使其平滑,同时调整当前顶点内其他3个骨骼权重的比例,使其满足4个Bone权重相加等于1。
[0018] 更进一步,所述修正平滑权重还包括使用训练过的Deeplearning深度网络对完成顶点权重传递的生成模型进行骨骼权重矫正,使其进一步平滑。
[0019] 进一步,根据情况重复所述修正平滑权重步骤;处理完毕后,平移或者旋转mesh2的骨骼,mesh1的相应部位也会跟着骨骼移动或者旋转,实现mesh2到mesh1的骨骼权重传递。
[0020] 进一步,所述阈值半径r1的值为0.5cm至1cm。
[0021] 本发明的高精度自动骨骼绑定方法具有以下优点:本发明首先对一类外形相似的几何体进行标准建模和手动骨骼绑定,再通过采集设备的精确实物静态模型和已有的标准模型进行空间匹配,以标准模型的顶点作为二次代理骨骼,对设备采集到的精确实物静态模型做空间位置的代理骨骼权重精确传递,最后完成标准骨骼对采集模型的精确控制。本发明解决了普通外形相似几何体直接骨骼映射造成的精细几何体绑定容易出现较大的误差和穿模的技术问题。

附图说明

[0022] 图1为本发明的高精度自动骨骼绑定方法流程图;
[0023] 图2为本发明的步骤S3的算法步骤图;
[0024] 图3为本发明方法的应用场景步骤S3流程图。

具体实施方式

[0025] 为了更好地了解本发明的目的、结构及功能,下面结合附图,以人脸自动骨骼绑定为例,对本发明一种高精度自动骨骼绑定方法做进一步详细的描述。
[0026] 如图1所示,本发明的高精度自动骨骼绑定方法流程图,包括如下步骤:
[0027] S1:对与建模对象相似的几何体进行标准建模,得到标准骨骼模型,然后对标准骨骼模型进行手动骨骼绑定;所述标准骨骼模型具有顶点;
[0028] S2:通过采集设备采集与建模对象相似的几何体的模型,生成一个高面数的精确实物静态模型,作为待绑定的实物模型;
[0029] S3:对所述标准骨骼模型和所述精确实物静态模型进行空间匹配:以步骤S1所得的标准模型的顶点作为代理骨骼的顶点,对所述精确实物静态模型做空间位置的代理骨骼权重精确传递,实现标准骨骼模型对精确实物静态模型的精确控制。
[0030] 现有的静态模型骨骼绑定,通过外形对几何体搭建骨架,然后手动绑定,或通过已有的工具对外形相似的几何体直接粗略的映射已有骨架的各个骨骼。这两种方式存在效率低下,无法精确的动态绑定扫描设备所采集的精确外形几何体,因此同一骨骼直接映射会大大降低这种需要高精度细节的几何体变形的细节效果。本发明的核心改进点是将设备采集的精确3D人脸静态数据自动映射到标准脸部骨骼对应的权重,将标准模型的顶点作为代理骨骼传递给待绑定的复杂几何体的解决思路。此方法可以推广到除人脸模型外的其他外形和尺寸相似的静态模型的骨骼自动映射绑定。
[0031] 具体的方法如下:
[0032] S1:对人脸进行标准的头部建模(包括脸部外形标准、脸部五官分布标准和脸部骨点分布标准),得到标准骨骼模型,并且手动对以上标准人头部标准骨骼模型搭建脸部骨骼骨架,手动绑定脸部各个骨骼到对应的脸部位置,使其权重平滑,并且通过绑定的骨骼能让标准人头部模型作出各种自然的表情。
[0033] S2:通过特定的仪器扫描得真人的脸部,生成一个高面数的较为细致的精确人脸静态模型,作为待绑定的人脸模型。这里可采用AVATARY(Avatar Studio),它是FACEGOOD推出的一款集表情建模、绑定、面部捕捉及驱动的全流程软件,能帮用户高效地解决人脸表情的采集、解析、驱动及快速绑定等问题。
[0034] S3:对所述标准骨骼模型和所述精确人脸静态模型进行空间匹配:以步骤S1所得的标准模型的顶点作为代理骨骼的顶点,对所述精确实物静态模型做空间位置的代理骨骼权重精确传递,最后完成标准骨骼模型对精确实物静态模型的精确控制。
[0035] 具体地,以Unity软件为例,所述步骤S3所述的空间匹配实现的方法如下:
[0036] S31:mesh生成:采集设备生成的人脸mesh,记为mesh1,已有的标准带骨骼的人脸模型mesh,记为mesh2;mesh2的骨骼记为Bone[n],骨骼变换矩阵记为BoneMatrics[n];
[0037] S32:mesh坐标调整:将mesh2放置在WorldSpace空间的原点(0,0,0)处;同理mesh1也放置在同样的坐标位置,这时mesh1和mesh2的局部坐标空间ObjSpace的原点也相应的对齐;
[0038] S33:mesh遍历:这时mesh1和mesh2可能出现交叉重叠,取mesh2的顶点开始遍历,即依次对mesh内的所有顶点进行读取等操作;每个顶点搜索其局部坐标空间下,阈值半径r1(0.5cm至1cm)的球体内,存在mesh1的哪些顶点,将搜索到的顶点的索引放入特定的缓冲,记为vexterIndexBuffer[m],直到遍历完所有mesh2的顶点;每个vexterIndexBuffer[i]中存放了mesh1在阈值半径r1相同位置内的mesh1的顶点的索引;其中所述vexterIndexBuffer[i]为程序初始化产生的int数组;
[0039] S34:顶点权重传递:再次遍历vexterIndexBuffer[m],将vexterIndexBuffer[m]收集到的顶点逐一传递mesh2对应的顶点的权重。以一个顶点最大同时被4个Bone(骨骼)影响为例:由于mesh1和mesh2顶点和多边形的布局在局部会出现差异,会出现mesh1中某些顶点同时被mesh2中的多个顶点包括,进而传递权重出现局部冲突,当mesh1的某个顶点已经被传递了一个权重,mesh2的另外一个顶点也要对上述顶点传递权重时,可首先判定mesh2当前顶点与mesh1当前顶点的距离是否小于mesh2上一个顶点到mesh1当前顶点的距离(ObjSpace空间下),如果小于则更新mesh1当前顶点的权重,否则保留mesh1当前顶点的权重(不更新);遍历完毕,mesh2顶点的权重传递到mesh1初步完成。
[0040] S35:修正权重:完成权重初步传递后,由于mesh1的一个顶点被mesh2几个顶点同时包含范围,在上一步中会进行距离判定和权重更新,所以传递权重后的mesh1的顶点上的权重部分可能出现4个Bone(骨骼)的权重之和大于1或者小于1的情况,造成mesh的部分顶点远远偏离正常位置(大于1顶点会飞出模型,小于1顶点会缩小凹陷下去),所以这一步是遍历mesh1的所有顶点,检测顶点4个权重大于1或者小于1的情况,按照读取的权重比例,将4个权重压缩(或者放大)至4个权重相加之和等于1,使mesh1的显示比例正常。
[0041] S36:平滑权重:由于传递权重的过程中是以顶点之间的距离作为判定,可能会出现传递后权重过度过于生硬的情况。解决方法如下:遍历mesh1的所有顶点,在另一个阈值r2的范围内,每两个顶点之间同一个骨骼的权重分配值大于某个阈值a(比如0.5),那么就重新调整这两个顶点当前骨骼权重的分配使其平滑,同时调整当前顶点内其他3个骨骼权重的比例,使其满足4个Bone(骨骼)权重相加等于1;遍历完毕,可以试情况重复步骤S35和S36;处理完毕后,拉动(平移或者旋转)mesh2的骨骼,mesh1的相应部位也会跟着骨骼移动或者旋转,这样就完成了mesh2到mesh1的骨骼权重传递。
[0042] S37:使用训练过的Deeplearning深度网络对已经传递完毕的生成模型进行骨骼权重矫正,使其进一步平滑,使骨骼的平移和旋转对面部几何体的改变更加贴近真实的人脸。DeepLearning深度网络采用较为广泛的人脸特征库训练,最大程度的逼近目前人脸的面部权重分配特征。
[0043] 通过以上步骤,本发明实现了:(1)对于外形相似的复杂几何体,采用标准几何体建模,手动绑定标准骨骼,将标准模型的顶点作为代理骨骼传递给待绑定的复杂几何体的创新解决思路。(2)对于标准几何体顶点向待绑定复杂几何体传递标准骨骼的权重的具体空间传递算法。(3)标准几何体传递到待绑定复杂几何体标准骨骼权重后,对复杂几何体表面初次传递标准骨骼权重的平滑处理算法。
[0044] 应用场景:
[0045] 这里采用软件Unity,采用上述方法,实现高精度的骨骼绑定。图3为本发明方法的应用场景步骤S3流程图。首先,生成mesh,软件产生如下参数:InputMesh1、InputSkinnedMesh1、Bones;然后对InputMesh1、InputSkinnedMesh1的坐标调整对齐,提取骨骼;传递骨骼和BindPose到Mesh2;以:InputMesh1、InputSkinnedMesh1的顶点为基准,搜索3D空间半径r内的InputMesh1的顶点,建立1对n的映射关系;传递InputSkinnedMesh1的顶点的BoneWeights到InputMesh1的顶点,如遇到InputMesh1上的外层顶点被多个InputSkinnedMesh1的内层顶点所映射,则根据外层顶点的距离为圈中加权平均多个内层顶点的映射关系,最终平均多个内层顶点在同一外层顶点的权重;采用Deeplearning平滑外层顶点权重;将InputMesh1转换为OutputSkinnedMesh2并输出。
[0046] 可以理解,本发明是通过一些实施例进行描述的,本领域技术人员知悉的,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等效替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明所保护的范围内。