陸友太,周來水,李運平,王志國
(1.南京航空航天大學(xué)江蘇省精密與微細制造技術(shù)重點實驗室,江蘇 南京210016;2.中國電子科技集團公司第二十八研究所,江蘇南京210007)
三維模型的變形在幾何建模和計算機動畫中占有重要地位,并得到了廣泛應(yīng)用.總體來說,變形方法主要有幾何變形和基于物理的變形這兩種,其中使用比較多的是幾何變形方法.目前應(yīng)用比較廣泛的幾何變形方法是由T.W.Sederberg提出的自由變形(free-form deformation,F(xiàn)FD)方法[1],該方法被用于幾何造型、計算機動畫等領(lǐng)域.FFD方法是一種強有力的造型技術(shù),具體操作很直觀,但需要進行嵌入坐標換算,而且該方法不易進行變形控制,變形難以精確地達到預(yù)期結(jié)果.骨架驅(qū)動的網(wǎng)格變形方法作為一種重要的自由變形手段,最早由N.Magnenat-Thalmann等[2]提出,其主要思想是將三維網(wǎng)格的變形與人體的運動相類比,將網(wǎng)格表面的點(皮膚)關(guān)聯(lián)到骨架結(jié)構(gòu),網(wǎng)格變形由骨架的運動來帶動.該方法操作簡單直觀,適合運動變形的應(yīng)用,且一次建立的骨架模型能被反復(fù)使用,因此被廣泛應(yīng)用于人體動畫、游戲等領(lǐng)域[3].骨架驅(qū)動變形技術(shù)的本質(zhì)是通過編輯幾何模型的骨架來帶動幾何模型產(chǎn)生形變.該變形方法大致可分為3類:基于仿生學(xué)的方法、基于物理的方法和基于幾何的方法.總體而言,骨架驅(qū)動的網(wǎng)格變形方法已經(jīng)取得了許多極有理論和應(yīng)用價值的成果[4-11],各種方法都有其各自的特點,但尋求更為直觀、高效的骨架驅(qū)動的網(wǎng)格變形方法,仍是值得研究的重要方向.
文中擬將仿射變換思想和廣義元球變形方法[12]運用于骨架驅(qū)動變形技術(shù),提出一種基于骨架驅(qū)動的網(wǎng)格模型變形新方法.給出帶勢函數(shù)的變形模型,通過興趣區(qū)域網(wǎng)格頂點與骨架模型之間的映射關(guān)系,實現(xiàn)網(wǎng)格模型的旋轉(zhuǎn)、平移、縮放變形.這3種變形可以各自獨立進行,也可以相互復(fù)合以得到用戶所需要的變形效果.并且針對對平移變形中出現(xiàn)的失真問題,運用旋轉(zhuǎn)修正方式進行修正.
首先在網(wǎng)格模型上交互選取變形區(qū)域,稱為興趣區(qū)域,并創(chuàng)建興趣區(qū)域的骨架模型;進而建立興趣區(qū)域的網(wǎng)格模型頂點與骨架自然坐標之間的映射;然后,根據(jù)需要選擇相應(yīng)的帶勢函數(shù)的變形模型(旋轉(zhuǎn)、平移或縮放),并給出變形目標(旋轉(zhuǎn)軸和旋轉(zhuǎn)角度、平移的目標點或偏移量、縮放比例等);最后根據(jù)興趣區(qū)域網(wǎng)格頂點與骨架的對應(yīng)關(guān)系,計算出網(wǎng)格頂點變形后的新位置,得到變形結(jié)果.圖1以平移變形為例顯示了本文方法的基本變形過程.
圖1 本文方法的變形過程
文中給出了2種確定興趣區(qū)域的方法.一種方法是在網(wǎng)格上選取2個頂點,對第1個頂點的鄰接頂點進行廣度優(yōu)先搜索,直到遇到第2個頂點,則包含這些遍歷過的頂點的網(wǎng)格區(qū)域就是興趣區(qū)域.此外,針對比較簡單的網(wǎng)格模型,文中提供了一種簡單、直觀的選取方式,即允許用戶通過鼠標直接在屏幕上畫一個矩形(或任意封閉曲線、多邊形均可)進行選取,矩形框住的區(qū)域就是興趣區(qū)域.
針對選定的興趣區(qū)域,文中采用S.Capell等[4]提出的光線求交法來獲取其對應(yīng)的骨架.通過鼠標點擊屏幕處作為垂直于屏幕的光線的入射點,以光線與網(wǎng)格模型交點S1,S2所構(gòu)成線段的中點S作為骨架的關(guān)節(jié)點,若光線與網(wǎng)格模型只有一個交點,那么就以該點作為關(guān)節(jié)點,這樣鼠標每點擊一次都會產(chǎn)生一個關(guān)節(jié)點.
根據(jù)興趣區(qū)域網(wǎng)格模型的形狀(如圖1a所示,馬的左后腿為選定的興趣區(qū)域),先通過調(diào)整網(wǎng)格模型的姿態(tài),使興趣區(qū)域網(wǎng)格模型的中軸方向大致與屏幕平面平行(如圖1b所示);然后根據(jù)興趣區(qū)域網(wǎng)格模型的形狀,沿其大致的中軸方向依次創(chuàng)建骨架關(guān)節(jié)點(如圖1b所示,自下而上依次創(chuàng)建了4個骨架關(guān)節(jié)點),依次連接這些關(guān)節(jié)點,即可獲得興趣區(qū)域網(wǎng)格模型所對應(yīng)的骨架模型.將開始和最后產(chǎn)生的關(guān)節(jié)點看作骨架的兩個端點,各關(guān)節(jié)點之間的連接線稱為骨架線.圖2所示為采用光線求交法得到Horse的骨架模型.
圖2 光線求交法生成骨架模型
興趣區(qū)域骨架模型建立后,需建立興趣區(qū)域網(wǎng)格模型頂點與骨架自然坐標之間的映射,且該映射關(guān)系在變形過程中保持不變.具體計算過程如下:
1)將興趣區(qū)域的網(wǎng)格頂點垂直映射到骨架線上,如圖3所示,骨架線上的點Si即為網(wǎng)格頂點pi相對應(yīng)的映射點.骨架線兩端的兩條線段可以看作方向分別指向骨架端點的兩條射線.映射后,沿著骨架線的方向分別與兩個端點距離最大的兩個映射點記作起始映射點和終映射點,沿骨架線計算所有映射點與起始映射點的距離.
圖3 網(wǎng)格頂點與骨架模型的映射
2)建立興趣區(qū)域中網(wǎng)格頂點所關(guān)聯(lián)的映射點的局部坐標系.如圖3所示,映射點Si處的局部坐標系記為(ai,bi,ci),起始映射點的坐標軸 ai為由該點指向下一個映射點的單位向量,終映射點的坐標軸ai為上一個映射點指向該點的單位向量,中間映射點的坐標軸ai為前一個映射點指向該點的單位向量和該點指向下一個映射點的單位向量相加并歸一化所得到的單位向量;坐標軸bi為該點指向其對應(yīng)的網(wǎng)格點的單位向量;ci是與ai和bi垂直的單位向量.對(ai,bi,ci)進行 Schmit正交化后形成一個右手直角坐標系.對興趣區(qū)域上的每個網(wǎng)格頂點都分別用其映射點的局部坐標系進行標示.
文中將變形模型定義為帶勢函數(shù)的仿射變換,即以起始映射點為約束源,沿骨架線從起始映射點到終映射點的距離R為約束半徑,以仿射變換矩陣為變形矩陣(旋轉(zhuǎn)、平移、縮放),然后根據(jù)骨架上各映射點到約束源的距離來確定各點處的變形權(quán)值進行變形.
式中:r為骨架上的映射點與約束源ˉS沿骨架線的距離;R為約束的有效半徑;f(r,R)為相對于ˉS的勢函數(shù).對于任意映射點Si,利用式(1)均可以計算出其場值fi(r,R),作為該點處變形的權(quán)值.
2.4.1 旋轉(zhuǎn)變形
要表示物體的旋轉(zhuǎn),可以采用歐拉變換,但采用歐拉變換可能會帶來萬向節(jié)死鎖的問題,因此文中采用了四元數(shù)法.假設(shè)要讓空間點p=(x,y,z)T繞單位軸 u旋轉(zhuǎn) θ角度,則有單位四元數(shù) q=,旋轉(zhuǎn)矩陣為
式中:p'為p經(jīng)旋轉(zhuǎn)變形后的新頂點;fp(r,R)為約束源ˉS在點p對應(yīng)的映射點Sp處的變形權(quán)值.
若要讓興趣區(qū)域的網(wǎng)格模型對任意旋轉(zhuǎn)軸做旋轉(zhuǎn)變形,文中的方法是先在終映射點處建立一個局部坐標系,然后將興趣區(qū)域網(wǎng)格模型變換到該局部坐標系中進行旋轉(zhuǎn)變換,最后再將局部坐標系變換回全局坐標系,得到旋轉(zhuǎn)變形結(jié)果.
2.4.2 平移變形
假設(shè)p是興趣區(qū)域網(wǎng)格模型上的點,其對應(yīng)的映射點為 Sp,d=(dx,dy,dz)T是變形目標 ˉS'相對于約束源ˉS的最大偏移量,fp(r,R)是約束源ˉS在點Sp處的變形權(quán)值.則點p變形后的新頂點p'的坐標為
事實上,此平移變形只是相當(dāng)于對點Sp處的局部坐標系進行了平移,這就使得變形前垂直于骨架線的橫截面經(jīng)平移變換后不再保持垂直關(guān)系,如圖4a,4c所示,因此需要對變形結(jié)果進行修正.文中采用旋轉(zhuǎn)修正的方法對變形結(jié)果進行修正,具體思路如下:對應(yīng)于變形前Sp處的局部坐標系的坐標軸ap,變形后S'p處相應(yīng)的坐標軸a'p仍用2.3節(jié)中的方式進行定義,記ap與a'p間的夾角為βp,如圖4a所示.若點p在局部坐標系下的坐標為Pl=(xl,yl,zl)T,則在平移變形后需對其在原局部坐標系下繞單位軸旋轉(zhuǎn) β 角度.圖 4c,4d 給p出了修正前后的變形效果對比,可以看出,經(jīng)修正后的變形更符合真實的變形效果.
圖4 平移變形修正前后的效果對比
2.4.3 縮放變形
縮放變形是比較簡單的變形方式,可以在全局坐標系下進行,也可以先在局部坐標系下進行縮放變形,然后再變換回全局坐標系.前者更適合大變形的情形,而文中則采用后面一種方式進行縮放變形.
假設(shè)在約束源處的最大縮放比例為s=(sx,sy,sz)T,則有縮放變換矩陣為
對任意點p=(x,y,z)T的縮放變形公式為
式中:p'為p經(jīng)縮放變形后的新頂點;fp(r,R)為約束源ˉS在點p對應(yīng)的映射點Sp處的變形權(quán)值.
若要對興趣區(qū)域的網(wǎng)格模型做縮放變形,則類似旋轉(zhuǎn)變形先在終映射點處建立一個局部坐標系,將興趣區(qū)域網(wǎng)格模型變換到該局部坐標系中進行縮放變換,最后再將局部坐標系變換回全局坐標系,得到縮放變形結(jié)果.
前面分別討論了針對旋轉(zhuǎn)、平移和縮放變形的計算.這3種變形可以各自獨立進行,也可以相互復(fù)合以得到用戶所需要的變形效果.
在VC++6.0開發(fā)環(huán)境下,在CPU為Pentium Dual_Core 2.2 GHz,RAM為2 GB的PC機上實現(xiàn)了文中算法.通過交互選取興趣區(qū)域,實現(xiàn)網(wǎng)格模型整體和局部的變形.試驗表明,當(dāng)模型的三角片數(shù)目在10萬個以下時,系統(tǒng)基本上能達到實時的效果.
圖5所示是對Homer模型腿部進行的平移變形結(jié)果,其中圖5a為初始網(wǎng)格模型,圖5b顯示了向后抬起右腿的效果,圖5c所示為邁步行走的效果.
圖5 Homer模型變形結(jié)果
圖6顯示了對兔子模型左耳的變形結(jié)果,選取兔子左耳作為興趣區(qū)域,并建立相應(yīng)骨架模型,分別進行了平移(圖6b)和旋轉(zhuǎn)變形(圖6c,6d),得到了左耳拉伸、彎曲和扭曲的結(jié)果,其中圖6d的旋轉(zhuǎn)軸定義為沿骨架線方向不斷變化的單位向量.
圖7顯示了局部縮放的變形效果,對螺絲刀的刀頭部分進行了縮小、手柄部分進行了放大.
圖8所示是將一個手模型的大拇指和食指進行彎曲變形的結(jié)果,在變形操作過程中,為了使變形效果更加逼真,實際上對手指的各指節(jié)采用了不同的旋轉(zhuǎn)角度,圖8b是對初始模型做多次旋轉(zhuǎn)變形而得到的結(jié)果.
圖6 兔子模型局部變形結(jié)果
圖7 對螺絲刀模型的縮放變形結(jié)果
圖8 對手模型的變形結(jié)果
文中提出了一種基于骨架驅(qū)動的網(wǎng)格模型變形新方法,可方便地實現(xiàn)網(wǎng)格模型的旋轉(zhuǎn)、平移、縮放變形.試驗結(jié)果表明,利用本文方法進行變形能夠很好地避免經(jīng)典變形方法在非變形區(qū)產(chǎn)生的扭曲現(xiàn)象,并且能夠較好地保持變形區(qū)域網(wǎng)格模型的局部特征.
在文中方法中,骨架是由各關(guān)節(jié)點依次用直線段連接產(chǎn)生的,也可以根據(jù)不同形狀的興趣區(qū)域用不同的曲線擬合產(chǎn)生,從而使變形結(jié)果更加精確;此外,本變形方法是以網(wǎng)格模型的骨架來帶動網(wǎng)格模型變形,在后續(xù)的研究工作中,將嘗試把變形模型直接作用到網(wǎng)格模型上,而無需建立網(wǎng)格模型的骨架,進一步研究網(wǎng)格模型的直接約束變形.
References)
[1]Sederberg T W,Parry S R.Free-form deformation of solid geometric models[J].Computer Graphics,1986,20(4):151-160.
[2]Magnenat-Thalmann N,Laperrière R,Thalmann D.Joint-dependent local deformations for hand animation and object grasping[C]∥Proceedings of Graphics Interface'88.Canada:Edmonton,1988:26-33.
[3]胡事民,楊永亮,來煜坤.數(shù)字幾何處理研究進展[J].計算機學(xué)報,2009,32(8):1451-1469.Hu Shimin,Yang Yongliang,Lai Yukun.Research progress of digital geometry processing[J].Chinese Journal of Computers,2009,32(8):1451-1469.(in Chinese)
[4]Capell S,Green S,Curless B,et al.Interactive skeleton-driven dynamic deformations[J].ACM Transactions on Graphics,2002,21(3):586-593.
[5]Yan Hanbing,Hu Shimin,Martin Ralph R,et al.Shape deformation using a skeleton to drive simplex transformations[J].IEEE Transactions on Visualization and Computer Graphics,2008,14(3):693-706.
[6]許秋兒,譚光華,張三元,等.保持幾何特征的均值骨架子空間網(wǎng)格變形[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2009,21(3):289-294.Xu Qiuer,Tan Guanghua,Zhang Sanyuan,et al.Lo-cality preserving mesh deformation based on mean-value skeleton subspace[J].Journal of Computer-Aided Design&Computer Graphics,2009,21(3):289-294.(in Chinese)
[7]Wang Zhiguo,Wang Xiaoping,Bao Yidong,et al.Shape modification by beam model in FEM[J].Chinese Journal of Aeronautics,2010,23(2):246-251.
[8]許秋兒,歐陽毅,張三元,等.基于均值骨架的網(wǎng)格變形復(fù)制[J].浙江大學(xué)學(xué)報:工學(xué)版,2010,44(4):710-714.Xu Qiuer,Ouyang Yi,Zhang Sanyuan,et al.Mesh deformation transfer based on mean-value skeleton[J].Journal of Zhejiang University:Engineering Science,2010,44(4):710-714.(in Chinese)
[9]董洪偉.網(wǎng)格變形綜述[J].中國圖象圖形學(xué)報,2011,16(12):2095-2104.Dong Hongwei.Survey of mesh deformation [J].Journal of Image and Graphics,2011,16(12):2095-2104.(in Chinese)
[10]李運平,周來水,王 琳,等.剛架模型驅(qū)動網(wǎng)格曲面保特征變形[J].南京航空航天大學(xué)學(xué)報,2012,44(4):526-531.Li Yunping,Zhou Laishui,Wang Lin,et al.Preserving form feature in mesh surface deformation via rigid frame[J].Journal of Nanjing University of Aeronautics&Astronautics,2012,44(4):526-531.(in Chinese)
[11]韓 麗,齊曉明.骨架驅(qū)動的三維模型變形方法[J].計算機工程與設(shè)計,2012,33(3):1051-1056.Han Li,Qi Xiaoming.Multi-skeleton-node driven local deformation method for 3D mesh model[J].Computer Engineering and Design,2012,33(3):1051-1056.(in Chinese)
[12]Jin Xiaogang,Li Youfu,Peng Qunsheng.General constrained deformations based on generalized meatballs[J].Computer&Graphics,2000,24(2):219-231.