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