一种三维人体模型的骨骼绑定方法

文档序号:9788197阅读:1350来源:国知局
一种三维人体模型的骨骼绑定方法
【技术领域】
[0001] 本发明属于计算机动画技术领域,特别涉及一种三维人体模型的骨骼绑定方法。
【背景技术】
[0002] 计算机动画是由美术、音乐、物理学、计算机图形学组成的一种艺术产物。在视频 这一新的媒介引导下,多种艺术学科的发展和展示得以以另一种方式获得新生,同时使得 各门类学科有机地结合在虚拟世界的平台上。计算机动画技术已经成为计算机图形学的研 究重点之一,应用于如虚拟现实、增强现实、影视CG制作、运动仿生和医学数据现实化研究 等热门领域。计算机动画技术在影视娱乐等产业中已经早有应用且已经成熟化了。而动画 的制作过程中最具难度但对动画效果起到决定性作用的研究方向就是人体动画。
[0003] 在计算机动画的领域里,人体角色的建模和角色模型动画技术从来都是重中之 重,每年的图形学年会(SIG Graph)甚至是娱乐产品年会(E3)都不断有人提出角色动画技 术和其将来的发展方向。然而Motion Capture(运动捕获)、建模技术、运动控制技术等方面 都存在或多或少的不足。建模技术指的是动画模型各个层面之间的联系;运动控制技术是 利用符合运动学、动力学的运动数据控制模型运动;运动捕获顾名思义主要是指在对更加 完美地对捕获数据进行编辑存储,还要保持运动数据更新次数的高频信息:表达某一模型 其运动特点的细微的信息)的技术;绑定技术主要研究运用骨骼中的运动数据带动人体模 型运动从而组织动画,想要模型变形符合生物特征,动画效果的失真情况很少。这些技术的 共同合作才产生了美轮美奂的3D动画和电影。
[0004]想要在二维的平面上创造出逼真的三维效果,同时利用编辑将数据化作如同真实 世界般的运动,计算机动画就是在屏幕上追求极限的逼真,但可想而知其难度之大。主观 上,大自然造就的生命鬼斧神工,构造复杂,没有任何精细建模手段可以匹及,为了完美地 模拟动物体其内部的细节,就需要更加精细和大量的计算,时空复杂性又严重对其进行了 限制,越逼真的建模技术就意味着越难以得到普及,运用几何学生成的骨骼皮肤两层模型 也就自然而然地占据角色动画应用模型的主要部分。同样,不仅仅是人物静态的刻画,人体 运动也很难完美地被控制,如果失真情况严重就很容易被人们发现,将真实世界的动作嫁 接到计算机动画中,用点和线捕获真人的运动数据,这就是获得生成模型骨骼匹配的运动 数据的主要方式,从另一方面,运动捕获数据还需要很多后期人工修改等操作(重用和编 辑),如何在生成数据的同时保证数据的高质量(动作特征和真实感),难以两者兼顾。运动 数据只能保证点和线的运动,但不是每个动画都是"小小火柴人",皮肤应随骨骼运动而运 动,骨骼皮肤绑定技术(Skinned Mesh)即骨骼蒙皮技术发展至今还算不上完美,既没有较 为成熟的绑定流程,复杂的绑定操作又使得蒙皮成了专业人士才能踏足的领域,其中某一 操作环节若是发生失误,都可能导致最后生成的动画失真严重,影响观感。普通的蒙皮方法 绑定效果满足不了生物体运动真实感的需要,而先进的蒙皮方法因为时间复杂度的限制难 以推广,两难的选择下蒙皮技术发展举步维艰。

【发明内容】

[0005] 针对现有技术存在的问题,本发明提供一种三维人体模型的骨骼绑定方法。
[0006] 本发明的技术方案是:
[0007] 一种三维人体模型的骨骼绑定方法,包括以下步骤:
[0008] 步骤1:获取三维人体模型的几何数据,包括皮肤层数据和骨骼层数据;将网格状 的皮肤层数据划分为三角面群,将树状结构的骨骼层数据进行遍历划分成为骨骼线段组;
[0009] 步骤2:为三维人体模型的每一个皮肤控制点分别建立筛选域,在每一个筛选域中 计算骨骼线段到皮肤控制点的距离数据、皮肤控制点到骨骼线段的最短连线、皮肤控制点 所在皮肤近似平面的法向量、皮肤控制点到骨骼线段的最短连线或垂线与皮肤控制点所在 皮肤近似平面的法向量间的夹角余弦,并将这些数据作为筛选数据填充至筛选域中;
[0010] 步骤3:对各筛选域中的筛选数据进行筛选,筛选出各筛选域中影响到作为该筛选 域标记的皮肤控制点的骨骼线段;
[0011] 步骤4:计算得出每一个皮肤控制点分配给各个骨骼线段的权重数值;
[0012] 步骤5:根据骨骼线段对于皮肤控制点的影响程度完成三维人体模型的骨骼绑定。
[0013] 所述步骤1按如下步骤进行:
[0014] 步骤1.1:读取三维人体模型的皮肤层数据,将网格状的皮肤层数据划分为三角面 群,并存储每一个三角面六!1^(^的顶点空间坐标41(1^、5^ £1、2:1£1)、1^(1让、5^、2:11))和(^(叉土£;、 71。、21。),并对各三角面分别赋予由0开始递增自然数1作为各三角面的编号,丨=0,……N;
[0015] 步骤1.2:将三维人体模型内的树状结构的骨骼层数据进行遍历划分成为骨骼线 段组,并赋予由〇开始递增自然数作为骨骼线段Xk的编号,k 2 0且k为自然数,k = 0,……M, 骨骼线段Xk的两个端点记为Xk^Xk2;
[0016] 步骤1.3:读取三维人体模型内的每一个皮肤控制点Dj并赋予由0开始递增自然数 j作为该皮肤控制点的编号,j 2 〇且j为自然数,j = 〇,……T。
[0017] 所述步骤2按如下步骤进行:
[0018] 步骤2.1:为三维人体模型的每一个皮肤控制点分别建立筛选域Fj并将该皮肤控 制点作为该筛选域的标记;每个筛选域h是一个表示骨骼线段和皮肤控制点间映射关系的 多维向量F kj的集合;
[0019] 步骤2.2:计算每一个筛选域中皮肤控制点到各骨骼线段的最短连线lkj并填充至 其对应的筛选域中,该最短连线lkj正方向为骨骼线段上的点射向皮肤控制点;
[0020] 步骤2.3:计算每一个筛选域中的皮肤控制点所在皮肤近似平面的法向量^并填 充至其对应的筛选域中;
[0021] 步骤2.4:计算每一个筛选域中的皮肤控制点仏与骨骼线段Xk的最短连线lkj和皮 肤控制点仏所在皮肤近似平面的法向量如之间的夹角余弦p kj并填充至其对应的筛选域中。 [0022] 所述步骤2.2按如下步骤进行:
[0023]步骤2.2.1:将每一个皮肤控制点与各骨骼线段的两个端点组成新的三角形,其三 条边长度分别设为ll、12和13,其中13为骨豁线段的长度;
[0024]步骤2.2.2:判断不等式(1410^((1012) + (1013))或+ b))是否成立:是,则,该新的三角形的两个底角中有一个为不小于90度的角,取该皮肤控 制点h与骨骼线段的两个端点线中相对更短的线段作为最短连线lkj,否则取皮 肤控制点D倒骨骼线段Xk的垂线作为最短连线lkj,端点为D_Nk,N k为最短连线lkj与骨骼线 段Xk的交点;
[0025] 步骤2.2.3:计算每一个筛选域中各骨骼线段到当前皮肤控制点的最短连线1!^的 长度dkj并填充至筛选域中。
[0026] 所述步骤2.3按如下步骤进行:
[0027]步骤2.3.1:读取每一个皮肤控制点所有相邻的三角面;
[0028]步骤2.3.2:求每一个相邻的三角面的法向量s,且其方向为从三维人体模型内向 三维人体模型外;
[0029] 步骤2.3.3:按照向量加法相加得到的最终向量即皮肤控制点所在皮肤近似平面 的法向量n j。
[0030] 所述步骤3按如下步骤进行:
[0031] 步骤3.1:对每一个筛选域中皮肤控制点到各骨骼线段的最短连线lkj的长度dkj进 行修正和更新,利用改进后的欧式距离公式,将皮肤控制点到各骨骼线段的最短连线l kj的 长度dk/进行修正并重新填充入筛选域中;
[0032]改进后的欧式距离公式:
[0034] 其中,供为趋近于0的调节值;
[0035] 步骤3.2:对每一个筛选域中的lkj进行皮肤层数判定,得出每一个最短连线1!^所 接触或通过的三角面数gkj,如果gkj M 1+ykj),ykj为该皮肤控制点相邻三角面的数量,则表 示皮肤控制点Dj受到骨骼线段Xk的影响是受到其他皮肤隔绝的,将含有最短连线lkj的多维 向量Fkj从筛选域中剔除;
[0036]步骤3.3 :查找出每一个筛选域中dkj '的峰值,选出当前筛选域中dkj '的峰值的最 小值和最大值,分别设为该筛选域内的最小值dm i η和最大值dmax;
[0037] 步骤3 · 4:为每一个筛选域设定一个界值P,P = dmin( 1+ε) ε为一个常数,取〇 · 005;
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1