童立靖,李 錦,賴裕平,付孝琴
(北方工業(yè)大學(xué)信息學(xué)院 北京 100144)
人體模型蒙皮和骨骼動(dòng)畫是角色動(dòng)畫的關(guān)鍵技術(shù)。高質(zhì)量的人體蒙皮算法對(duì)于計(jì)算機(jī)游戲中的人物動(dòng)作模擬,以及基于交互的虛擬人仿真質(zhì)量都是至關(guān)重要的[1]。在動(dòng)態(tài)人體模型的蒙皮計(jì)算過程中,需要計(jì)算諸如手、手臂、腰、腿等局部網(wǎng)格的形變,而人體局部網(wǎng)格形變的關(guān)鍵主要在于骨骼權(quán)重的計(jì)算與蒙皮算法的選擇。
目前常用的蒙皮算法是線性混合蒙皮算法(linear blend skinning,LBS)[2],即將皮膚看成一個(gè)整體網(wǎng)格,每個(gè)皮膚點(diǎn)由相鄰的多塊骨骼控制,通過設(shè)置骨骼權(quán)重來決定其對(duì)該皮膚點(diǎn)的影響效果。然而,該算法在模型旋轉(zhuǎn)時(shí)會(huì)出現(xiàn)塌陷、“裹糖紙”等變形的質(zhì)量問題。近幾年來,許多研究者對(duì)線性混合蒙皮進(jìn)行了一定的改進(jìn)。LE和 HODGINS[3]提出了一種新的蒙皮算法[3],提前計(jì)算網(wǎng)格中點(diǎn)的旋轉(zhuǎn)中心,提高了模型形變質(zhì)量,但該方法容易導(dǎo)致2個(gè)人體局部模型的自相交??赂H托芷絒4]提出了一種面向球面混合蒙皮(spherical blend skinning,SBS)算法的網(wǎng)格變形權(quán)重分配算法,但該方法在計(jì)算旋轉(zhuǎn)中心時(shí)需要用到奇異值分解[5],增加了計(jì)算的復(fù)雜度。JACOBSON等[6]提出了有平滑直觀形變的線性混合權(quán)重,但該方法只將計(jì)算好的權(quán)重運(yùn)用到了線性混合蒙皮中。YANG等[7]提出了一種實(shí)時(shí)運(yùn)動(dòng)狀態(tài)下的全身皮膚變形方法,將蒙皮劃分為剛性區(qū)域和柔性區(qū)域,但該方法忽略了骨骼權(quán)重值的計(jì)算。KAVAN等[8]提出了雙四元數(shù)混合蒙皮(dual quaternions skinning,DQS)算法,但其關(guān)節(jié)點(diǎn)的權(quán)重需要預(yù)先設(shè)定。XIAN等[9]提出了一種在封閉域內(nèi)計(jì)算高質(zhì)量權(quán)重的方法,但該方法只能用于二維圖像的變形。陳小滿[10]提出了一種骨骼包圍盒的思想,對(duì)皮膚頂點(diǎn)權(quán)重進(jìn)行計(jì)算,但該方法計(jì)算的權(quán)重值不夠精確。何青[11]提出了熱平衡法計(jì)算權(quán)重,但該方法對(duì)模型的精度要求較高,穩(wěn)定性差。
本文主要通過有界雙調(diào)和方程進(jìn)行三維人體局部模型控制單元的權(quán)重值計(jì)算,并基于計(jì)算所得的權(quán)重值對(duì)各網(wǎng)格端點(diǎn)在雙四元數(shù)空間進(jìn)行依賴于各控制單元的混合蒙皮計(jì)算,從而完成三維模型網(wǎng)格的高質(zhì)量平滑變形:首先設(shè)置模型中的控制單元,控制單元設(shè)置在模型的骨骼上,然后計(jì)算每一個(gè)骨骼控制單元的邊界值,接著計(jì)算各骨骼控制單元對(duì)各網(wǎng)格單元頂點(diǎn)的有界雙調(diào)和權(quán)重值,最后使用雙四元數(shù)混合蒙皮驅(qū)動(dòng)三維人體局部模型運(yùn)動(dòng)。實(shí)驗(yàn)證明,該算法能夠很好地解決三維人體局部模型運(yùn)動(dòng)中產(chǎn)生的變形問題。
本文的三維局部人體網(wǎng)格變形方法主要分為3個(gè)步驟:①預(yù)處理,主要完成模型的四面體化和設(shè)置骨骼控制單元;②權(quán)重計(jì)算,主要完成有界雙調(diào)和方程的邊界計(jì)算與各骨骼控制單元的權(quán)重計(jì)算;③雙四元數(shù)蒙皮,主要是根據(jù)計(jì)算出的有界雙調(diào)和權(quán)重,基于雙四元數(shù)的混合計(jì)算,通過骨骼控制單元對(duì)模型中的網(wǎng)格進(jìn)行控制,實(shí)現(xiàn)三維人體局部模型在運(yùn)動(dòng)過程中的平滑變形。本文方法的總體處理流程如圖1所示。
圖1 平滑網(wǎng)格形變總體處理流程
權(quán)重的計(jì)算質(zhì)量是決定后續(xù)混合蒙皮效果的重要因素,如想要三維幾何模型發(fā)生自然、高質(zhì)量的形變,蒙皮權(quán)重的計(jì)算必須合適、準(zhǔn)確。本文針對(duì)三維人體局部模型給出了一種基于有界雙調(diào)和權(quán)的權(quán)重計(jì)算方法。該方法結(jié)合后續(xù)的雙四元數(shù)混合蒙皮可以取得較好的模型網(wǎng)格形變效果。
四面體是三維封閉空間的基礎(chǔ)單位,任何三維封閉空間均可分割為多個(gè)四面體。四面體是三維連續(xù)空間的離散表達(dá),本文首先基于 TetGen方法[12]對(duì)人體局部網(wǎng)格模型的幾何結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu)進(jìn)行四面體分割,將模型分割成有限數(shù)量的四面體,并創(chuàng)建不同的離散化區(qū)域。設(shè)四面體化后的所有頂點(diǎn)的集合為,這些頂點(diǎn)將被用于2.2節(jié)骨骼控制單元的求解,以及2.3節(jié)中對(duì)有界雙調(diào)和權(quán)的拉普拉斯能量和最小化的離散化求解。
為了提高變形效果,本文創(chuàng)建了不同粒度的四面體網(wǎng)格,模型表面附近的四面體網(wǎng)格的分割要比模型內(nèi)部的四面體網(wǎng)格的分割更加精細(xì)。較大粒度的模型內(nèi)部四面體的分割,會(huì)帶來計(jì)算效率的提升;而較小粒度的模型表面四面體分割會(huì)帶來更為精細(xì)的形變控制效果。
圖2(a)為具有8 311個(gè)頂點(diǎn)的某手臂模型,在四面體化后可以得到具有 23 453個(gè)頂點(diǎn)的四面體網(wǎng)格,四面體化后的模型效果如圖2(b)所示,模型的局部分割細(xì)節(jié)如圖2(c)所示。
圖2 某手臂模型的分割結(jié)果
傳統(tǒng)的控制單元是通過關(guān)鍵點(diǎn)去控制附近的網(wǎng)格形變,比較適合于簡(jiǎn)單模型,對(duì)于復(fù)雜模型的形變會(huì)產(chǎn)生不自然的結(jié)果。圖3為某手臂模型基于關(guān)鍵點(diǎn)與基于骨骼控制單元的模型形變對(duì)比情況,圖3(a)為手臂模型的原始狀態(tài),圖3(b)為基于關(guān)鍵點(diǎn)控制的模型形變效果。由圖3(b)可見,在模型肘部出現(xiàn)了較大的形變失真情況。為了得到較為自然、逼真的模型形變效果,本文使用基于骨骼控制單元的模型形變方法,如圖3(c)所示。
定義關(guān)節(jié)點(diǎn)集合為S={s1,···,si,sj,···,sh},其中,si與sj為某段骨骼兩端的關(guān)節(jié)點(diǎn),各關(guān)節(jié)節(jié)點(diǎn)間的連接關(guān)系可用h×h大小的矩陣表示。令骨骼半徑為Δr,對(duì)于人體局部模型在2.1節(jié)四面體化后的所有頂點(diǎn)的集合V={v1,···,vk,···,vn},可將滿足式(1)的網(wǎng)格頂點(diǎn)作為模型運(yùn)動(dòng)的骨骼控制單元,并且跟隨所在骨骼的父關(guān)節(jié)運(yùn)動(dòng)而運(yùn)動(dòng)。兩端關(guān)節(jié)中間的骨骼控制單元與 2.3節(jié)計(jì)算得到的有界雙調(diào)和權(quán)重相結(jié)合,可以使模型的變形更加逼真,效果如圖3(c)所示。
圖3 基于關(guān)鍵點(diǎn)與骨骼控制單元的模型形變對(duì)比
人體模型在運(yùn)動(dòng)過程中,人體局部網(wǎng)格需要發(fā)生自然的形變以仿真人物角色的動(dòng)態(tài)運(yùn)動(dòng)。而局部網(wǎng)格的形變效果是多個(gè)骨骼控制單元復(fù)合控制的結(jié)果。所以局部網(wǎng)格的形變計(jì)算依賴于各骨骼控制單元對(duì)其控制權(quán)重的設(shè)定。為避免手動(dòng)設(shè)定權(quán)重的隨意性與不準(zhǔn)確性,本文首先對(duì)控制權(quán)重進(jìn)行上下界約束,然后使用有界雙調(diào)和方程,使其 Laplace能量和最小化來自動(dòng)計(jì)算人體局部網(wǎng)格的蒙皮權(quán)重。有界雙調(diào)和權(quán)重在有界條件約束下的 Laplace能量最小化,可以使三維靜態(tài)模型在運(yùn)動(dòng)過程中產(chǎn)生較為平滑的形變,能夠完成較復(fù)雜的動(dòng)作控制。
其中,v′為點(diǎn)v在局部模型變形后新的空間位置。
考慮到三維人體局部模型在運(yùn)動(dòng)后模型產(chǎn)生形變的平滑性,各骨骼控制單元Kj對(duì)局部模型內(nèi)的各點(diǎn)v∈Ω的關(guān)聯(lián)權(quán)重wj(v)在三維人體局部模型空間Ω里應(yīng)具有拉普拉斯能量和的最小化
此最小化問題可以基于對(duì)應(yīng)的歐拉-拉格朗日方程進(jìn)行求解,本質(zhì)上是求解雙調(diào)和偏微分方程,即
實(shí)際求解wj(v)時(shí),還應(yīng)考慮如下邊界條件約束:
(4)連接各骨骼段的關(guān)節(jié)點(diǎn)分別同時(shí)屬于各相鄰的骨骼段,并且在各相鄰骨骼段的運(yùn)動(dòng)中,此關(guān)節(jié)點(diǎn)被運(yùn)動(dòng)到同一空間位置。
考慮到三維局部人體模型在計(jì)算機(jī)內(nèi)數(shù)值表達(dá)上的離散化,在對(duì)以上邊界條件約束下的雙調(diào)和方程(4)的解wj(v),也就是人體局部網(wǎng)格形變的有界雙調(diào)和權(quán)的實(shí)際求解時(shí),對(duì)式(3)的受約束的變分問題進(jìn)行離散化的近似求解。
對(duì)于人體局部模型在2.1節(jié)四面體化后的所有頂點(diǎn)的集合V={v1,···,vk,···,vn},每個(gè)控制單元的有界雙調(diào)和權(quán)wj(v),在離散化用列向量表示為Wj=(w1,j,···,wk,j,···,wn,j)T,并對(duì)其在式(3)中的拉普拉斯能量和使用線性拉普拉斯算子M-1L進(jìn)行離散化,其中,M為質(zhì)量矩陣;L為對(duì)稱剛度矩陣(即余切拉普拉斯算子),離散化后為
式(5)是權(quán)值Wj的二次凹函數(shù),Wj的值可使用MOSEK函數(shù)包在能量和式(5)取最小值時(shí)解出,此值將用于3.2節(jié)計(jì)算雙四元數(shù)混合蒙皮時(shí)模型中頂點(diǎn)跟隨控制單元運(yùn)動(dòng)的位置,在人體局部模型的運(yùn)動(dòng)過程中,對(duì)于后續(xù)多次的雙四元數(shù)混合蒙皮計(jì)算,該權(quán)值只需計(jì)算一次。
對(duì)于靜態(tài)模型的點(diǎn),式(2)所使用的變形公式為
但是 LBS算法常會(huì)出現(xiàn)塌陷或“裹糖紙”等變形失真現(xiàn)象。
為了得到比LBS更好的模型形變效果,本文給出了一種有界雙調(diào)和權(quán)與雙四元數(shù)混合蒙皮相結(jié)合的人體局部網(wǎng)格變形方法。首先將各個(gè)控制單元的平移與旋轉(zhuǎn)矩陣轉(zhuǎn)換為雙四元數(shù),然后結(jié)合 2.3節(jié)計(jì)算得到的有界雙調(diào)和權(quán)求出一個(gè)單位雙四元數(shù),最后用該單位雙四元數(shù)計(jì)算三維局部人體模型中各網(wǎng)格頂點(diǎn)的更新位置,即頂點(diǎn)跟隨骨骼控制單元運(yùn)動(dòng)后的位置。
四元數(shù)是動(dòng)畫系統(tǒng)中骨骼旋轉(zhuǎn)的一種表示方法,其由1個(gè)實(shí)部和3個(gè)虛部構(gòu)成。其數(shù)學(xué)表示為
其中,w為其標(biāo)量部分;x,y,z分別為其矢量部分;i,j,k為虛數(shù)單位。其共軛表達(dá)為
與矩陣相比,四元數(shù)更加高效,占用的儲(chǔ)存空間更小,此外也更利于插值。
對(duì)于人體局部三維模型的旋轉(zhuǎn),其軸角變換矩陣為
其中,α為點(diǎn)i∈vΩ繞著向量p(xp,yp,zp)旋轉(zhuǎn)的角度;u的值為1-cosα,其對(duì)應(yīng)的四元數(shù)的w,x,y,z的值為
使用四元數(shù)只能進(jìn)行旋轉(zhuǎn)變換,與四元數(shù)相比,使用雙四元數(shù)既能進(jìn)行旋轉(zhuǎn)變換,也能進(jìn)行平移變換,以及旋轉(zhuǎn)與平移的組合變換。雙四元數(shù)的數(shù)學(xué)表示為
其中,p0與pε均為四元數(shù),p0為實(shí)部,pε為對(duì)偶部,ε為對(duì)偶單位且ε2=0。雙四元數(shù)的共軛為
當(dāng)對(duì)偶部分pε=0時(shí),單位雙四元數(shù)代表三維旋轉(zhuǎn),即
對(duì)于三維人體模型的某空間點(diǎn)(vx,vy,vz),其單位雙四元數(shù)為
其旋轉(zhuǎn)為
使用雙四元數(shù)還可以進(jìn)行平移變換。若網(wǎng)格頂點(diǎn)產(chǎn)生向量(q0,q1,q2)的平移,則平移所對(duì)應(yīng)的單位雙四元數(shù)?q為
三維人體局部模型網(wǎng)格頂點(diǎn)的平移變換為
人體局部網(wǎng)格的運(yùn)動(dòng)可以由旋轉(zhuǎn)變換和平移變換的組合而成,所以可以基于雙四元數(shù)的組合變換來計(jì)算人體局部網(wǎng)格頂點(diǎn)的位置變化,據(jù)式(15)和式(17)得
對(duì)于三維人體局部模型的蒙皮計(jì)算是在雙四元數(shù)計(jì)算空間完成的,考慮到各骨骼控制單元對(duì)模型網(wǎng)格頂點(diǎn)的運(yùn)動(dòng)影響,在蒙皮計(jì)算時(shí),針對(duì)表征各骨骼控制單元運(yùn)動(dòng)的雙四元數(shù),結(jié)合2.3節(jié)所求取的有界雙調(diào)和權(quán)進(jìn)行了混合蒙皮計(jì)算。首先根據(jù)有界雙調(diào)和權(quán)以及各骨骼控制單元的運(yùn)動(dòng)雙四元數(shù),計(jì)算某時(shí)刻各頂點(diǎn)的運(yùn)動(dòng)變換雙四元數(shù),然后基于得到的運(yùn)動(dòng)變換雙四元數(shù)計(jì)算模型中各頂點(diǎn)的更新位置。
人體局部模型運(yùn)動(dòng)變形過程中基于有界雙調(diào)和權(quán)的雙四元數(shù)混合蒙皮方法如下:
(1)將所有骨骼控制點(diǎn)K1,···,Kj,···,Km的變換矩陣T1,···,Tj,···,Tm轉(zhuǎn)換成雙四元數(shù)形式,對(duì)于某軸角變換矩陣,即
據(jù)式(9),(10),(16)得到其用于變換計(jì)算的雙四元數(shù)為
(2)對(duì)于某三維人體局部網(wǎng)格頂點(diǎn)vi,根據(jù)2.3節(jié)計(jì)算得到的有界雙調(diào)和權(quán)wi1,···,wij,···,wim及各骨骼控制單元運(yùn)動(dòng)變換的雙四元數(shù),計(jì)算混合雙四元數(shù)為
最后,三維人體局部網(wǎng)格頂點(diǎn)iv變換后的位置為
本文提出的雙四元數(shù)混合蒙皮與有界雙調(diào)和權(quán)相結(jié)合的方法提供了一種自然的人體局部模型形變方法,通過使受上下界約束的Laplace能量和最小化來求解有界雙調(diào)和權(quán)重,使得人體局部模型中相鄰網(wǎng)格頂點(diǎn)間的變化較為平滑平緩;雙四元數(shù)的計(jì)算特性,使得各骨骼控制單元的旋轉(zhuǎn)與平移參數(shù)在計(jì)算中完成了混合平均,因此網(wǎng)格頂點(diǎn)的運(yùn)動(dòng)能夠較為平衡地考慮多個(gè)骨骼控制單元對(duì)其的影響。本文方法的計(jì)算復(fù)雜度要高于標(biāo)準(zhǔn)的線性混合蒙皮,但可以有效解決在線性混合蒙皮中出現(xiàn)的皮膚塌陷、失真等問題,能夠取得較好的變形效果。
為了驗(yàn)證本文算法的可行性與有效性,選擇在Windows 10 64位平臺(tái)上,以O(shè)penGL庫為基礎(chǔ),編程實(shí)現(xiàn)了本文的三維局部人體模型的網(wǎng)格變形方法,并進(jìn)行了對(duì)比性實(shí)驗(yàn)。實(shí)驗(yàn)的硬件環(huán)境:內(nèi)存8 GB DDR4;CPU Intel(R)Core(TM)i5-7400 @3.00 GHz;編程環(huán)境Visual studio 2017;程序設(shè)計(jì)語言C++。
在計(jì)算三維人體局部模型的形變時(shí),首先計(jì)算有界雙調(diào)和權(quán),然后根據(jù)計(jì)算好的權(quán)重對(duì)模型進(jìn)行蒙皮。權(quán)重、LBS以及本文方法的蒙皮計(jì)算時(shí)間見表1。
表1 權(quán)重與蒙皮的計(jì)算時(shí)間分析
在形變算法的性能分析實(shí)驗(yàn)中,選擇2種模型(Ⅰ為手掌模型和Ⅱ?yàn)槭直勰P?進(jìn)行精度不同的分割和不同的骨骼控制單元設(shè)置,并對(duì)其進(jìn)行有界雙調(diào)和權(quán)值和雙四元數(shù)混合蒙皮計(jì)算。其中第3組和第4組實(shí)驗(yàn)都選擇模型Ⅱ,控制單元分別是4個(gè)和16個(gè)。從表1可以看出:①有界雙調(diào)和權(quán)重計(jì)算時(shí)間隨模型網(wǎng)格點(diǎn)數(shù)的增加而增加;②控制單元個(gè)數(shù)對(duì)有界雙調(diào)和權(quán)重計(jì)算時(shí)間影響相對(duì)于網(wǎng)格點(diǎn)數(shù)較小,隨著控制單元的增多,權(quán)重計(jì)算時(shí)間和蒙皮時(shí)間增長不大;③由于有界雙調(diào)和權(quán)重計(jì)算只需在雙四元數(shù)混合蒙皮計(jì)算前計(jì)算一次即可,在后續(xù)的蒙皮計(jì)算中無需再次進(jìn)行,并且雙四元數(shù)混合蒙皮計(jì)算相對(duì)于權(quán)重計(jì)算時(shí)間花費(fèi)較小,從而可以保證三維人體局部模型變形編輯的響應(yīng)時(shí)間;④由于文獻(xiàn)[6]在蒙皮計(jì)算上仍然使用的是 LBS算法,因此本文方法在時(shí)間效率上要低于主流的 LBS算法與文獻(xiàn)[6]的方法。
本文方法與 LBS算法和文獻(xiàn)[6]算法進(jìn)行了程序運(yùn)行的對(duì)比實(shí)驗(yàn)。LBS算法網(wǎng)格端點(diǎn)的形變計(jì)算是使用各骨骼運(yùn)動(dòng)參數(shù)進(jìn)行變換計(jì)算結(jié)果的加權(quán)平均,但其權(quán)值難以準(zhǔn)確給定;文獻(xiàn)[6]算法雖然采用了有界雙調(diào)和權(quán)進(jìn)行權(quán)值給定,但其混合蒙皮的計(jì)算仍然是在三維坐標(biāo)空間完成的;而本文算法不僅使用有界雙調(diào)和權(quán)進(jìn)行權(quán)值計(jì)算,而且使用雙四元數(shù)計(jì)算空間進(jìn)行混合蒙皮計(jì)算。
對(duì)于圖2所示的手臂模型,以上3種算法在其旋轉(zhuǎn)180°時(shí),程序運(yùn)算形變結(jié)果對(duì)比如圖4所示。圖4(a)是真實(shí)拍攝的形變結(jié)果,對(duì)比圖4(a)可以看出,LBS算法會(huì)使得模型在旋轉(zhuǎn)處出現(xiàn)嚴(yán)重的“塌陷”(圖(b)),文獻(xiàn)[6]算法相對(duì)于 LBS算法取得了一定的改進(jìn)效果(圖(c)),而本文算法能夠取得更為自然與平滑的形變效果(圖4(d))。
對(duì)于手掌模型OK手勢(shì)的程序運(yùn)算形變結(jié)果對(duì)比如圖5所示。由圖5(c)可以看出,本文算法計(jì)算結(jié)果(圖5(b))在彎曲形變較為嚴(yán)重的食指第3小節(jié)處,其外形輪廓要比圖5(a)更為飽滿。相對(duì)于拍攝的真實(shí) OK 手勢(shì)(圖(d)),本文算法結(jié)果(圖(b))中食指第3小節(jié)與第1小節(jié)的粗細(xì)比也較圖5(a)更接近于真實(shí)情況。
因此,盡管本文方法在時(shí)間效率上要低于主流的 LBS算法與文獻(xiàn)[6]算法,但是當(dāng)要求較高的三維模型形變真實(shí)感,并且在對(duì)三維模型編輯的實(shí)時(shí)性要求不高時(shí),本文算法有較好的優(yōu)勢(shì)。
本文進(jìn)一步對(duì)LBS、文獻(xiàn)[6]以及本文算法的形變結(jié)果進(jìn)行了量化分析:對(duì)手臂肘關(guān)節(jié)附近區(qū)域的面片最長邊與最短邊的比率差分布進(jìn)行了統(tǒng)計(jì),即分別在變形前與變形后,對(duì)構(gòu)成三維模型的各三角形面片的最長邊與最短邊比值進(jìn)行計(jì)算,然后計(jì)算經(jīng)過變形后的這一比值的變化差值(絕對(duì)值),并統(tǒng)計(jì)在各差值區(qū)間的面片個(gè)數(shù)的分布情況。
圖4 手臂模型形變效果對(duì)比
圖5 OK手勢(shì)形變效果對(duì)比
由于三維模型的變形,組成三維模型的各三角形面片也會(huì)發(fā)生變形,帶來變形前、后的三角形最長邊與最短邊的比率變化。因此,就總體而言,對(duì)于一個(gè)比較均勻、自然的形變,會(huì)產(chǎn)生大量較小比率差;而對(duì)于發(fā)生了較大失真的形變,則會(huì)產(chǎn)生大量較大的比率差。因此,本文用比率差的統(tǒng)計(jì)數(shù)據(jù)來分析3種算法的變形效果。其結(jié)果模型中所選擇的比率差統(tǒng)計(jì)區(qū)域如圖6所示。
圖6比率差統(tǒng)計(jì)區(qū)域
圖6中,各方框中的條紋范圍,即為變形前后比率差的統(tǒng)計(jì)區(qū)域,均為以肘關(guān)節(jié)為中心,半徑為大臂和小臂長度和的八分之一的區(qū)域,均為1 381個(gè)三角形面片。
3種算法的比率差分布統(tǒng)計(jì)結(jié)果如圖7所示。其中,對(duì)于比率差超過2的三角形面片個(gè)數(shù)占比,LBS算法與文獻(xiàn)[6]算法,分別高于本文算法11.23,7.82個(gè)百分點(diǎn);對(duì)于比率差在1.5~2.0區(qū)間的三角形面片個(gè)數(shù)占比,其分別高于本文算法7.47,3.91個(gè)百分點(diǎn);比率差在1.5~2.0與2.0以上的三角形面片個(gè)數(shù)的占比情況說明對(duì)比算法相比本文算法在某些部位有較大的形變;而對(duì)于比率差在0.5~1.0區(qū)間的三角形面片個(gè)數(shù)占比,本文算法分別高于LBS算法與文獻(xiàn)[6]算法8.18,6.23個(gè)百分點(diǎn);對(duì)于比率差在0~0.5區(qū)間的三角形面片個(gè)數(shù)占比,本文算法分別高于其14.7,6.95個(gè)百分點(diǎn);比率差在0.5~1.0與0.5以下的三角形面片個(gè)數(shù)的占比情況說明本文算法在總體上有著更加平滑、均勻的變形效果。
使用本文算法對(duì)三維手掌模型進(jìn)行了握取動(dòng)作的變形實(shí)驗(yàn),以測(cè)試本文算法對(duì)復(fù)雜形變的可行性。該手掌模型有頂點(diǎn)7 234個(gè),三角面9 556個(gè),四面體29 998個(gè),骨骼控制單元20個(gè)。變形效果如圖8所示,動(dòng)作的每一步形變良好,未出現(xiàn) “塌陷”和變形失真的情況。
圖7 3種形變算法比率差分布占比
圖8 手掌模型動(dòng)作形變效果
本文針對(duì)三維局部人體模型在運(yùn)動(dòng)變形過程中的形變失真問題,提出了一種基于有界雙調(diào)和權(quán)與雙四元數(shù)混合蒙皮相結(jié)合的網(wǎng)格平滑變形方法。該方法首先對(duì)人體局部模型進(jìn)行四面體分割,然后設(shè)定各骨骼控制單元,接下來通過Laplace能量和最小化的方法計(jì)算各骨骼控制單元的有界雙調(diào)和權(quán),最后通過雙四元數(shù)混合蒙皮重構(gòu)運(yùn)動(dòng)后的三維局部人體模型。實(shí)驗(yàn)結(jié)果表明該方法能夠通過骨骼控制單元實(shí)現(xiàn)人體局部網(wǎng)格形變,形變效果較好,并具有較好的魯棒性。本文的方法在影視三維動(dòng)畫制作、三維運(yùn)動(dòng)捕捉與三維人體的運(yùn)動(dòng)仿真等領(lǐng)域具有較好的應(yīng)用前景。