首页> 中国专利> 基于三维运动参数的三维运动模型全自动驱动方法

基于三维运动参数的三维运动模型全自动驱动方法

摘要

本发明公开了一种基于三维运动参数的三维运动模型全自动驱动方法,首先读取运动信息文件,恢复运动数据,得到初始骨骼模板;然后对用户给定的模型,进行骨架线提取,并标注候选关节点;自动匹配相应关节点;进行骨骼和皮肤的自动绑定,完成皮肤顶点骨骼权重的分配。本发明保证了自动提取和匹配的效果还有执行的时间,大大节省了模型驱动的时间,节省了人力,物力。

著录项

  • 公开/公告号CN101197049A

    专利类型发明专利

  • 公开/公告日2008-06-11

    原文格式PDF

  • 申请/专利权人 西北工业大学;

    申请/专利号CN200710307747.1

  • 申请日2007-12-21

  • 分类号G06T17/00(20060101);G06T15/00(20060101);

  • 代理机构61204 西北工业大学专利中心;

  • 代理人顾潮琪

  • 地址 710072 陕西省西安市友谊西路127号

  • 入库时间 2023-12-17 20:15:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-02-11

    未缴年费专利权终止 IPC(主分类):G06T17/00 授权公告日:20101201 终止日期:20131221 申请日:20071221

    专利权的终止

  • 2010-12-01

    授权

    授权

  • 2008-08-06

    实质审查的生效

    实质审查的生效

  • 2008-06-11

    公开

    公开

说明书

技术领域

本发明涉及电子信息技术领域,尤其是计算机视觉领域。

背景技术

三维模型驱动技术在工业设计,产品开发,医学研究,服装CAD,计算机动画设计等领域有着广阔的应用前景。当前,三维建模技术发展的很快,各种建模方法层出不穷,但要使建好的模型运动,却不是件容易的事情。传统的做法是:使用商业软件(如3Dmax,Maya等)先进行几何建模,然后手动标定骨架位置,设置模型表面顶点权重,得到基于骨架的模型,通过读入外部运动数据(如运动捕获数据)来实现动画效果。这种方法能实现比较逼真的动画效果,但是局限性很大:方法依赖于经验丰富的动画师,开发周期较长,如果虚拟人达到一定规模,其工作量非常大。还有一些模型驱动方法,例如Katz S和Tal A 2003年在《ACM图形学报》发表的“使用模糊聚类和分割分解多层网格”(Katz S,Tal A.Hierarchical meshdecomposition using fuzzy clustering and cuts[J].ACM Trans on Graphics,2003,22(3):954-961.)公开的表面模型划分方法或者杨长水等人在2004年《计算机辅助设计与图形学学报》发表的“个性化虚拟人体模型骨架生成方法”所公开的将模型分块等方法,本质都是提取各分块之间的关节,然后匹配到标准骨架模板上。这种基于划分和分块的模型驱动方法也都需要大量的用户操作。

三维人体模型的自动驱动方法,涉及到的核心方法主要有:模型骨架提取和关节自动匹配、皮肤变形等

骨架提取是从模型中提取出骨架线,并根据几何特征标识候选关节点;而关节匹配是从运动数据文件中提取骨架结构,恢复出骨架,然后和候选关节点进行匹配。当前的骨架提取和关节匹配方法中,胡晓雁在2006年《Journal of Software》发表的“自动匹配虚拟人模型与运动数据”提出了提出切片标识候选关节点,并对候选关节点进行语义分析的方法。还有塔克曼和泰勒1998年在《计算机动画和仿真》发表的“闭合多边形模型的辅助关节”(Teichmann M,Teller S.Assisted articulation of closed poiygonal models.In ComputerAnimatio and Simulation,1998[C],Lisbon,Portugal:European Association for ComputerGraphics,1998:87-101.)提出的维诺(Voronoi)骨架的方法,但这些方法都或多或少需要用户交互,不能实现整个提取过程自动化。

皮肤变形方法中,里皮.雅隆2005年在《ACM图形学报》发表的“网格模型的线性旋转不变坐标系”(Yaron Lip.Linear rotation invariant coordinates for meshes[j],ACMTransactions on Graphics 2005,24,479-487.)和于益周等人2004年在《ACM图形学报》发表的“使用基于梯度域控制的泊松编辑网格”(Yizhou Yu etc,Mesh editing with poisson basedgradient field manipulation[j],ACM Transactions on Graphics,2004,23,3(Aug.),644-651.)提出的基于模型表面的皮肤变形,周昆于2005年在《ACM图形学报》发表的“使用体图拉普拉斯变换实现大网格的变形”(Kun Zhou,2005.Large mesh deformation using thevolumetric graph laplacian.ACM Transaction on Graphics 24,3(Aug),496-503.)提出的基于实体的皮肤变形是两种比较经典的方法,提出的基于实体的皮肤变形是两种比较经典的方法。但这些方法特都需要手工交互设定骨骼位置和权重,不能实现权重分配过程的自动化。

发明内容

为了克服现有技术均需要人工干预,不能够实现自动化的不足,本发明提供一种基于三维运动参数的三维运动模型全自动驱动方法,能够完成模型骨架自动提取和关节自动匹配、皮肤权重的自动分配,从而实现三维运动模型的自动驱动。

本发明解决其技术问题所采用的技术方案包括以下步骤:

第一步,首先读取运动信息文件,恢复运动数据,得到初始骨骼模板。

运动信息文件中存储的是表演人的骨骼关节信息,常见的运动文件有:BVH,AMC/ASF,BVA等等,以BVH文件为例,BVH文件分骨骼结构和运动信息两方面的数据,骨骼结构中用树状结构定义了骨骼的初始位移和相应的继承关系,而运动信息则保存了各个骨骼每帧的关节的旋转角。从骨骼结构中我们可以得到初始骨骼模板,初始骨骼模板只定义了初始位移和骨骼树状结构,没有旋转信息,用于下一步的骨架匹配,从运动信息中可以得到各个关节的运动数据,用于最后驱动模型运动。

第二步,对用户给定的模型,进行骨架线提取,并标注候选关节点。步骤如下:

Step1:首先体素化模型,构建距离映射。

Step2:使用最短路径算法(Dijkstra)得到任意两个体素间的最小加权路径;从模型顶部体素开始,用循环迭代算法添加最远的体素到过渡骨架树中,直到所有的体素添加完毕,骨架树生成。

Step3:生成的骨架树,点的数量过多,不利于我们进行匹配。所以我们对生成的骨架树采用添加内接球的方法过滤一些不合适的点:先把骨架树上的点按照点到模型表面的距离降序排序。从第一个采样点开始,以该点为球心,点到模型表面的距离为半径,添加一个球,顺序执行,如果该点已在某个已添加过的球内,那么不添加球,按序继续下一个采样点,执行到最后一个点为止。也就是说半径最大的球最先被添加,每一个球内部都不包含其他球的球心。完成添加内接球后,我们把内接球的球心设为候选关节点。

Step4:对于过滤后的点,以体中心轴为中心对候选关节点进行分类,分为:两个点关于体中心轴对称、点靠近模型底部、点靠近模型顶部和一个大球的球心,用于第三步的自动匹配。

第三步,自动匹配相应关节点。

将初始骨骼模板缩放到模型骨架线比例,利用第二步的分类结果和候选关节点的位置信息设定相应的判定约束。

(1)标记为脚的关节要在模型底部。对于每个标记为脚的关节,判定值为匹配的点的坐标和图中所有顶点y坐标最小的点y坐标之差。

(2)度为1的关节点应该距离父节点较远,其判定标准为这一个度为1的关节点匹配到点v2,它的父节点匹配到点v1(不同于点v2),如果顶点v3相邻于点v2,而它的内接球半径至少是点v2内接球半径的1/2,那么判定值为1。

(3)不能有长度为0的骨骼链,即关节和它的父节点不能被匹配为同一个节点。如不符,判定值为1。

(4)匹配后的骨骼与原始骨骼模板的相应骨骼段比例应相当。

(5)标记为对称的骨骼,匹配后也应当对称。

定义每个判定约束相应的判定函数,每个判定函数都有相应的权重,如果违反了某个约定就得其判定函数的判定值,寻求所有骨架匹配组合所有关节点判定值相加最小的为最优解。在候选关节点中寻找最相似的骨架匹配。

第四步,进行骨骼和皮肤的自动绑定,完成皮肤顶点骨骼权重的分配。

利用模拟热平衡效应来分配骨骼权重:模拟热量温度在体空间内部的分配来分配权重,把模型看作为一个热导体,设骨骼i,加热骨骼i,使它的温度升到1,同时保持其他的骨骼温度为0,当热平衡后,我们把在这个表面上的每一个顶点的平衡温度作为骨骼i在这个顶点上的权重。平衡方程如下:

-Δwi+Hwi=Hpi

Δ是离散表面拉普拉斯算子,w代表骨骼的权重,pi是一个向量,如果顶点j的最近的骨骼是i,pji=1,否则pji=0.H是一个对角矩阵,Hij是顶点j对最近的骨骼的热权值。设d(j)是顶点j到最近骨骼的距离,一般用Hjj=C/d(j)2,C是参数,取值范围在(0.2-0.3)。当确定等式因子后,代入得到每个骨骼的权重。然后代入到LBS算法公式中:

Bj=ΣiWji2Ti2(Vj)

令Vj代表顶点j的坐标,Ti是i骨骼的变换矩阵,而Wji是i骨骼对于顶点j的权重,那么Bj为顶点j变换后的新坐标,加载运动数据更新皮肤顶点坐标,实现皮肤变形。

本发明的有益效果是:由于采用了在运动文件中提取骨骼模板,使得骨骼模板不再用人手工设置,由于采用了提取骨架树,标记候选关节点,使得骨骼模板可以在一定量的候选关节点中寻找最优的匹配,保证了自动提取和匹配的效果还有执行的时间,由于采用了改进的lBS算法,可以在保证实时性的前提下,自动完成骨骼权重的分配,保证了整体骨架提取,匹配,变形系统的自动完成。本发明所述的基于三维运动参数的三维运动模型全自动驱动方法不需要人工交互,不需要专业人员,用户只需要读取模型文件,就能自动完成骨骼的提取和匹配,皮肤的绑定,从而实现模型的驱动。全部的驱动准备时间一般在1分钟以内(视模型规模决定),这是传统的驱动模型方法所不能比拟的,它大大节省了模型驱动的时间,节省了人力,物力。如果用于媒体制作,可以大大提高媒体制作效率。

下面结合附图和实施例对本发明进一步说明。

附图说明

图1是本发明的流程图。

具体实施方式

方法实施例:实例模型都不含骨骼信息。

实验硬件环境:inte1 core2 e6300(1.86G)+1G内存。

实验软件环境:VS2005+Opengl。

第一步,先读取bvh文件,实例运动文件含有18个骨骼的信息,有329帧运动数据,将骨骼信息提取为初始骨骼模板。读取实例模型,实例模型的文件有39kb,含有1033个顶点,6186条边。

第二部,采用wade方法构建距离映射,体素大小0.02,完成会模型内部的体素之间会形成相应的距离关系,我们以模型的最高点的体素,作为骨架树的初始体素点,我们使用Dijkstra算法计算任意两个体素间的最小加权路径;用循环迭代算法添加最远的体素到骨架树中,直到所有的体素添加完毕,骨架树生成。模型1的骨架树含有4547个点,生成的骨架树的点在模型内部中心线附近分布,点数较多,不利于直接进行匹配,所以使用内部添加球的方法,过滤一部分点,先把骨架树上的点按照点到模型表面的距离降序排序。从第一个采样点开始,如果该点在所有已添加过的球的外部,那么以该点为球心,点到模型表面的距离为半径,添加一个球,如果该点已在某个球内,那么不添加球,按序继续下一个采样点,执行到最后一个点为止。也就是说半径最大的球最先被添加,每一个球内部都不包含其他球的球心。完成添加内接球后,我们把内接球的球心设为候选关节点添加球过滤后的点数为137个,我们将这137个点分为4类,

(1)如果两个点关于模型中心线对称,则两个点标记为一组对称点。

(2)如果点在模型底部,则标记为feet。

(3)如果点在模型顶部,则标记为head。

(4)如果点是一个大球的球心,则标记为bigsphere。

第三步,将初始骨骼模板缩放到模型骨架线比例,利用上一步的分类结果,和候选关节点的位置信息。设定相应的判定约束,并定义判定函数,

(1)标记为feet的关节要在模型底部。对于每个标记为脚的关节,判定值为匹配的点的坐标和图中所有顶点y坐标最小的点y坐标之差。

(2)度为1的关节点应该距离父节点较远,如果很近的话假设一个度为1的关节点匹配到v2,它的父节点匹配到v1(不同于v2),如果顶点v3相邻于v2,而它的球半径至少是v2球半径的1/2,那么判定值为1。

(3)不能有长度为0的骨骼链,即关节和它的父节点不能被匹配为同一个节点。如不符,判定值为1。

(4)匹配后的骨骼与原始骨骼模板的相应骨骼段比例应相当。

(5)标记为对称的骨骼,匹配后也应当对称。

这些具有几何意义的约束每个判定函数都有相应的权重(0.15,0.27,0.24,0.3,0.65),如果违反了某个约定就得其判定函数的判定值,寻求所有骨架匹配组合所有关节点判定值和权重的积相加最小的为最优解。开始求解问题时,直接使用最小化判定函数的方法来求解问题是比较困难的,因为求解的可能性是指数级的,要考虑渐进的方法来简化求解形式,如果我们先匹配骨架的一小部分(或者个别几个关节点),然后逐渐添加临近的关节点,形成一个渐进的匹配方法,这是可行的。总的来说,入度高的关节点应该先被匹配,因为入度高的节点对于骨骼结构整体影响大,而它确定后,可以进一步确定它的分支,形成精确的匹配。

具体做法是:对标准模板的每一个关节点的匹配先后做一个排序,排序标准是:(1)入度从大到小。(2)添加完一层入度节点后,添加他们的子节点,也按入度大小排列。设一个队列,先将第一层节点入队,计算局部的最优匹配,再逐渐加入节点,每加入一个节点,都要计算局部最优的匹配。直到所有节点加入完毕,所有节点出队,得到最后的匹配结果。

第四步,骨架匹配完成后我们根据表面点到相应关节的位置分配权重,权重的分配采用求解热平衡方程的方法求解

热平衡方程如下:

-Δwi+Hwi=Hpi

Δ是离散表面拉普拉斯算子,可由Meyer[8]计算。pi是一个向量,如果顶点j的最近的骨骼是i,pji=1,否则pji=0.H是一个对角矩阵Hij是顶点j对最近的骨骼的热权值。设d(j)是顶点j到最近骨骼的距离,实验中用Hjj=C/d(j)2,C=0.2,代入参数得到每个骨骼的权重W。然后代入到LBS算法公式中:

Bji=ΣiWj2T2(Vj)

令Vj代表顶点j的坐标,Ti是i骨骼的变换矩阵,可由运动数据得到,而Wji是i骨骼对于顶点j的权重,那么Bj为顶点j变换后的新坐标,加载运动数据,得到每帧运动不同骨骼的T,代入公式可以得到变形后的皮肤顶点坐标,实现皮肤变形。整个驱动准备阶段各个部分算法的执行时间如下(ms):

  构建距离域时间  4547  匹配的时间  1578  皮肤绑定的时间  62  总时间  9984

在整个提取时间中,构建距离域时间跟模型规模有关,占据时间较长,匹配的时间跟构成的骨架图复杂程度有关,时间不一。提取采样点,添加球,构建图,模型规模无关比较固定,占据时间较短,皮肤绑定的时间和模型顶点数相关,时间依顶点数大小而定,整个时间在一分钟以内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号