CN105427360B - 一种动态网格的误差可控cage序列表示算法 - Google Patents
一种动态网格的误差可控cage序列表示算法 Download PDFInfo
- Publication number
- CN105427360B CN105427360B CN201510767406.7A CN201510767406A CN105427360B CN 105427360 B CN105427360 B CN 105427360B CN 201510767406 A CN201510767406 A CN 201510767406A CN 105427360 B CN105427360 B CN 105427360B
- Authority
- CN
- China
- Prior art keywords
- grid
- vertex
- control
- sequence
- matrix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 66
- 230000014509 gene expression Effects 0.000 title claims abstract description 7
- 239000011159 matrix material Substances 0.000 claims abstract description 106
- 238000005457 optimization Methods 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims description 63
- 230000008569 process Effects 0.000 claims description 18
- 230000009466 transformation Effects 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000009795 derivation Methods 0.000 claims description 8
- 238000002485 combustion reaction Methods 0.000 claims description 7
- 230000008901 benefit Effects 0.000 claims description 6
- 230000036544 posture Effects 0.000 claims description 6
- 238000005303 weighing Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 claims description 4
- 238000011156 evaluation Methods 0.000 claims description 3
- 230000000452 restraining effect Effects 0.000 claims description 3
- 238000013519 translation Methods 0.000 claims description 3
- 238000012886 linear function Methods 0.000 claims description 2
- 238000013508 migration Methods 0.000 abstract description 3
- 230000005012 migration Effects 0.000 abstract description 3
- 230000006835 compression Effects 0.000 abstract description 2
- 238000007906 compression Methods 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000004215 lattice model Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000008921 facial expression Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Feedback Control In General (AREA)
Abstract
本发明公开了一种动态网格的误差可控CAGE序列表示算法,包括实矩阵控制网格生成、基于Poisson方程的权重简化、稀疏矩阵控制网格生成和控制网格优化四个部分。给定输入三维形状序列和其中一帧的控制网格,该算法通过实矩阵控制网格生成得到控制网格序列,接着通过基于Poisson方程的权重简化得到具有局部性的稀疏坐标矩阵,之后执行稀疏矩阵控制网格生成,检测重构误差,如果最大误差值大于用户输入的容忍阈值,执行控制网格优化再重新执行上面三步直到满足用户指定值。本发明解决的是误差可控的动态网格的控制网格序列表示问题,可以应用到动态网格序列的压缩表示、加速编辑和形状迁移。
Description
技术领域
本发明涉及计算机图形学和三维动画制作领域,尤其是指一种动态网格的误差可控CAGE序列表示算法。
背景技术
近年来,动态几何数据获取技术的飞速发展使得我们很容易捕捉不同的运动序列信息,同时也引发了一些新的可研究问题,其中之一就是三维运动序列的可编辑控制技术。任何编辑三维运动序列的框架算法中都需要高级控制结构。人工合成的运动序列一般都含有一个控制结构(骨架,控制网格等),因为这些序列是通过编辑控制结构得到的。但是通过动态几何数据获取技术得到的运动序列一般都没有控制结构,它们一般是一个点集序列或者一个网格序列。对于这些点集或者网格序列,如果没有一个统一的控制结构,我们无法完成高效且有意义的编辑任务,所以研究如何为这些点集或者网格序列生成可编辑的高级控制结构是非常有必要的。
为动态几何序列生成一个控制结构能够有效地操纵序列,因为用户可以很直观地进行网格操纵,通过重用、编辑、变形迁移等技术就可以得到新的网格模型数据。不仅简单而且提高了数据的利用率。但是三种不同的控制结构在这些方面的表现不同,有着各自的优缺点。
此外,虽然三维形状信息捕获技术使得获取一个富含细节的三维形状序列不再是一件困难的事情,但是这样的一个序列大多包含成百上千帧且每一帧都有成千上万的顶点数目。虽然序列中每一帧动作都稍微有点不同,但是它们有着相同的顶点数目和拓扑关系,并且它们具有相同的局部特征。此外,例如人或者的有关节的三维模型的运动一般遵循一定的运动定律。这些都表明无论是几何形状还是整个三维形状序列中都存在着很多冗余的信息,所以寻找一种可用于压缩的表示形式是非常必要的。
目前,Xu等提出将控制网格作为模型蒙皮,如文献[Xu W;Zhou K;Yu Y,etal.Gradient domain editing of deforming mesh sequences[A].ACM Transactions onGraphics(TOG)[C].ACM,2007:84.],利用线性蒙皮算法驱动变形得到控制网格序列。该方法没有显式地进行逆向工程而是通过网格上点集的局部变换得到控制网格的顶点位置。当控制网格的顶点个数比较多时,该方法很难得到比较准确和稳定的结果。相似地,通过变形算法把网格序列的运动变换到控制网格上的方法也是可行的,如文献[Sumner R W;J.Deformation transfer for triangle meshes[J].ACM Transactions onGraphics(TOG),2004,23(3):399-405.]。他们首先建立网格模型和控制网格的对应关系,之后将网格各帧之间的变换集合应用到控制网格上使其具有相同的变换过程和姿态。该方法通过约束特定点的位置来保持运动的全局特征,例如通过约束一些顶点的位置达到想要的姿态。他们的方法不仅能够处理网格而且能够处理捕获的面部表情。但是因为理论上很难保证控制网格和对应网格具有相同的变换,所以在重构原始网格序列时存在很大的误差。Savoye等用一个全局调整项来保持控制网格的微分坐标,如文献[Savoye Y;FrancoJ.Cage-based tracking for performance animation 2011,599-612.]。他们通过两个约束来求解控制网格,第一个约束要求通过重心坐标和控制网格的顶点组合得到的网格顶点坐标和原网格尽可能相等,第二个约束要求得到的控制网格保持给定的初始控制网格的局部信息,但是通过求得的控制网格和重心坐标矩阵得到的重构网格与原网格相比有很大的误差。2012年,Jean-Marc Thiery等为了能够得到基于控制网格的逆向工程的稳定解,如文献[Thiery J M;Tierny J;Boubekeur T.CageR:Cage‐Based Reverse Engineering ofAnimated 3D Shapes[A].Computer Graphics Forum[C].Wiley Online Library,2012:2303-2316.]借助于数学上的最大体积法(Max-Volume)寻找退化矩阵的一个最优子方矩阵的方法来求解。此外,该算法需要再添加约束项使得控制网格的微分坐标的模长尽可能小才能得到形状更好的控制网格。但是他们的方法得到的控制网格虽然具有较好的形状,但是利用其重构出来的网格却存在很大的误差,这是用户所不能接受的。Chen等提出了一种自适应的结合骨架信息的cage生成算法,如文献[Chen X;Feng J.Adaptive skeleton‐driven cages for mesh sequences[J].Computer Animation and Virtual Worlds,2014,25(3-4):445-453.],该算法能够通过生成的控制网格计算重构误差来决定控制网格的细致程度。该算法虽然能够得到较好形状的控制网格序列,但是没有从根本上解决重心坐标具有全局性带来的误差较大的问题。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供了一种动态网格的误差可控CAGE序列表示算法,不仅使得求得的控制网格与原网格的形状相似,而且求得的控制网格之后进行重构出的网格模型与原网格的误差可控,达到用户的要求。
为实现上述目的,本发明所提供的技术方案为:一种动态网格的误差可控CAGE序列表示算法,包括以下步骤:
1)实矩阵控制网格生成
针对给定的三维形状序列SM=(M0,M1,…,MF)和其中一帧对应的控制网格C0,通过逆向工程算法得到三维形状序列对应的控制网格序列SC=(C0,C1,…,CF),其中,问题的数学描述如下式:
Ei=||ΦCi-Mi||2 (1)
式中,Φ表示均值坐标构成的权重矩阵,通过控制网格和它对应的网格模型计算得到;Mi是三维形状序列中第i帧,通过上式(1)求解得到该帧对应的控制网格Ci,对三维形状序列中的每一帧进行同样操作得到控制网格序列SC=(C0,C1,…,CF);
通过添加Laplacian项使得所求控制网格与输入的控制网格有相同的局部细节,即下式:
ξdense(k)=||ΦCk-Mk||2+λ||Tk(Ck)δ-LCk||2 (2)
式中,Tk(Ck)是控制网格Ck的每个顶点的变换矩阵构成的大矩阵,δ是C0的微分坐标组成的矩阵,LCk是Ck每个顶点的微分坐标构成的矩阵;λ是后面一项的权重值,可根据三维形状序列本身运动信息进行调整,运动幅度越大该值设越大;将Tkδ表示成Ck的线性函数,推导过程如下面介绍:
对于第i个顶点的变换矩阵有令所以(s h1 h2 h3 tx ty tz)T=(A0 A1 A2 A3 A4 A5 A6)Tbi;那么将变换矩阵中的值分别代入后,变换后的微分坐标表达式推导过程如下:
因为微分坐标具有平移不变性,所以在此处忽略掉平移量,故变换后的微分坐标可以表示为下式:
将所有控制网格顶点变换后的微分坐标写在一起表示为NCk,其中N是3m×3m矩阵,Ck是3m×1的矩阵;最终的能量表达式为:
ξSHP(k)=||ΦCk-Mk||2+λ||NCk-LCk||2 (4)
对于三维形状序列中的每一帧,通过上式(4)得到对应的控制网格,进而得到整个序列的控制网格;
2)基于Poisson方程的权重简化
存在大的重构误差的原因是权重矩阵Φ是通过形状序列中的第一帧M0和对应控制网格C0所得到,且均值坐标是全局影响,即模型上任何一个顶点都要受到所有控制点的影响;当给定的网格Mk较于原网格变形比较大时,实际上使用的权重矩阵Φ已经不能适用于Mk,这必将导致重构出来的网格存在扭曲;基于Poisson方程的权重简化方法提供了一种从多个输入模型中学习新的权重矩阵的方法,能够从输入的多个模型样例中学习到每个网格顶点受控制顶点影响的情况,使得原来的网格顶点受所有控制顶点影响变成只受k个控制顶点的影响;针对网格模型上的每一个顶点,简化方法首先从所有控制顶点中选择k个对其影响最大的控制顶点,同时将顶点影响权重设置为0;接着为了使这k个顶点的影响值满足权重约束,即权重值加起来为1,利用Poisson方程约束新的权重重构出来的样例模型与原模型的微分坐标尽可能相等;最后,对于网格模型上的所有顶点做相同的操作得到新的权重矩阵;简化方法使得新的权重矩阵既满足每个网格顶点只受k个控制顶点的影响又使得重构出来的模型很光滑;
实矩阵控制网格生成输出的是控制网格序列S′C,在此将网格序列和对应的控制网格序列作为简化方法的输入,分别记作E和CE,共F+1个模型例子;对于网格上顶点v,选出k个对其影响最大的控制网格上的顶点,坐标值设为未知,控制网格上的顶点影响坐标值置为0;通过求解下式(5)使得利用新权重的重构样例模型的微分算子与原模型尽可能相等;
式中,inf(vl)表示三维网格模型顶点vl受控制的控制网格顶点集合,n是网格顶点个数;优化问题的未知量是α,共有nk个元素;且上式(5)中还需加上权重性质约束,即网格上每个顶点受控制的k个控制网格顶点的权重之和为1,且每个权重值大于或者等于零;
通过优化局部求解器进行求解;求解过程中假设:当求解一个网格上顶点受控制的控制网格顶点集合的影响权重值时,该顶点相邻的网格顶点的权重值是固定的;这样上式(5)就转化为一个只含有k个未知量的带约束的二次优化问题;对于求解得到的权重值立即更新到权重矩阵中,进行下一个顶点的权重值的求解过程;当网格上所有顶点的权重值都求出后,将其作为新的输入,迭代求解过程直到迭代次数达到设置值或者精度小于设定值;
3)稀疏矩阵控制网格生成
由于上式(5)中没有显示地约束重构得到的网格模型和原始的网格Mk相同,求得的新的权重坐标矩阵Φ′不能保证利用该矩阵重构出来的网格序列有很小的误差,所以有必要利用新求得的权重矩阵重新求解上公式(4)中的优化问题;此处需要说明,稀疏矩阵cage生成中的优化求解公式(6)和实矩阵控制网格生成中公式(4)有两方面的不同:一是权重矩阵Φ′,此步使用的是具有局部性的通过基于Poisson方程简化方法得到的新权重矩阵,二是第一帧的控制网格C0同样需要通过新的权重矩阵重新求解,也就意味着该控制网格的几何信息发生了相应的变化;
ξSPA(k)=||Φ′Ck-Mk||2+λ||NCk-LCk||2 (6)
4)控制网格优化
如果输入的控制网格的顶点个数为十几个到几十个,当输入的网格序列姿态变化多样时,控制网格很难有足够的灵活度来表示这些姿态;如果使用这样的控制网格进行动态几何序列的逆向工程的话,一般得到的控制网格序列的形状质量不高,同时重构出来的三维模型序列与原序列相比存在较大的误差;
在考虑如何增加控制网格顶点问题之前,先介绍误差的计算公式;使用两种标准进行误差评定,一是平均误差,记为E2,二是最大误差,记为E∞;那么重构网格序列第k帧上顶点i与原网格对应顶点之间的距离计算公式是
式中,dom(i)表示网格顶点i受控制网格顶点控制的索引集合;定义lk是第k帧网格的包围盒的对角线长;误差的计算公式如下:
在控制网格的不同位置增加顶点会有不同的效果,采用贪心算法,即在重构误差较大的地方增加控制网格顶点;误差较大的原因是控制网格在此处灵活度不够,不能够准确地拟合此处的网格顶点;通过在误差比较大的地方增加控制网格顶点能增加控制网格在此处的灵活度,进而能够更快地减少误差;利用稀疏矩阵重构步骤得到的控制网格序列SC和权重矩阵Φ′重构出的原网格模型序列表示为P′={P0,P1,…,PF};假设用户输入能够容忍的最大误差为ε,根据欧氏距离计算公式选出重构误差大于ε的网格顶点,进而选择出其受影响最大的控制网格顶点,之后在它们周围添加顶点;具体过程是:首先定义一个网格顶点索引集合pSet,并将其设置为空;针对网格序列中的每一帧Pm,如果第j个顶点的重构误差大于ε,即下式:
将加入pSet={j},遍历重构序列网格上的顶点得到最终的pSet;针对pSet里的每一个元素,根据权重矩阵Φ′选出对应行中最大值的两个值对应的cage顶点,选择的就是标记的值所对应的控制网格顶点d和f,放入集合cSet;使用贪心算法,得到在周围需要添加顶点的控制网格顶点集合cSet;
针对已经选出了需要在周围添加顶点的控制网格顶点集合,还需要找到需要处理的边并进行细分,详细过程如下:
对于cSet里面的每一个控制网格顶点,找出共该点的所有边中最长的边;之后控制网格上所有三角面片被分成了四类,如果三角面片上没有一条边被标记,那么不对该面进行加点操作;如果三角面上有一条边被标记,那么计算被标记边的中点,与所对的顶点连接增加一条新的边;如果三角面上有两条边被标记,那么分别计算着两条边的中点并连接构成一条新的边,之后连接最长边的中点及所对顶点构成一条新边;如果三角面的三条边都被标记,那么取这三条边的中点并相互连接构成三条新的边;对控制网格上所有面都进行上述操作后就完成了本次的控制网格优化。
本发明与现有技术相比,具有如下优点与有益效果:
1、通过本发明算法不仅能够得到较高质量的控制网格序列,同时重构出来的序列与原序列相比误差非常小,可以应用到动态网格序列的压缩表示、加速编辑和形状迁移。
2、本发明提出一个误差可控的基于控制网格的逆向工程的框架,给定一个三维形状序列,该方法能够交替地进行实矩阵控制网格序列生成和稀疏矩阵控制网格序列生成直到重构误差小于用户指定的误差。
3、本发明引入基于Poisson方程的简化权重。为了使得每一个控制顶点只影响网格模型的局部区域,在稀疏矩阵生成控制网格阶段利用Poisson方程权重简化算法获取稀疏坐标矩阵。控制网格影响区域的局部性是本文通过增加新的控制网格顶点策略来减小误差的关键。
4、本发明还提出一个简单的自适应优化控制网格算法。实验结果表明我们的方法对输入的第一帧控制网格不敏感,对于给定的比较粗糙的控制网格,我们的算法能够很快地通过添加控制顶点的方法减小重构误差。
5、与现有的方法(CageIK、CageR、SC)相比,本发明算法也突显优势,主要体现在重构误差远小于现有上述三种方法。
附图说明
图1为本发明的整个算法流程图。
图2为本发明的控制网格顶点选择图,对于网格顶点j,选择对其控制权重最大的两个控制网格顶点。
图3为本发明的静态控制网格上三角面片的优化策略示意图。
图4为本发明的实验女生跳舞的运动序列的结果展示图,其中第1行是原始网格序列,第2行是本文算法得到的对应的控制网格序列,第3行是本文算法利用得到的控制网格重构的网格模型序列。
图5为本发明的实验男生的运动序列的结果展示图,其中第1行是原始网格序列,第2行是本文算法得到的对应的控制网格序列,第3行是本文算法利用得到的控制网格重构的网格模型序列。
图6为本发明的实验马运动序列的cage逆向工程得到的结果图,其中第1行是原始的运动序列,第2-3行是CageIK算法得到的控制网格序列和重构出的网格模型序列,第4-5行是CageR算法得到的控制网格序列和重构的网格模型序列,第6-7行是SC算法得到的控制网格序列和网格模型序列,第8-9行是本文算法得到的控制网格序列和重构的网格模型序列。
图7为本发明的实验例子中拿出具体帧进行放大的对比图,图中每个小格中四个模型从左到右分别是原始网格,CageR的结果,CageIK的结果,本文算法的结果。
图8为本发明算法和CageR,CageIK算法对图4例子进行重构的误差对比统计图。
图9为本发明算法和CageR,CageIK算法对图5例子进行重构的误差对比统计图。
图10为本发明算法和CageR,CageIK算法对图6例子进行重构的误差对比统计图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本实施例所述的动态网格的误差可控CAGE序列表示算法,其具体情况如下:
给定三维形状序列SM=(M0,M1,…,MF)和其中一帧对应的控制网格C0,通过逆向工程算法能够得到三维形状序列对应的控制网格序列SC=(C0,C1,…,CF)。问题的数学描述如下式:
Ei=||ΦCi-Mi||2 (1)
式中,Φ表示均值坐标构成的权重矩阵,通过控制网格和它对应的网格模型计算得到;Mi是三维形状序列中第i帧,通过上优化公式(1)求解得到该帧对应的控制网格Ci;对三维形状序列中的每一帧进行同样操作得到控制网格序列SC=(C0,C1,…,CF)。
为了克服现有的方法重构误差较大的问题本发明提出的解决方案:针对给定的三维形状序列,本发明能够根据所得三维形状序列的重构误差的大小进行迭代地更新初始给定控制网格的顶点位置信息和拓扑关系,使得最终得到的控制网格序列不仅能够保留原网格序列的运动信息和形状信息,同时能够确保重构出的三维形状序列的误差最小。本发明包含实矩阵控制网格生成、基于Poisson方程的坐标简化、稀疏矩阵控制网格生成和控制网格优化四部分,执行流程如图1所示。对给定输入三维形状序列和其中一帧的控制网格,该算法通过实矩阵控制网格生成得到控制网格序列,接着通过基于Poisson方程权重简化得到具有局部性的稀疏坐标矩阵,之后执行稀疏矩阵控制网格生成,检测重构误差,如果最大误差值大于用户输入的容忍阈值,执行控制网格优化再重新执行上面三步直到满足用户指定值。
实矩阵控制网格(cage)生成:
直接求解公式(1)会导致不稳定的解,所以本发明在此通过添加Laplacian项使得所求控制网格与输入的控制网格有相同的局部细节,即下式:
ξdense(k)=||ΦCk-Mk||2+λ||Tk(Ck)δ-LCk||2 (2)
式中,Tk(Ck)是控制网格Ck的每个顶点的变换矩阵构成的大矩阵,δ是C0的微分坐标组成的矩阵,LCk是Ck每个顶点的微分坐标构成的矩阵。λ是后面一项的权重值,一般设置λ=0.05,可根据三维形状序列本身运动信息进行调整,运动幅度越大该值可设越大。将Tkδ表示成Ck的线性函数,推导过程如下面介绍:
对于第i个顶点的变换矩阵有令所以(s h1 h2 h3 tx ty tz)T=(A0 A1 A2 A3 A4 A5 A6)Tbi。那么将变换矩阵中的值分别代入后,变换后的微分坐标表达式推导过程如下:
因为微分坐标具有平移不变性,所以在此处我们忽略掉平移量,所以变换后的微分坐标可以表示为下式:
将所有控制网格顶点变换后的微分坐标写在一起表示为NCk,其中N是3m×3m矩阵,Ck是3m×1的矩阵。最终的能量表达式为:
ξSHP(k)=||ΦCk-Mk||2+λ||NCk-LCk||2 (4)
对于三维形状序列中的每一帧,通过上优化公式(4)得到对应的控制网格,进而得到整个序列的控制网格。
基于Poisson方程的权重简化:
存在大的重构误差的原因是权重矩阵Φ是通过形状序列中的第一帧M0和对应控制网格C0所得到,且均值坐标是全局影响,即模型上任何一个顶点都要受到所有控制点的影响。当给定的网格Mk较于原网格变形比较大时,实际上使用的权重矩阵Φ已经不能适用于Mk,这必将导致重构出来的网格存在扭曲(distortion)。基于Poisson方程的权重简化方法提供了一种从多个输入模型中学习新的权重矩阵的方法。该方法能够从输入的多个模型样例中学习到每个网格顶点受控制顶点影响的情况,使得原来的网格顶点受所有控制顶点影响变成只受k个控制顶点的影响。针对网格模型上的每一个顶点,简化方法首先从所有控制顶点中选择k个对其影响最大的控制顶点,同时将顶点影响权重设置为0;接着为了使这k个顶点的影响值满足权重约束(权重值加起来为1),利用Poisson方程约束新的权重重构出来的样例模型与原模型的微分坐标尽可能相等;最后,对于网格模型上的所有顶点做相同的操作得到新的权重矩阵。简化算法使得新的权重矩阵既满足每个网格顶点只受k个控制顶点的影响又使得重构出来的模型很光滑。
实矩阵控制网格生成输出的是控制网格序列S′C,在此我们将网格序列和对应的控制网格序列作为简化算法的输入,分别记作E和CE,共F+1个模型例子。对于网格上顶点v,选出k个对其影响最大的控制网格上的顶点,坐标值设为未知,控制网格上的顶点影响坐标值置为0。通过求解优化下式(5)使得利用新权重的重构样例模型的微分算子与原模型尽可能相等。
式中,inf(vl)表示三维网格模型顶点vl受控制的控制网格顶点集合,n是网格顶点个数。优化问题的未知量是α,共有nk个元素。且公式(5)中还需加上权重性质约束,即网格上每个顶点受控制的k个控制网格顶点的权重之和为1,且每个权重值大于或者等于零。
如果直接求解该优化问题,这将是一个大型的含有等式约束的二次优化问题,求解起来非常耗时。本文通过优化局部求解器进行求解。求解过程中假设:当求解一个网格上顶点受控制的控制网格顶点集合的影响权重值时,该顶点相邻的网格顶点的权重值是固定的。这样公式(5)就转化为一个只含有k个未知量的带约束的二次优化问题。对于求解得到的权重值立即更新到权重矩阵中,进行下一个顶点的权重值的求解过程。当网格上所有顶点的权重值都求出后,将其作为新的输入,迭代求解过程直到迭代次数达到设置值或者精度小于设定值。
稀疏矩阵控制网格(cage)生成:
由于公式(5)中没有显示地约束重构得到的网格模型和原始的网格Mk相同,我们求得的新的权重坐标矩阵Φ′不能保证利用该矩阵重构出来的网格序列有很小的误差,所以有必要利用新求得的权重矩阵重新求解公式(4)中的优化问题。此处需要说明,稀疏矩阵cage生成中的优化求解公式(6)和实矩阵控制网格生成中公式(4)有两方面的不同:一是权重矩阵Φ′,此步使用的是具有局部性的通过基于Poisson方程的简化得到的新权重矩阵,二是第一帧的控制网格C0同样需要通过新的权重矩阵重新求解,也就意味着该控制网格的几何信息发生了相应的变化。
ξSPA(k)=||Φ′Ck-Mk||2+λ||NCk-LCk||2 (6)
控制网格优化:
如果输入的控制网格的顶点个数较少(十几个到几十个),当输入的网格序列姿态变化多样时,控制网格很难有足够的灵活度来表示这些姿态。如果使用这样的控制网格进行动态几何序列的逆向工程的话,一般得到的控制网格序列的形状质量不高,同时重构出来的三维模型序列与原序列相比存在较大的误差。
在考虑如何增加控制网格顶点问题之前,我们先介绍误差的计算公式。本文中使用两种标准进行误差评定,一是平均误差,记为E2,二是最大误差,记为E∞。那么重构网格序列第k帧上顶点i与原网格对应顶点之间的距离计算公式是
式中,dom(i)表示网格顶点i受控制网格顶点控制的索引集合。定义lk是第k帧网格的包围盒的对角线长。误差的计算公式如下:
在控制网格的不同位置增加顶点会有不同的效果,那么如何最大化地减少重构误差?本文采用贪心算法,即在重构误差较大的地方增加控制网格顶点。误差较大的原因是控制网格在此处灵活度不够,不能够准确地拟合此处的网格顶点。通过在误差比较大的地方增加控制网格顶点能增加控制网格在此处的灵活度,进而能够更快地减少误差。利用稀疏矩阵重构步骤得到的控制网格序列SC和权重矩阵Φ′重构出的原网格模型序列表示为P′={P0,P1,…,PF}。假设用户输入能够容忍的最大误差为ε,根据欧氏距离计算公式选出重构误差大于ε的网格顶点,进而选择出其受影响最大的控制网格顶点,之后我们在它们周围添加顶点;具体过程是:首先定义一个网格顶点索引集合pSet,并将其设置为空。针对网格序列中的每一帧Pm,如果第j个顶点的重构误差大于ε,即下式:
将加入pSet={j},遍历重构序列网格上的顶点得到最终的pSet。针对pSet里的每一个元素,根据权重矩阵Φ′选出对应行中最大值的两个值对应的cage顶点,如图2所示,选择的就是长方形框中标记的值所对应的控制网格顶点d和f,放入集合cSet。使用贪心算法,我们得到在周围需要添加顶点的控制网格顶点集合cSet。
针对已经选出了需要在周围添加顶点的控制网格顶点集合,那么如何增加控制网格顶点才能保证既能够减小误差又能够保证较好的控制网格质量呢?本发明算法需要找到需要处理的边并进行细分,详细过程如下:
对于cSet里面的每一个控制网格顶点,我们找出共该点的所有边中最长的边。之后控制网格上所有三角面片被分成了四类,如附图3所示。如果三角面片上没有一条边被标记,那么不对该面进行加点操作;如果三角面上有一条边被标记,那么计算被标记边的中点,与所对的顶点连接增加一条新的边;如果三角面上有两条边被标记,那么分别计算着两条边的中点并连接构成一条新的边,之后连接最长边的中点及所对顶点构成一条新边;如果三角面的三条边都被标记,那么取这三条边的中点并相互连接构成三条新的边。对控制网格上所有面都进行上述操作后就完成了本次的控制网格优化。
本发明算法的上述过程可以归纳为以下六个步骤:
1、利用第一帧计算出均值坐标构成的权重矩阵Φ。
2、对于输入的三维形状序列SM序列中的每一帧Mi,使用添加了Laplacian约束项的能量函数进行优化,得到控制网格C′i。
3、用得到的整个控制网格序列(或者选定其中的z帧)及其对应的控制网格作为学习模型进行学习,最终得到一个适合整个网格序列的简化后的权重矩阵Φ′,其中每个网格的顶点只受k个控制网格顶点影响。
4、用新的权重矩阵Φ′替换步骤2中的权重矩阵,重新求解控制网格序列S′C。
5、验证重构误差是否小于设定阈值ε或者控制网格的顶点个数是否达到设定值,如果是,终止算法,输出得到的控制网格序列;否则,修改第一帧给定控制网格的拓扑结构,得到新的控制网格,转到第一步。
6、输出最终的控制网格序列SC=(C0,C1,…,CF)和稀疏矩阵Φ′。
综上所述,在采用以上方案后,本发明算法不仅能够得到较高质量的控制网格序列,同时重构出来的序列与原序列相比误差非常小,图4和图5是本发明算法的实验效果图,每幅图的第一行是输入的原始网格序列,第二行是输出的控制网格序列,第三行是重构的网格序列。从结果中我们可以看出本发明算法不仅能够得到较好的控制网格序列,而且重构出来的网格序列与原网格序列相比,误差极小。
此外,与现有的方法(CageIK、CageR、SC)相比,本发明算法也突显优势。图6是一个对比例子结果。处理的对象是一个马奔跑的序列,输入的第一帧的控制网格是通过手工制作的。我们将CageIK、CageR、SC和本算法结果放在一块,显示输出的控制网格序列和重构的网格序列。从结果中我们就可以发现本发明算法得到的结果优于三种算法,主要体现在重构误差远小于三种方法。图8中每种方法得到的控制网格序列都不会出现错误的形状,这也说明了之前的算法在处理过约束问题易出现不稳定解的问题上是有效的,但是图中CageIK(第三行)和CageR(第五行)重构结果中存在明显的失真,从结果中的马的尾部和四只马蹄的形状上就可以看出。SC方法(第七行)重构出来的序列与原序列的误差较小,但是在数值上进行误差统计,本发明算法的重构误差还是小于SC算法。
为了更清楚地对比每种方法的实验结果,我们从实验结果中单独拿出几帧进行对比。图7所示CageR(每小格的从左到右第二个图)和CageIK(每小格的从左到右第三个图)得到的在某种程度上都有明显的变形,但是本发明算法得到的结果(每小格的从左到右第四个图)和原始网格(每小格的从左到右第一个图)基本相同,可见,对比结果再一次证明了本文发明算法的有效性。
图8-10是我们给出的三个例子的每种算法的对比结果,分别是图4、图5和图6中例子的误差统计结果。每幅图的横坐标是帧数,纵坐标是重构误差值。在图中左侧的是平均误差,右图是最大误差,参与比较的算法有CageIK、CageR和本文算法EC-cageR。从图中可以看出无论是平均误差还是最大误差,本文算法的误差值都是最低的,而且比两种方法小很多。
以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。
Claims (1)
1.一种动态网格的误差可控CAGE序列表示算法,其特征在于,包括以下步骤:
1)实矩阵控制网格生成
针对给定的三维形状序列SM=(M0,M1,…,MF)和其中一帧对应的控制网格C0,通过逆向工程算法得到三维形状序列对应的控制网格序列SC=(C0,C1,…,CF),其中,问题的数学描述如下式:
Ei=||ΦCi-Mi||2 (1)
式中,Φ表示均值坐标构成的权重矩阵,通过控制网格和它对应的网格模型计算得到;Mi是三维形状序列中第i帧,通过上式(1)求解得到该帧对应的控制网格Ci,对三维形状序列中的每一帧进行同样操作得到控制网格序列SC=(C0,C1,…,CF);
通过添加Laplacian项使得所求控制网格与输入的控制网格有相同的局部细节,即下式:
ξdense(k)=||ΦCk-Mk||2+λ||Tk(Ck)δ-LCk||2 (2)
式中,Tk(Ck)是控制网格Ck的每个顶点的变换矩阵构成的大矩阵,δ是C0的微分坐标组成的矩阵,LCk是Ck每个顶点的微分坐标构成的矩阵;λ是后面一项的权重值,可根据三维形状序列本身运动信息进行调整,运动幅度越大该值设越大;将Tkδ表示成Ck的线性函数,推导过程如下面介绍:
对于第i个顶点的变换矩阵有令所以(s h1h2 h3 tx ty tz)T=(A0 A1 A2 A3 A4 A5 A6)Tbi;那么将变换矩阵中的值分别代入后,变换后的微分坐标表达式推导过程如下:
因为微分坐标具有平移不变性,所以在此处忽略掉平移量,故变换后的微分坐标可以表示为下式:
将所有控制网格顶点变换后的微分坐标写在一起表示为NCk,其中N是3m×3m矩阵,Ck是3m×1的矩阵;最终的能量表达式为:
ξSHP(k)=||ΦCk-Mk||2+λ||NCk-LCk||2 (4)
对于三维形状序列中的每一帧,通过上式(4)得到对应的控制网格,进而得到整个序列的控制网格;
2)基于Poisson方程的权重简化
存在大的重构误差的原因是权重矩阵Φ是通过形状序列中的第一帧M0和对应控制网格C0所得到,且均值坐标是全局影响,即模型上任何一个顶点都要受到所有控制点的影响;当给定的网格Mk较于原网格变形比较大时,实际上使用的权重矩阵Φ已经不能适用于Mk,这必将导致重构出来的网格存在扭曲;基于Poisson方程的权重简化方法提供了一种从多个输入模型中学习新的权重矩阵的方法,能够从输入的多个模型样例中学习到每个网格顶点受控制顶点影响的情况,使得原来的网格顶点受所有控制顶点影响变成只受k个控制顶点的影响;针对网格模型上的每一个顶点,简化方法首先从所有控制顶点中选择k个对其影响最大的控制顶点,同时将顶点影响权重设置为0;接着为了使这k个顶点的影响值满足权重约束,即权重值加起来为1,利用Poisson方程约束新的权重重构出来的样例模型与原模型的微分坐标尽可能相等;最后,对于网格模型上的所有顶点做相同的操作得到新的权重矩阵;简化方法使得新的权重矩阵既满足每个网格顶点只受k个控制顶点的影响又使得重构出来的模型很光滑;
实矩阵控制网格生成输出的是控制网格序列S′C,在此将网格序列和对应的控制网格序列作为简化方法的输入,分别记作E和CE,共F+1个模型例子;对于网格上顶点v,选出k个对其影响最大的控制网格上的顶点,坐标值设为未知,控制网格上的顶点影响坐标值置为0;通过求解下式(5)使得利用新权重的重构样例模型的微分算子与原模型尽可能相等;
式中,inf(vl)表示三维网格模型顶点vl受控制的控制网格顶点集合,n是网格顶点个数;优化问题的未知量是α,共有nk个元素;且上式(5)中还需加上权重性质约束,即网格上每个顶点受控制的k个控制网格顶点的权重之和为1,且每个权重值大于或者等于零;
通过优化局部求解器进行求解;求解过程中假设:当求解一个网格上顶点受控制的控制网格顶点集合的影响权重值时,该顶点相邻的网格顶点的权重值是固定的;这样上式(5)就转化为一个只含有k个未知量的带约束的二次优化问题;对于求解得到的权重值立即更新到权重矩阵中,进行下一个顶点的权重值的求解过程;当网格上所有顶点的权重值都求出后,将其作为新的输入,迭代求解过程直到迭代次数达到设置值或者精度小于设定值;
3)稀疏矩阵控制网格生成
由于上式(5)中没有显示地约束重构得到的网格模型和原始的网格Mk相同,求得的新的权重坐标矩阵Φ′不能保证利用该矩阵重构出来的网格序列有很小的误差,所以有必要利用新求得的权重矩阵重新求解上公式(4)中的优化问题;此处需要说明,稀疏矩阵cage生成中的优化求解公式(6)和实矩阵控制网格生成中公式(4)有两方面的不同:一是权重矩阵Φ′,此步使用的是具有局部性的通过基于Poisson方程简化方法得到的新权重矩阵,二是第一帧的控制网格C0同样需要通过新的权重矩阵重新求解,也就意味着该控制网格的几何信息发生了相应的变化;
ξSPA(k)=||Φ′Ck-Mk||2+λ||NCk-LCk||2 (6)
4)控制网格优化
如果输入的控制网格的顶点个数为十几个到几十个,当输入的网格序列姿态变化多样时,控制网格很难有足够的灵活度来表示这些姿态;如果使用这样的控制网格进行动态几何序列的逆向工程的话,一般得到的控制网格序列的形状质量不高,同时重构出来的三维模型序列与原序列相比存在较大的误差;
在考虑如何增加控制网格顶点问题之前,先介绍误差的计算公式;使用两种标准进行误差评定,一是平均误差,记为E2,二是最大误差,记为E∞;那么重构网格序列第k帧上顶点i与原网格对应顶点之间的距离计算公式是
式中,dom(i)表示网格顶点i受控制网格顶点控制的索引集合;定义lk是第k 帧网格的包围盒的对角线长;误差的计算公式如下:
在控制网格的不同位置增加顶点会有不同的效果,采用贪心算法,即在重构误差较大的地方增加控制网格顶点;误差较大的原因是控制网格在此处灵活度不够,不能够准确地拟合此处的网格顶点;通过在误差比较大的地方增加控制网格顶点能增加控制网格在此处的灵活度,进而能够更快地减少误差;利用稀疏矩阵重构步骤得到的控制网格序列SC和权重矩阵Φ′重构出的原网格模型序列表示为P′={P0,P1,…,PF};假设用户输入能够容忍的最大误差为ε,根据欧氏距离计算公式选出重构误差大于ε的网格顶点,进而选择出其受影响最大的控制网格顶点,之后在它们周围添加顶点;具体过程是:首先定义一个网格顶点索引集合pSet,并将其设置为空;针对网格序列中的每一帧Pm,如果第j个顶点的重构误差大于ε,即下式:
将加入pSet={j},遍历重构序列网格上的顶点得到最终的pSet;针对pSet里的每一个元素,根据权重矩阵Φ′选出对应行中最大值的两个值对应的cage顶点,选择的就是标记的值所对应的控制网格顶点d和f,放入集合cSet;使用贪心算法,得到在周围需要添加顶点的控制网格顶点集合cSet;
针对已经选出了需要在周围添加顶点的控制网格顶点集合,还需要找到需要处理的边并进行细分,详细过程如下:
对于cSet里面的每一个控制网格顶点,找出共该点的所有边中最长的边;之后控制网格上所有三角面片被分成了四类,如果三角面片上没有一条边被标记,那么不对该面进行加点操作;如果三角面上有一条边被标记,那么计算被标记边的中点,与所对的顶点连接增加一条新的边;如果三角面上有两条边被标记,那么分别计算这 两条边的中点并连接构成一条新的边,之后连接最长边的中点及所对顶点构成一条新边;如果三角面的三条边都被标记,那么取这三条边的中点并相互连接构成三条新的边;对控制网格上所有面都进行上述操作后就完成了本次的控制网格优化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510767406.7A CN105427360B (zh) | 2015-11-11 | 2015-11-11 | 一种动态网格的误差可控cage序列表示算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510767406.7A CN105427360B (zh) | 2015-11-11 | 2015-11-11 | 一种动态网格的误差可控cage序列表示算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105427360A CN105427360A (zh) | 2016-03-23 |
CN105427360B true CN105427360B (zh) | 2019-01-18 |
Family
ID=55505539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510767406.7A Expired - Fee Related CN105427360B (zh) | 2015-11-11 | 2015-11-11 | 一种动态网格的误差可控cage序列表示算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105427360B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484511A (zh) * | 2016-09-30 | 2017-03-08 | 华南理工大学 | 一种谱姿态迁移方法 |
CN106683200A (zh) * | 2016-12-06 | 2017-05-17 | 常州锋创智能科技有限公司 | 基于对偶域变换的3d网格模型形状对应方法及*** |
US10346944B2 (en) * | 2017-04-09 | 2019-07-09 | Intel Corporation | Machine learning sparse computation mechanism |
CN107256557B (zh) * | 2017-05-03 | 2020-05-22 | 华南理工大学 | 一种误差可控的细分曲面图像矢量化方法 |
CN111344709A (zh) * | 2017-12-04 | 2020-06-26 | 惠普发展公司,有限责任合伙企业 | 检查网格模型 |
CN113014279B (zh) * | 2021-01-12 | 2022-02-11 | 西安交通大学 | 一种视距通信中具备抗干扰能力的帧检测方法 |
CN116843368B (zh) * | 2023-07-17 | 2024-01-26 | 杭州火奴数据科技有限公司 | 基于arma模型的营销数据处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5929860A (en) * | 1996-01-11 | 1999-07-27 | Microsoft Corporation | Mesh simplification and construction of progressive meshes |
US20080136814A1 (en) * | 2006-09-17 | 2008-06-12 | Chang Woo Chu | System and method for generating 3-d facial model and animation using one video camera |
CN102054296A (zh) * | 2011-01-20 | 2011-05-11 | 西北大学 | 一种局部刚性网格变形方法 |
CN103778654A (zh) * | 2013-12-10 | 2014-05-07 | 深圳先进技术研究院 | 一种三维几何体特征线引导的表面光滑向量场计算方法 |
-
2015
- 2015-11-11 CN CN201510767406.7A patent/CN105427360B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5929860A (en) * | 1996-01-11 | 1999-07-27 | Microsoft Corporation | Mesh simplification and construction of progressive meshes |
US20080136814A1 (en) * | 2006-09-17 | 2008-06-12 | Chang Woo Chu | System and method for generating 3-d facial model and animation using one video camera |
CN102054296A (zh) * | 2011-01-20 | 2011-05-11 | 西北大学 | 一种局部刚性网格变形方法 |
CN103778654A (zh) * | 2013-12-10 | 2014-05-07 | 深圳先进技术研究院 | 一种三维几何体特征线引导的表面光滑向量场计算方法 |
Non-Patent Citations (6)
Title |
---|
CageIK:Dual-Laplacian Cage-Based Inverse Kinematics;Yann Savoye等;《International Conference on Articulated Motion and Deformable Objects》;20101231;第280-289页 |
EC-CageR:Error controllable cage reverse for animated meshes;Huina Lu等;《Computers & Graphics》;20141002;第46卷(第2015期);第138-148页 |
Poisson-Based Weight Reduction of Animated Meshes;Eric Landreneau等;《Computer Graphics Forum》;20100423;第29卷(第6期);第1945-1954页 |
Spectral pose transfer;Mengxiao Yin等;《Computer Aided Geometric Design》;20150525;第35-36卷(第2015期);第82-94页 |
基于控制点误差控制的网格简化算法;朱经纬等;《计算机应用》;20070611;第27卷(第5期);第1150-1152页 |
等距cag生成;李琳等;《计算机辅助设计与图形学学报》;20110615;第23卷(第6期);第956-963页 |
Also Published As
Publication number | Publication date |
---|---|
CN105427360A (zh) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105427360B (zh) | 一种动态网格的误差可控cage序列表示算法 | |
CN110288681B (zh) | 角色模型的蒙皮方法、装置、介质及电子设备 | |
CN104268934B (zh) | 一种由点云直接重建三维曲面的方法 | |
CN109544666B (zh) | 一种全自动的模型变形传播方法和*** | |
CN109949214A (zh) | 一种图像风格迁移方法及*** | |
JP2021012693A (ja) | 機能構造に対するモデリング演算 | |
CN110889893B (zh) | 表达几何细节和复杂拓扑的三维模型表示方法和*** | |
CN111028335B (zh) | 一种基于深度学习的点云数据的分块面片重建方法 | |
CN110516724A (zh) | 可视化作战场景的高性能多层字典学习特征图像处理方法 | |
Shi et al. | Graph-guided deformation for point cloud completion | |
Oxman | Morphogenesis in the theory and methodology of digital tectonics | |
CN108520513A (zh) | 一种三维模型局部变形分量提取方法和*** | |
CN117454495B (zh) | 一种基于建筑草图轮廓序列的cad矢量模型生成方法及装置 | |
CN104463934B (zh) | 一种“质点‑弹簧”***驱动的点集模型动画自动生成方法 | |
CN106407932B (zh) | 基于分数阶微积分与广义逆神经网络的手写数字识别方法 | |
Attar et al. | Embedded rationality: a unified simulation framework for interactive form finding | |
CN112395746B (zh) | 微结构族等效材料性质的计算方法、微结构、***及介质 | |
CN106484511A (zh) | 一种谱姿态迁移方法 | |
CN112308952B (zh) | 模仿给定视频中人物动作的3d角色动作生成***和方法 | |
CN112017267B (zh) | 基于机器学习的流体快速合成方法、装置、***和介质 | |
CN115310209B (zh) | 基于vae的气动形状迁移优化方法及相关装置 | |
Favilli et al. | Geometric deep learning for statics-aware grid shells | |
CN112837420B (zh) | 基于多尺度和折叠结构的兵马俑点云的形状补全方法及*** | |
Ge et al. | Blending isogeometric and Lagrangian elements in three-dimensional analysis | |
Diao et al. | Combating Spurious Correlations in Loose‐fitting Garment Animation Through Joint‐Specific Feature Learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190118 |