一种对三维模型进行刚性变形的方法与流程

文档序号:11201441阅读:992来源:国知局
一种对三维模型进行刚性变形的方法与流程

技术邻域

本发明涉及计算机图形学,尤其涉及对三维模型进行变型的方法。



背景技术:

对三维模型进行几何变型的技术,又被称作为“模型变形技术”,指的是在三维网格模型上选取控制顶点,通过操作控制顶点的位置变化来驱动三维模型变形。所述模型变形技术被广泛地应用于3d卡通动画及电影特效的制作。

在上述应用中,为了达到真实合理的变型效果,往往采用基于骨架移动的方法,然而这种方法要求建立准确的骨架模型,其技术难度大、需要使用者花费额外的时间成本和精力来构建骨架。还有一些模型变形技术采用了与原三维模型中需要变型的部分近似的简单几何形状(即包围盒,cage)来替换三维模型中原有的部分,以达到变型的效果,然而这种方法同样需要单独构建包围盒的模型。

对此,一些现有技术提出了基于材料的刚性对模型进行变形的技术(即arap,as-rigid-as-possible),在变形时可以根据需要保持模型的局部刚性,例如对模型的整体或部分进行旋转平移而不改变模型原本的几何特征。不同于基于骨架和包围盒cage的变形方法,上述方法是一种基于三维模型表面的变形方法,其可以在不额外构建骨架或包围盒模型的情况下,尽可能地保持三维模型的几何细节、还原材料的刚性。

最典型的三种对三维模型进行刚性变形的方法包括:sorkine等人于2007年发表proceedingsofeurographicssymposiumongeometryprocessing的“as-rigid-as-possiblesurfacemodeling”中所提出的一种变形方法(称作arap变形方法),levi等人于2015年发表于ieeetransactionsonvisualizationandcomputergraphics上的“smoothrotationenhancedas-rigid-as-possiblemeshanimation”所提出的针对所述arap变形方法的一种改进方法(称作sr-arap变形方法),以及sumner等人在2007年在acmtransactionongraphics所发布的“embeddeddeformationforshapemanipulation”技术。然而,实际使用变型方法时往往需要根据模型本身的变形特点来进行变型,上述几种对三维模型进行刚性变形的方法均只单纯地考虑了针对一个模型进行变型,其无法针对需要变形的各个区域或部分区分出不同的刚性系数,而致使利用上述方法难以获得真实逼真的效果。



技术实现要素:

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种对三维模型进行刚性变形的方法,包括:

1)从所述三维模型的拓扑结构上的多个顶点中选择一个或多个控制顶点;

2)根据与各个所述顶点分别对应的邻域系数、以及所述控制顶点在变形后的位置,计算除所述控制顶点之外的所述顶点在变形后的位置。

优选地,根据所述方法,其中所述邻域系数通过以下方式而获得:

为每个所述顶点分别设置与其对应的邻域系数。

优选地,根据所述方法,其中所述邻域系数通过以下方式而获得:

a-1)确定与所述三维模型具有相同或相似拓扑结构的一个或多个样本模型;

a-2)以所述样本模型为参考,计算分别与每个所述顶点对应的邻域系数,包括:

a-2-1)针对每个所述顶点,计算所述顶点在所述样本模型中的r邻域范围内的arap能量,其中r为取值范围从rmin到rmax之间的正整数;

a-2-2)综合各个样本模型的计算结果,确定使得在所述顶点的r邻域范围内的arap能量值最小的r值作为与所述顶点对应的邻域系数。

优选地,根据所述方法,在步骤a-2)中采用以下计算式计算与所述顶点对应的邻域系数:

其中,n(k,r)是顶点k的r邻域内所包含的所有边,每条边由端点i和j所确定;表示样本模型m上顶点i的三维坐标,表示样本模型m上顶点j的三维坐标,表示参考模型o上顶点i的三维坐标,表示参考模型o上顶点j的三维坐标,rk是模型上顶点k的刚性旋转矩阵;a(k,r)是顶点k的r邻域范围内的面积;m为所述样本模型的集合,m选自集合m;ω是大小为0到1之间的可调参数。

优选地,根据所述方法,在步骤1-2)中所述计算式设置变量ω=3、rmin=1、rmax=6。

优选地,根据所述方法,其中所述样本模型具有与所述三维模型相同的材质。

优选地,根据所述方法,其中所述多个样本模型具有彼此互不相同的姿态。

优选地,根据所述方法,其中步骤2)包括对于所述顶点中的任意一个顶点i执行下列步骤:

3-1)针对顶点i进行全局求解,在保持当前旋转矩阵ri不变的情况下,根据与各个所述顶点分别对应的邻域系数r、以及所述控制顶点h在变形后的坐标ch,求解顶点i在变形后的坐标pi′;

3-2)针对顶点i进行局部求解,在保持通过步骤3-1)计算获得的坐标pi′不变的情况下,根据与各个所述顶点分别对应的邻域系数r、以及所述控制顶点h在变形后的坐标ch,求解旋转矩阵ri;

3-3)重复上述步骤3-1)、3-2),直至arap能量的下降率小于设定的阈值或达到最大迭代次数时,输出计算获得的各个顶点点i的坐标pi′。

优选地,根据所述方法,其中,

步骤3-1)包括:计算a\b,将所获得的结果向量中的每个元素作为每个顶点i在变形后的坐标位置pi′;

其中,向量b中的第h个元素为ch,其余元素中第i个元素等于矩阵a中第h行第h个元素为1,其余元素中第i行第i列的元素等于ωi,j是模型上顶点i和顶点j组成的边ij所对应的余切权重,pi和pj分别为顶点i和j在变形前的坐标,dij表示边ij在多少个顶点的邻域范围中出现;

步骤3-2)包括:通过svd分解求解的结果作为旋转矩阵ri;

其中,ωi,j是模型上顶点i和顶点j组成的边ij所对应的余切权重,eij=pi-pj为进行变形前的边ij,e'ij=p'i-p'j为进行变形后的边ij。

并且,本发明还提供了一种对三维模型进行刚性变形的设备,包括:

用于存储程序的存储器;以及

用于运行所述程序的处理器;

其中,所述程序用于上述任意一项所述方法。

与现有技术相比,本发明的优点在于:

本发明为三维模型中的不同位置设置不同的邻域系数来模拟该位置的刚性,其相较于现有技术更为灵活,并且在待变形模型的拓扑结构不发生较大改变的情况下,在获得了所述邻域系数之后,可以反复地使用所获得的邻域系数对该待变形模型进行变形。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1a是现有arap变形方法所采用的基于顶点一邻域的三维网格的示意图;

图1b是根据本发明采用基于顶点可变邻域的三维网格的示意图;

图1c示出了根据三维模型拓扑结构上顶点i和顶点j组成的边ij所对应的余切权重ωi,j的示意图;

图2是根据本发明的对三维模型进行刚性变形的方法流程图;

图3是根据本发明的计算变形后模型中的顶点的位置的方法流程图;

图4示出了利用根据本发明的对三维模型进行刚性变形的方法采用不同邻域系数r对板材模型进行变形的结果;

图5示出了利用根据本发明的对三维模型进行刚性变形的方法对长棍模型进行变型的结果;

图6示出了采用现有技术与采用本发明的方法对板材模型进行变形的对比图;

图7示出了采用现有技术与采用本发明的方法对人体模型进行各种姿态的变形的对比图。

具体实施方式

下面结合附图和具体实施方式对本发明作详细说明。

通过研究现有的arap变形方法,发明人发现利用所述方法对三维模型进行变型时,会出现模型类似于由塑料材质制成的错觉,致使变形结果不自然。

发明人认为造成该效果的原因在于,现有arap变形方法均是基于三维模型网格顶点的“一邻域”具有一致的刚性这一假设而进行的。如图1a所示,由相邻顶点间的连线所直接构成的三角网格被称作为所述顶点的一邻域,相邻两个顶点的一邻域共享一条单边,在图1a中顶点k的以①标出的一邻域与顶点j以(i)标出的一邻域共享一条边,已由粗线标出。由于相邻顶点间的重叠区域较小,仅为一条单边,因而对邻域刚性的约束性相对薄弱,模型保持刚性的能力较弱,致使在对模型进行变形时会出现模型类似于由塑料材质制成的效果。在实际应用中,需要进行变形的模型还可能是除塑料之外的其他材质,例如金属、肌肉、关节等,并且根据变形区域距离模型控制顶点的距离还有可能造成不同程度的变形。可见上述现有技术在应对复杂的变形需求时,还存在缺陷。

对此,发明人提出可以根据需要选取顶点周围相应范围的区域作为具有相同刚性的邻域,所选择的区域越大则该区域所表现出的刚性越大,反之亦然。在本发明中,三维拓扑结构上的一个顶点的“r邻域”指的是从所述顶点到达另一个顶点所经过的最短的边数为r。举例说明,图1b示出了三维网格拓扑结构中顶点的二邻域所覆盖的范围,参考图1b,假设模型由刚性较大的材质制成,则可以选取较大的区域(例如采用r=2的二邻域的区域,①和②标出了顶点k的二邻域的范围);假设模型由刚性较小的材质制成,则可以选取较小的区域(采用r=1的一邻域的区域,①标出了顶点k的一邻域的范围)。可以理解,若为三维模型的拓扑结构选择不同大小的r邻域作为具有相同刚性的区域,则可以反映出不同模型材质的特性,并且r的取值越大,所反映出的刚性越强。

发明人通过上述分析和试验发现,通过选取不同大小的邻域,可以达到各种材质的变形效果,例如既可以表现灵活且富有弹性的塑料材质,也可以表现坚硬且难以进行弯曲拉伸的钢铁材质。发明人认为,针对复杂的变型需求,例如在表现人体手臂的运动时,为了表现出关节的灵活性、肌肉的牵伸的状态,可以针对手臂模型表面的各个顶点分别计算其所需要设置的邻域系数(即前文中所述的“r邻域”中r的取值)以反映出所述各个顶点所对应的刚性,从而在进行变形时获得更加合理的变形效果

本发明可以通过对数据库中具有与待变形模型具有类似或相同拓扑结构的多个样本模型进行分析而得出的各个顶点邻域系数,利用邻域大小的不同来反映材料的刚性。在操作所述待变形模型中的控制顶点以对该模型中的相应区域进行变形时,可以根据所获得的各个顶点的邻域系数,来约束该模型中各个区域的变形程度,模拟该模型材料的刚性。

在本发明中,仅经过一次数据库邻域系数分析,便可重复利用所获得的结果对同一个待变形模型进行无限次的变形,不必在每次对模型进行变型时重复地导入数据库进行分析。

下面将通过具体的实施例来详细介绍根据本发明的方法。

参考图2,根据本发明的一个实施例,提供一种对三维模型进行刚性变形的方法,所述方法包括:

s1:确定用于分析模型中各个顶点的邻域系数的数据库,所述数据库包含与需要变形的模型具有相同或相似拓扑结构的一个或多个样本模型。

优选地,所述数据库中的各个模型为与待变形模型相同材质的模型,例如均为人体模型。

优选地,所述数据库中的各个模型具有不同的姿态,例如以人体模型为例,可以选择具有相同人体拓扑结构但四肢或头部摆出不同姿态的人体模型。

s2:根据所述数据库中的样本模型,分析出所述拓扑结构中各个顶点的邻域系数,所述邻域系数被用于确定针对所述顶点而设置的邻域大小。

如前文所述,现有的arap方法将拓扑结构中的一邻域设为均具有相同的邻域系数,即其是通过针对顶点k计算r=1的邻域内的arap能量值earap(k,1)以确定该邻域的刚性,较大的earap(k,1)对应于较大的刚性。

发明人基于前文中的构思,对现有的arap方法进行了改进,利用数据库中已存在的各个样本模型,针对各个顶点(例如顶点k)计算r在一定范围内的arap能量值,来确定应当在该顶点k处所应当设置的r的大小作为邻域系数rk以反映出材料的刚性,较大的rk对应于较大的刚性。

针对邻域系数rk的计算方法,包括:

s2-1:针对多个r值,对各个样本模型m计算其拓扑结构上顶点k处r邻域范围内的arap能量e(k,r,m)。其中,可以为r设置取值的上限和下限,例如r=[rmin,....,rmax]。通过针对不同的r值计算e(k,r,m),可以方便在随后的步骤中确定取值最恰当的rk。

e(k,r,m)的计算式为:

其中,n(k,r)是顶点k的r邻域内所包含的所有边,每条边由端点i和j所确定;表示样本模型m上顶点i的三维坐标,表示样本模型m上顶点j的三维坐标,表示参考模型o上顶点i的三维坐标,表示参考模型o上顶点j的三维坐标,rk是模型上顶点k的刚性旋转矩阵,所述旋转矩阵与现有arap方法中的旋转矩阵属于相同的概念,其计算方法将在下文中详细阐述。

在上述计算式(1)中,将模型o作为参考模型,针对样本模型m计算在顶点k的r邻域内的arap值。在本发明中,可以从数据库m中选择任意一个模型作为模型o,并从其他模型中选择模型m。

s2-2:为了方便,还可以针对各个样本模型m计算在顶点k的r邻域范围内单位面积上的arap能量即对e(k,r,m)求均值:

其中,a(k,r)是顶点k的r邻域的面积,即该邻域内所有顶点的voronoi面积的累加和。

通过计算式(2)可以针对样本模型m计算在顶点k的r邻域范围内的arap能量值的均值,即单位面积上的arap能量值。由此,可以统一所获得的arap能量在数值上的尺度,方便随后对针对不同大小的r而计算出的arap能量值进行比较。

s2-3:在获得了针对各个样本模型m在不同邻域范围内(即选择不同r时)的arap能量,可以针对各个样本模型m的arap能量求平均,获得在同一顶点k处不同r邻域范围内的arap能量earap(k,r),以消除由不同样本模型带来的差异性:

其中,m为所述样本模型的集合,m选自集合m,m-1为所使用的样本模型m的总数,其中参考样本模型o不被用作模型m。

s2-4:根据所获得的在顶点k处针对不同大小r邻域范围内的earap(k,r),计算使得arap能量(例如,使得earap(k,r)+ω(rmax-r))取值最小时r的取值,并将该r值作为顶点k的邻域系数rk:

其中,ω是大小为0到1之间的可调参数。在该计算式中增加ω(rmax-r)的目的在于增加可调控修改的余地。

经过大量的实验和测试,发明人发现对于大多数模型材质而言,采用ω=3,rmin=1,rmax=6可以获得效果较好的邻域系数rk。

下面以一个具体的实例来说明上述计算邻域系数rk的过程。

假设,数据库中具有10个符合要求的样本模型,则可以从该10个样本模型中选择1个作为模型o,将其余9个模型分别作为模型m,计算每个顶点k分别在r=1,2,….,6邻域范围内共54项arap能量。针对上述关于顶点k的54项arap能量,计算单位面积上的均值,得到与前文中各个e(k,r,m)相对应的54项e(k,r,m)。例如,当r=6时,其中a(k,6)是与顶点k的6邻域所覆盖的三角网格的面积之和。分别针对r=1,2,….,6,计算获得共6项earap(k,r)。由此可以获得在r=1,2,….,6时的earap(k,r)+ω(6-r),并最终确定使得earap(k,r)+ω(6-r)最小的r以作为顶点k的邻域系数rk。

应当理解,尽管本发明提出了采用上述计算式(1)至(4)的具体实施方式,本发明还可以采用其他方式来获得模型顶点k的邻域系数rk,在本发明中可以采用任何能够用于确定针对顶点k使得在其邻域范围内的arap能量值最小的邻域系数rk的方法。例如,还可以依据经验直接为各个顶点设置相应大小的邻域系数,以反映所述顶点的刚性大小。

并且,在本发明中既可以针对样本模型上的每个顶点分别计算或设置邻域系数,也可以仅计算或设置样本模型中的部分顶点的邻域系数,以降低计算量。

通过上述步骤s1、s2所确定的邻域系数反应了其所对应顶点处的刚性大小,在模型材料不变的情况下,其刚性和邻域系数不会发生改变。因此,在确定了所述需要变形的模型的拓扑结构上顶点的邻域系数之后,可以反复地使用所获得的邻域系数以对所述模型进行变形。

换句话说,在已经确定了所述邻域系数的情况下,可以跳过上述步骤s1和s2直接执行随后的步骤,直接利用随后的步骤计算三维模型进行刚性变形后各点的位置。

s3:针对需要变形的模型,确定进行变形时的控制顶点集合h,其中每个控制顶点h∈h,控制顶点h在变形后的顶点坐标为ch。在实际使用时,可以根据需要选取多组对变形最为重要的点作为控制顶点h。为了方便可以优先选取能够确定其变形后所处位置的点作为控制顶点,例如带动人体模型运动的点,当希望模拟人体摆动手臂时,可以选择手、头、胸、脚等部位的点作为控制顶点。

应当理解,本发明并不限制需要选取哪些控制顶点以及所选取控制顶点的数量,使用者可以根据需要选择需变型时的控制顶点。

s4:根据所确定的控制顶点在变形后所处的位置,利用在步骤s2中确定的针对顶点的邻域系数,计算需要变形的模型中其余顶点在变形后所处的位置。

由于三角网格模型顶点之间是由边链接构成的,各个顶点之间彼此相互约束,因此可以将全部顶点放入同一个矩阵进行计算。进行计算的过程可以采用诸如梯度下降等搜索算法,通过多次迭代最终确定使得arap能量值的变化率小于设定阈值时或达到设置的最大迭代次数时所述其余顶点的坐标。

在前文中已提到arap能量的表达式提供了顶点坐标和旋转矩阵之间的关系(例如在计算式(1)中所示出的)。发明人发现,在最小化arap能量时,若保持旋转矩阵不变,则可以将求解顶点坐标转化为一个最小二乘法的问题,仅需对一个线性方程求解即可。这里的求解方式和传统的arap能量计算方法类似,唯一的区别在于传统方法所采用的计算式中针对的是顶点一邻域所覆盖的所有边,而本发明的方法针对每个顶点k所分别对应的邻域系数rk来确定该顶点邻域范围内的所有边。

基于上述发现,为了加快上述迭代的速度,还可以在本发明中采用全局求解和局部求解相结合的方式:针对需要确定坐标位置的顶点i,在全局求解中保持刚性旋转矩阵ri不变并确定优化后的顶点坐标pi′,在局部求解中保持顶点坐标pi′不变并确定优化后的刚性旋转矩阵ri;若经过一轮全局求解和局部求解后仍未满足前文中所述迭代的退出条件,则重复全局求解和局部求解的过程直到退出。

下面将具体地阐述基于上述分析,在旋转矩阵保持不变的情况下求解顶点坐标的过程。

下式示出了基于本发明的方法的arap能量的表达式(相对地,在传统方法中下式的r=1):

其中,p′是在变形后的顶点的坐标,r是旋转矩阵;i是待变形模型三维网格拓扑结构上的一个顶点,所述顶点的总数为n;j∈n(i,r)表示j为顶点i在r邻域范围内的边上的一个端点;ωi,j是模型上顶点i和顶点j组成的边ij所对应的余切权重,参考图1c,ωi,j为二面角∠1和∠2的余切值的均值,pi′、pi分别为顶点i在变形后和变形前的坐标,p′j、pj分别为端点j在变形后和变形前的坐标;ri为顶点i的旋转矩阵。

针对上述计算式(5)对p′求导并令则可以计算出使得er(p′,r)最小时各个顶点i的坐标pi′,求导的结果为:

由于ωij=ωji,则通过对计算式(6)进行整理可以获得:

其中,dij表示集合{k|(i,j)∈n(k,r)}里的元素个数,即统计边ij在多少个顶点的邻域范围中出现。

该计算式可被总结为对线性问题ap′=b进行求解,其中矩阵a的第i行第i列被赋值为将满足j∈n(i,1)的第i行第j列赋值为dijωij,且向量b的第i行被赋值为

在完成对矩阵a,b的赋值之后,我们需要在求解时添加控制顶点的坐标约束,对于每个控制顶点h∈h(如前文所述其在变形后的坐标为ch),需要在求解时增加硬约束条件p′h=ch,即顶点h在变形后的坐标p′h为ch。将矩阵a的第h行第h列赋值为1,其余元素赋值为0,且将向量b的第h行赋值为ch。

由于矩阵a仅仅是通过输入模型和控制顶点集来确定的,其在迭代变形过程中是一个对称半正定矩阵,因此可以对矩阵a进行cholesky分解。通过在优化步骤中的回代,线性优化系统可以有效的求解顶点坐标p′。cholesky分解和回代方法均可以通过诸如matlab软件中已有的函数或通过简单的赋值命令等代码来实现。

以采用matlab对矩阵a和b进行计算为例,可以为矩阵a中的全部元素进行赋值,并且为向量b中的各个元素赋值。通过matlab计算“a\b”的结果向量作为p′,该向量p′中的第i个元素为顶点i在变形后的坐标,即p'=a-1*b。这里,ap'=b,a-1ap'=a-1b,p'=a-1*b。

下面将具体地阐述在顶点坐标保持不变的情况下求解旋转矩阵的过程。可以对上述计算式(5)进行变形,以求解使得arap能量最小的旋转矩阵:

假设eij=pi-pj为进行变形前的边,e'ij=p'i-p'j为进行变形后的边,则可以将计算式(5)变形为:

这里由于顶点坐标已知,则为大小已知的定值,因此为了使得er(e',r)最小,则应当求解带使得最小时的刚性旋转矩阵ri。

在线性代数中,若m时一个对称半正定矩阵式,则对于任意正交矩阵r,都满足tr(m)≥tr(rm)。因此,可以将求解带使得最小时的刚性旋转矩阵ri的问题转换为求解使得最大时的刚性旋转矩阵ri的问题,其表达式为:

其中,tr为对矩阵求迹(trace)的运算,t为对矩阵求转子的运算,为求解获得最小值时变量ri的取值,为求解获得最大值时变量ri的取值。

此时,ωi,j、eij均为已知值,因此可以针对上述式(9)执行svd分解以计算出满足所述要求的ri:

假设i为三维模型拓扑结构上的一个顶点,p为该顶点在变形前的坐标,p’为该顶点在变形后的坐标,顶点i的邻域系数为r,r可以通过本发明的上述步骤计算获得或通过经验设置获得,n(i,r)是顶点i的r邻域范围内所有的边的集合,则可以利用以下伪代码来进行svd分解。

si=zeros(3,3);//将si初始地设置每个元素均为0的3×3的矩阵

for(j,k)∈n(i,r)//对于属于n(i,r)的顶点j和k执行以下步骤

si=si+wkj(pk-pj)(p′k-p′j)t;//通过累加为si赋值

[u,∑,v]=svd(si);//利用函数求解svd分解

//获得ri的取值

下面将具体介绍根据本发明的一个实施例,通过梯度下降法进行全局和局部求解来计算模型在变形后其拓扑结构上的顶点i的坐标pi′的方法,包括:

s4-1:根据在步骤s3中确定的控制顶点h在变形后的坐标ch,h∈h,针对顶点i进行全局求解,在给定刚性旋转矩阵ri的情况下,求解出此时顶点i的最佳坐标pi′。需注意的是,针对首次迭代,可以初始地将刚性旋转矩阵ri设置为单位矩阵,即其对角线元素均为1,其余元素均为0;在随后的迭代过程中,利用前一次在步骤s4-2中计算出的ri作为本步骤中所使用的刚性旋转矩阵。通过以下方式求解各个顶点i的在变形后的坐标pi′,即:

初始地为向量b和矩阵a赋值,使得向量b中的第i个元素等于并且将初始元素均为0的矩阵a中第i行第i列的元素修改为其中,ωi,j是模型上顶点i和顶点j组成的边ij所对应的余切权重,pi和pj分别为顶点i和j在变形前的坐标,dij表示边ij在多少个顶点的邻域范围中出现;

根据在步骤3)中选定的控制顶点h∈h,修改向量b和矩阵a中相应元素的赋值,将向量b的第h个元素的大小修改为ch,矩阵a中的的第h行第h列的元素大小修改为1;

计算“a\b”(即matlab中矩阵a左除向量b的代码),所获得的结果向量中的每个元素对应于每个顶点i在变形后的坐标位置pi′。

s4-2:根据在步骤s3中确定的控制顶点在变形后的坐标ch,h∈h,针对顶点i进行局部求解,将在上述步骤s4-1中获得的顶点i的坐标pi′,在保持pi′不变的情况下,求解出此时刚性旋转矩阵ri。根据前文中对能量式进行演化的推导计算式(9),在已知各个顶点坐标pi′的情况下,可以计算获得优化后的旋转矩阵ri。

通过以下方式求解ri,即:

为矩阵si赋值,其中,ωi,j是模型上顶点i和顶点j组成的边ij所对应的余切权重,eij=pi-pj为进行变形前的边ij,e'ij=p'i-p'j为进行变形后的边ij;通过svd分解求解

s4-3:重复上述步骤s4-1和s4-2,直到arap能量不再下降(例如下降率小于设定的阈值)或达到最大迭代次数时,输出计算获得的各个顶点点i的坐标pi′。

通过上述实施例可以看出,本发明针对模型的顶点设置邻域系数以反映材料的刚性,以在变形时得到更加灵活的变形效果。通过从数据库中引入合理的样本模型来确定顶点的邻域系数,可以使得变形效果更加真实合理。

为了验证本发明的效果,发明人进行了仿真实验。

图4示出了利用根据本发明的对三维模型进行刚性变形的方法采用不同邻域系数r对板材模型进行变形的结果,在该图中分别针对r=1、5、10、15、20进行的实验。可以看到,随着邻域大小的增大,板材模型显示为具有更强的刚性:当r=1时,模型的材质类似于刚性较弱的塑料板材,而在r=15和20时,模型的材质更类似于强硬度的金属板材。

图5示出了利用根据本发明的对三维模型进行刚性变形的方法对长棍模型进行变型的结果,该图对比了针对同一长棍模型上位置相同的三个控制顶点设置不同邻域系数r的结果。可以看出,在针对长棍模型的中部设置r=3、4、6的邻域系数时,长棍显示出了不同的软硬度。并且,即便为长棍模型的两端设置了相同的邻域系数r=2,在长棍模型中部的邻域系数不同时,靠近长棍模型的两端区域的变型结果并不相同,这样的变型结果非常接近实际生活中具有不同刚性和韧度的长棍(例如粗铁丝、钢筋)弯曲时的效果。

通过图4和图5可以看出,通过为模型的控制点设置不同的邻域系数r,可以模拟出不同刚性程度的材质特点,并且越大的邻域系数对应于越大的刚性特征,这与发明人在前文中提出的设想相吻合。

如前文中所述,发明人认为现有技术均只考虑了为各个顶点设置相同的邻域大小并且将r设置为1,致使采用所述现有技术进行变形的效果并不理想。对此,发明人通过仿真对比了采用3种较常见的现有技术与采用本发明的方法对模型进行变形的效果。

图6示出了采用现有技术与采用本发明的方法对板材模型进行变形的对比图,其中(1)为变形前的板材模型,(2)为采用levi等人在“smoothrotationenhancedas-rigid-as-possiblemeshanimation”中提出的方法对模型进行变形的结果,(3)是采用sumner等人在“embeddeddeformationforshapemanipulation”中提出的方法对模型进行变形的结果,(4)为采用sorkine等人在“as-rigid-as-possiblesurfacemodeling”中提出的方法对模型进行变形的结果,(5)是采用本发明所提出的方法对模型进行变形的结果。通过比较可以发现,采用本发明所提出的方法可以获得更为自然的变形效果,不会出现模型区域自交叉、扭曲的现象。

为了进一步比较上述现有技术与本发明在效果上的差异,发明人还仿真了人体模型的变形。

图7示出了采用现有技术与采用本发明的方法对同一拓扑结构的人体模型进行变形的对比图,其中(1)是采用levi等人在“smoothrotationenhancedas-rigid-as-possiblemeshanimation”中提出的方法对模型进行变形的结果,(2)是采用sumner等人在“embeddeddeformationforshapemanipulation”中提出的方法对模型进行变形的结果,(3)为采用sorkine等人在“as-rigid-as-possiblesurfacemodeling”中提出的方法对模型进行变形的结果,(4)是采用本发明所提出的方法对模型进行变形的结果。在图7中对采用上述现有技术与本发明的方法时人体的三种姿态进行了仿真,并在图中针对变形部位进行了放大。可以看到,针对人体运动的不同姿态,图7(1)-(3)中人体的关节、肌肉的形态均存在不同程度的扭曲失真,例如膝关节后侧的曲线呈现为圆弧状,又例如腹腔呈现出不正常的凹陷。相较之下,图7(4)中人体的腿部、腹腔等区域保持了恰当的刚性,其变形效果比图7(1)-(3)的效果更加自然。

通过上述仿真实验的结果可以看出,本发明提出可以针对模型中的不同位置设置不同的邻域系数来模拟该位置的刚性,其相较于现有技术更为灵活。通过引入已有数据库中与待变形模型具有相同或相似拓扑结构、并且具有相同或不同姿态的样本模型,可以为待变形模型中各个位置的邻域系数提供参考,使得所获得邻域系数更加合理,从而使得依据该邻域系数进行的变型效果更加逼真。在待变形模型的拓扑结构不发生较大改变的情况下,在计算出邻域系数之后,可以反复地使用所获得的邻域系数对该待变形模型进行变形。可以看出,根据本发明的方法对模型进行变形的效果比现有技术更加逼真。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本邻域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1