图形处理(五)基于旋转不变量的网格变形-Siggraph 2007
一、相關(guān)理論
本篇博文主要講解2007年Siggraph上的一篇經(jīng)典paper:《Linear Rotation-invariant Coordinates for Meshes》,這篇paper如果不考慮計算速度問題,可以說是目前我感覺微分域的保特征網(wǎng)格變形效果最perfect的一個算法了。在我的另外一篇博文《簡單拉普拉斯變形》中講到,如果直接使用拉普拉斯變形算法,那么在大尺度變形的情況下,會出現(xiàn)如下的結(jié)果:
可以看到,本來章魚模型上的圓形特征,經(jīng)過變形后,變?yōu)榱藱E圓形了,這種現(xiàn)象,我們又稱之為不保特征變形,很顯然,這種不符合我們變形的要求,我們的希望是使得變形后,章魚爪子上的圓形特征還是圓形的,這種又稱之為保特征網(wǎng)格變形,因此僅僅使用簡單的拉普拉斯變形是不夠的,我們還需要對這個算法,做個修正,使得變形后的三維模型,更加的自然。
? ? 這個算法給我的印象非常深刻,當(dāng)年剛上研究生,懵懵懂懂,啥也不懂,導(dǎo)師發(fā)了一篇拉普拉斯網(wǎng)格變形的相關(guān)paper(跟我的研究生課題息息相關(guān)),里面涉及到旋轉(zhuǎn)不變量算法,我看了幾天以后,感覺看懂的樣子,很開心,自以為天下無敵了,于是非常興奮的發(fā)了條qq消息告訴導(dǎo)師:老師,文獻(xiàn)的算法我看懂了,我可以開始寫課題的代碼了。自以為自己有畢業(yè)的希望了,于是就開始了我的畢業(yè)課題編程之旅-《三角網(wǎng)格曲面上的特征克隆》,花了3周的時間,把整個過程的代碼,基本完成了,感覺離畢業(yè)不遠(yuǎn)了,可是最后一步涉及到《Linear Rotation-invariant Coordinates for Meshes》這篇paper的算法,死活調(diào)試,我調(diào)試了整整一個月,都沒能把這篇paper的結(jié)果實現(xiàn)出來,徹底失去了信心,感覺要畢不了業(yè)的節(jié)奏。還好最后導(dǎo)師安慰我,讓我休息一段時間,好好看看文獻(xiàn),不要著急………過后我才冷靜下來,慢慢的思考自己實現(xiàn)的算法到底錯在哪了,最后終于……
開始算法講解前,我們先回顧一下微分域變形的相關(guān)研究:由于拉普拉斯坐標(biāo)對方向敏感,因此會出現(xiàn)上面所看到的圓形特征變成了橢圓形特征,因此需要提前估算變形后各頂點拉普拉斯坐標(biāo)的方向,本節(jié)將介紹如何估算變形后的拉普拉斯坐標(biāo)。如果已知網(wǎng)格模型的變形結(jié)果,求取變形后的拉普拉斯坐標(biāo),是一件非常簡單的事;然而我們的目標(biāo)是通過未知方向的拉普拉斯坐標(biāo)去求取變形后的網(wǎng)格模型,這就相當(dāng)于一個“雞與雞蛋的先后誕生”的問題。因此基于微分域的保特征網(wǎng)格變形的難點在于如何更好的逼近未知的拉普拉斯坐標(biāo),許多研究工作集中于如何更好地逼近未知的微分坐標(biāo),特別是處理微分坐標(biāo)的旋轉(zhuǎn)問題。
? ? 本文將講解LIPMAN等提出的旋轉(zhuǎn)不變量方法:《Linear Rotation-invariant Coordinates for Meshes》,該方法能夠較精確求解旋轉(zhuǎn)后的拉普拉斯坐標(biāo),主要是通過求解一個稀疏線性系統(tǒng)來確定變形后的拉票拉斯坐標(biāo)Δ'。其思想與拉普拉斯網(wǎng)格重構(gòu)類似,首先在網(wǎng)格的每個頂點處建立一個局部坐標(biāo)系F;其次把每個頂點的拉普拉斯坐標(biāo)δ表示成局部坐標(biāo)系F下的相對拉普拉斯坐標(biāo)δI;然后求解變換后的局部坐標(biāo)系F',最后通過δI、F'求取δ'。
二、算法流程
1 、局部標(biāo)架定義及其性質(zhì)
(1)局部標(biāo)架定義
對于給定的三角網(wǎng)格模型M,定義頂點vi處的局部標(biāo)架Fi=(ei1,ei2,ni)T,ei1、ei2、ni為滿足右手法則的一組歸一化正交基,如圖。
(2)局部標(biāo)架性質(zhì)
由局部標(biāo)架的定義可知,對于任意一個局部標(biāo)架,其相當(dāng)于三維線性空間的一組歸一化正交基,因此其具有以下性質(zhì):
①對于3維線性空間中的任意一個向量α,可由局部標(biāo)架線性表示為:
②對于3維線性空間中的兩組局部標(biāo)架Fi、Fj,必存在一個過渡矩陣Tij,滿足
式中,T為3×3的矩陣。上式相當(dāng)于三維線性空間中,兩組基的相互轉(zhuǎn)化公式。
2?旋轉(zhuǎn)不變量定義
由定義可知每個頂點的局部標(biāo)架可用一個3×3的矩陣F表示。設(shè)Fi=(ei1,ei2,ni),Fj=(ei1,ei2,ni),且vj為頂點vi的鄰接頂點,如圖所示。
由局部標(biāo)架性質(zhì)可知,對于三維空間中的兩個鄰接頂點的局部標(biāo)架Fi、Fj必存在相對變換Tij,使其滿足:
其中,Tij為3×3的系數(shù)矩陣。由公式1可求得相對變換矩陣
當(dāng)世界坐標(biāo)系發(fā)生旋轉(zhuǎn)變換時,Fi、Fj也發(fā)生相同的旋轉(zhuǎn)變換,然而其相對標(biāo)架Tij不會發(fā)生變化,故稱Tij為Fi和Fj間的旋轉(zhuǎn)不變量,Tij是兩個局部標(biāo)架間的內(nèi)在屬性。基于旋轉(zhuǎn)不變量的拉普拉斯網(wǎng)格變形其實質(zhì)就是保證網(wǎng)格變形前后,兩相鄰頂點之間的局部標(biāo)架變換矩陣T不變。
3?變形后局部標(biāo)架求取
對于給定的原網(wǎng)格模型,根據(jù)定義可以為每個網(wǎng)格定點建立局部標(biāo)架F,然后求得每一條邊之間的旋轉(zhuǎn)不變量T,也就是說T是已知量。我們的目標(biāo)是求取變形后每個頂點的局部標(biāo)架F',用旋轉(zhuǎn)不變量方法求解F'與拉普拉斯變形方法求解變形后的頂點V'類似,其歸結(jié)為求解如下的最小優(yōu)化問題:
式中??m?——方向約束頂點的個數(shù)
??????ak?——權(quán)值系數(shù)
??????Rk?——3×3方向約束矩陣
解(3)中的最小值問題,就相當(dāng)于求解下面的超靜定線性系統(tǒng):
方程組分為旋轉(zhuǎn)不變量方程組、約束方程組:
由于未知變量F'是3×3的矩陣,每個含有9個未知元素,在求解方程組過程中應(yīng)采用矩陣分塊的思想,每個塊包含一個3×3的子矩陣,求取方程組的系數(shù)矩陣。因此公式中,H是一個包含3m×3n階矩陣,H的每一行只有一個非零元素,其值為對應(yīng)頂點的約束權(quán)值。R為3m×3階矩陣,每個3×3的塊矩陣代表每一個約束頂點的方向約束。未知數(shù)是的矩陣,其第3i至第3i+2行組成的3×3的矩陣即為網(wǎng)格頂點的局部標(biāo)架F'i,這樣求解該線性系統(tǒng),可獲得F'。
公式1方程具體可寫為:
其中E為網(wǎng)格模型的邊的集合,對于網(wǎng)格模型的每一條邊,可以列出公式1,若網(wǎng)格模型有n條邊,則可以獲得n個旋轉(zhuǎn)不變方程組成的方程組。然而該方程組系數(shù)矩陣的秩小于未知元素的個數(shù),故需要約束方程(2)方程組才有唯一的解。
4、?基于旋轉(zhuǎn)不變量的拉普拉斯網(wǎng)格變形
本節(jié)將重點介紹如何把旋轉(zhuǎn)不變量與拉普拉斯網(wǎng)格變形相結(jié)合,實現(xiàn)保特征的網(wǎng)格變形。由于拉普拉斯坐標(biāo)對旋轉(zhuǎn)敏感,我們的目的是通過旋轉(zhuǎn)不變量的方法,來修正拉普拉斯坐標(biāo)的方向。具體變形框架可歸結(jié)為:首先由公式2可以估算出網(wǎng)格模型每個頂點變形前后的局部旋轉(zhuǎn)變換矩陣;由每個頂點的局部旋轉(zhuǎn)變換矩陣,可以求得每個頂點的變形后的拉普拉斯坐標(biāo);然后由公式1重構(gòu)網(wǎng)格模型。
基于旋轉(zhuǎn)不變量的拉普拉斯網(wǎng)格變形框架:
(1)建立原網(wǎng)格每個頂點的局部標(biāo)架F、并求取源網(wǎng)格模型的拉普拉斯坐標(biāo)δ,如圖1所示;
①采用頂點vi的鄰接三角面片法矢,進(jìn)行面積加權(quán),計算得頂點vi的法矢n(xn,yn,zn);
②以垂直于n的向量(yin,-xin,0)作為e1;
③在笛卡爾坐標(biāo)系下e2=n×e1;
④建立vi點的局部標(biāo)架為:
④求取源網(wǎng)格模型個頂點的拉普拉斯坐標(biāo)δ;
建立局部標(biāo)架
(2)全局坐標(biāo)δ轉(zhuǎn)換成局部坐標(biāo)δI;
本步驟的目的是把世界坐標(biāo)系下的拉普拉斯坐標(biāo)轉(zhuǎn)換成局部標(biāo)架下的相對坐標(biāo)δI;由局部標(biāo)架的性質(zhì)1,必有
則可得轉(zhuǎn)換公式:
(3)求解變換后的局部標(biāo)架F';
由旋轉(zhuǎn)不變量的定義,根據(jù)(1)中為每個頂點建立的局部標(biāo)架及公式(3),可得網(wǎng)格曲面每條邊的兩個鄰接頂點之間的旋轉(zhuǎn)不變量:
然后根據(jù)公式()可求得每個頂點變換后的局部標(biāo)架F'。
(4)局部坐標(biāo)δI轉(zhuǎn)換成全局坐標(biāo)δ';
通過步驟(2)(3)求得的δI、F',求取變換后的拉普拉斯坐標(biāo)δ'。具體轉(zhuǎn)換公式如下:
三、?實驗結(jié)果
?
示例 1
示例 2
示例 3
具體的相關(guān)實驗結(jié)果,我是結(jié)合在了網(wǎng)格融合的算法中,可以參考我的另外一篇博文:《拖拽式網(wǎng)格模型融合》,實現(xiàn)這個功能,就需要用到這篇paper的算法。
參考文獻(xiàn):
1、《網(wǎng)格變形綜述》
2、《Linear Rotation-invariant Coordinates for Meshes》
3、《As-Rigid-As-Possible Surface Modeling》
4、《laplacian framework for interacitve mesh editing》
5、《Laplacian Surface Editing》
**********************作者:hjimce ? 時間:2015.6.18 ?聯(lián)系QQ:1393852684 ? 地址:http://blog.csdn.net/hjimce? ?原創(chuàng)文章,版權(quán)所有,轉(zhuǎn)載請保留本行信息********************
總結(jié)
以上是生活随笔為你收集整理的图形处理(五)基于旋转不变量的网格变形-Siggraph 2007的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图形处理(四)基于梯度场的网格编辑-Si
- 下一篇: 图形处理(六)拖拽式网格融合-Siggr