何長鵬,侯 進(jìn),王 獻(xiàn)
(西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,四川 成都 610031)
基于骨骼的三維虛擬人運(yùn)動合成方法研究*
何長鵬,侯 進(jìn),王 獻(xiàn)
(西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,四川 成都 610031)
針對虛擬人運(yùn)動合成中建立的人體模型存在復(fù)雜化、合成的虛擬人運(yùn)動序列逼真度差的問題,提出了一種基于骨骼的虛擬人運(yùn)動合成方法。在分析人體結(jié)構(gòu)的基礎(chǔ)上,通過三維圖形軟件獲取人體骨骼數(shù)據(jù),構(gòu)建虛擬人體的骨骼模型。另外,將關(guān)鍵幀四元數(shù)球面插值算法與時(shí)間和空間變形方法相結(jié)合,生成多樣化的虛擬人運(yùn)動序列。實(shí)驗(yàn)結(jié)果驗(yàn)證了該方法的有效性。
虛擬人;運(yùn)動合成;關(guān)鍵幀插值;時(shí)間空間變形
虛擬人是人類幾何特性和行為特性在虛擬環(huán)境中的數(shù)字化表示,是高度真實(shí)的人類特性的數(shù)字化再現(xiàn),而人作為虛擬環(huán)境的主體,其運(yùn)動的逼真性直接決定著用戶在虛擬世界的沉浸感[1]。近年來,虛擬人研究主要關(guān)注兩方面的內(nèi)容:一是形象化的建模;二是運(yùn)動合成。對于虛擬人逼真的外形,以及真實(shí)自然的復(fù)雜運(yùn)動和多樣化運(yùn)動的合成,人們提出了更高的要求:不僅運(yùn)動模型高度逼真、具有實(shí)時(shí)性,而且還要有物理特性和自主行為能力。虛擬人運(yùn)動合成過程中,關(guān)鍵幀往往起著核心的作用,通過選定虛擬人關(guān)鍵幀姿態(tài),用插值算法來生成運(yùn)動序列,而運(yùn)動序列的逼真、自然程度取決于關(guān)鍵幀姿態(tài)的逼真、自然程度。Peinado M等人[2]利用優(yōu)先級的逆運(yùn)動學(xué)PIK(Prioritized Inverse Kinematics)方法,在處理關(guān)鍵幀姿態(tài)插值的過程中,根據(jù)約束條件優(yōu)先級,對虛擬人的姿態(tài)進(jìn)行調(diào)整,實(shí)現(xiàn)智能化的虛擬人運(yùn)動合成,使虛擬人具有“自我意識”。這種方法實(shí)現(xiàn)了逼真的虛擬人外形,但大幅度增加了運(yùn)動合成的復(fù)雜性。Zhang Gui-juan等人[3]提出一種基于骨架的流體動畫合成方法,它考慮了人體的生理特性和運(yùn)動特性,但運(yùn)動合成的效率存在局限性,不能滿足系統(tǒng)實(shí)時(shí)傳輸?shù)男阅芤蟆R虼?,在充分考慮人體生理特性和運(yùn)動特性的情況下,如何降低虛擬人運(yùn)動合成的復(fù)雜度,提高運(yùn)動合成的實(shí)時(shí)性,有待我們?nèi)ソ鉀Q。
虛擬人建模,目前有很多種不同的方法:(1)通過對人體照片進(jìn)行圖像處理,提取人體輪廓和關(guān)鍵部位的特征參數(shù)信息,重構(gòu)人體模型;(2)利用三維掃描儀自動獲得真實(shí)人體表面的幾何數(shù)據(jù);(3)利用建模軟件Maya等繪制人體的三維模型,獲得虛擬人表面模型數(shù)據(jù)。虛擬人運(yùn)動合成,早期主要采用數(shù)值計(jì)算的方法,通過建立運(yùn)動學(xué)或動力學(xué)方程,用數(shù)值方法求解。后來出現(xiàn)了運(yùn)動捕獲設(shè)備,許多基于捕獲數(shù)據(jù)的合成方法被提了出來。
本文在分析人體結(jié)構(gòu)的基礎(chǔ)上簡化人體骨骼結(jié)構(gòu),考慮降低運(yùn)動合成復(fù)雜度的情況,實(shí)現(xiàn)一種基于骨骼的虛擬人運(yùn)動合成方法。首先,通過三維圖形軟件獲取人體骨骼數(shù)據(jù),構(gòu)建人體的骨骼模型;然后,讀取運(yùn)動數(shù)據(jù)關(guān)鍵幀,通過球面線性插值算法和時(shí)間空間變形方法,驅(qū)動底層骨骼運(yùn)動,合成真實(shí)自然的虛擬人運(yùn)動序列。具體實(shí)現(xiàn)過程見圖1。
Figure 1 System flow chart圖1 系統(tǒng)流程圖
由于人體是一個(gè)復(fù)雜的生命體系,由206塊骨骼、600多塊肌肉以及指揮這些骨骼和肌肉的無數(shù)神經(jīng)組成,骨骼之間由多種關(guān)節(jié)相連,人體全身關(guān)節(jié)具有200多個(gè)自由度DOF(Degree of Freedom),是典型的高維非線性系統(tǒng)[4]。所以,在人體運(yùn)動合成過程中需要將人體做某種程度的抽象,這種抽象既要盡可能反映人體的真實(shí)情況,又要易于實(shí)現(xiàn)。就人體骨骼結(jié)構(gòu)而言,目前有兩個(gè)重要的國際標(biāo)準(zhǔn) H-Anim和 MPEG-4都支持虛擬人的表示。人體骨骼結(jié)構(gòu)中,各骨骼之間存在著一定的運(yùn)動連帶關(guān)系,把關(guān)節(jié)看成是點(diǎn),將關(guān)節(jié)之間的骨骼看成鏈,就可以按照運(yùn)動關(guān)系將各個(gè)肢體連接起來。對于由多關(guān)節(jié)組成的復(fù)雜人體,通常采用常規(guī)的樹形結(jié)構(gòu),樹中每一個(gè)節(jié)點(diǎn)對應(yīng)一個(gè)關(guān)節(jié)。一般根據(jù)實(shí)際的需要,從運(yùn)動關(guān)節(jié)和自由度方面考慮來簡化人體模型。本文通過三維圖形軟件獲取人體骨骼模型數(shù)據(jù),對人體骨骼模型進(jìn)行簡化處理,得到一個(gè)17個(gè)關(guān)節(jié)、39個(gè)DOF的虛擬人骨骼模型,如圖2所示,其中白色的線段表示人體的骨骼,淺色的點(diǎn)表示人體的關(guān)節(jié)點(diǎn)和末端效應(yīng)器。
Figure 2 Skeleton model of virtual human圖2 虛擬人骨骼模型
人體的關(guān)節(jié)是連接身體各個(gè)部分的環(huán)節(jié),也是身體運(yùn)動的樞紐。人體通過關(guān)節(jié)來傳遞力和力矩,結(jié)構(gòu)復(fù)雜。在人體工程學(xué)中,通常把人體關(guān)節(jié)抽象為一個(gè)球鉸,但是人體關(guān)節(jié)實(shí)際活動范圍并沒有像鉸鏈那樣的自由度,它受到人體運(yùn)動生理上的限制,因此必須明確人體各關(guān)節(jié)運(yùn)動的約束條件,把關(guān)節(jié)分為自轉(zhuǎn)和擺動。我們對人體的關(guān)節(jié)進(jìn)行分類,一個(gè)自由度(DOF)的關(guān)節(jié),如膝蓋,只能上下彎曲,沒有自轉(zhuǎn);兩個(gè)自由度(DOF)的關(guān)節(jié),如腕關(guān)節(jié),除自轉(zhuǎn)外,有兩個(gè)方向的旋轉(zhuǎn)自由度;三個(gè)自由度(DOF)的關(guān)節(jié),如肩關(guān)節(jié),既有自轉(zhuǎn)又有擺動。人體的約束條件有運(yùn)動約束、能量約束、動力約束和空間時(shí)間約束等。文獻(xiàn)[2]中給出了人體的運(yùn)動約束條件,考慮了人體脊柱關(guān)節(jié)的旋轉(zhuǎn)角度范圍。假設(shè)虛擬人的任意的一個(gè)關(guān)節(jié)為i,旋轉(zhuǎn)的角度為θi,其運(yùn)動約束為θimin≤θi≤θimax,其中θimin及θimax分別為關(guān)節(jié)i所允許的最小和最大旋轉(zhuǎn)角度。
插值是處理運(yùn)動數(shù)據(jù)最有效的方法之一。文獻(xiàn)[5]中為了增強(qiáng)人體骨骼運(yùn)動細(xì)節(jié)的表達(dá),提出了基于關(guān)鍵幀分類的虛擬人運(yùn)動插值方法。以骨骼間夾角為動作特征,將關(guān)鍵幀集合根據(jù)其運(yùn)動特征進(jìn)行分類,采用分層插值方法,合成虛擬人運(yùn)動序列。在關(guān)鍵幀插值過程中,每一個(gè)關(guān)鍵幀指出了骨骼在該時(shí)刻相對于父關(guān)節(jié)坐標(biāo)的變換以及位置、朝向等信息,而且每一根骨骼都要有很多的關(guān)鍵幀,通常用旋轉(zhuǎn)四元數(shù)、縮放向量和平移向量來表示。獲得關(guān)鍵幀數(shù)據(jù)后,需要按照某時(shí)刻與前后兩個(gè)關(guān)鍵幀時(shí)刻的時(shí)間值插值計(jì)算出該時(shí)刻骨骼相對于父節(jié)點(diǎn)的新的變換矩陣。在插值過程中,對于平移和縮放,采用線性插值,而旋轉(zhuǎn)過程比較復(fù)雜,需要球面線性插值算法。球面線性插值算法是在四維空間的單位超球面上對兩個(gè)單位四元數(shù)進(jìn)行插值,并且保證最終的插值結(jié)果仍在超球面上,而不會產(chǎn)生加速效果。
假設(shè)q1和q2為單位四元數(shù),參數(shù)μ∈[0,1],從q1到q2的球面線性插值記做slerp(q1,q2,μ),數(shù)學(xué)表達(dá)式為:
其中,α=arccos(q1,q2)是兩個(gè)插值點(diǎn)q1和q2間的夾角。球面線性插值的結(jié)果處于球面上,無需進(jìn)行歸一化處理,就能保證以恒定的角速度在兩個(gè)關(guān)鍵幀q1和q2間的球面上以最短弧長運(yùn)動。
虛擬人運(yùn)動狀態(tài)可能會實(shí)時(shí)發(fā)生變化,通過對兩個(gè)不同狀態(tài)的運(yùn)動進(jìn)行合成,生成新的運(yùn)動狀態(tài)[6]。例如,把跑步和走路這兩種不同風(fēng)格運(yùn)動進(jìn)行加權(quán)平均,從而生成新的運(yùn)動“慢跑”。本文在關(guān)鍵幀插值基礎(chǔ)上,采用時(shí)間變形使兩個(gè)運(yùn)動之間的關(guān)鍵幀產(chǎn)生一一對應(yīng)的關(guān)系,并且持續(xù)相同的時(shí)間。記選取關(guān)鍵幀的時(shí)刻為Ki(1≤i≤Nk),Nk為選取的個(gè)數(shù)。將實(shí)際時(shí)間T∈ [ K1,KNk] 映射到標(biāo)準(zhǔn)時(shí)間t∈[0,1],構(gòu)造如下函數(shù):
其中,m為最大指數(shù),即T>Km。
對于輸入的運(yùn)動序列經(jīng)過時(shí)間變形后,使兩個(gè)運(yùn)動之間的關(guān)鍵幀產(chǎn)生一一對應(yīng)的關(guān)系。但是,由于人物空間位置的不同,運(yùn)動插值之后很容易出現(xiàn)錯(cuò)誤,因此要對輸入的運(yùn)動序列進(jìn)一步進(jìn)行空間變形。將運(yùn)動序列整體沿水平面方向平移和繞垂直方向旋轉(zhuǎn),使各輸入運(yùn)動的空間位置和朝向盡可能相似。設(shè)運(yùn)動序列P和Q的長度分別為m和n,分別表示為:
每幀具有J 個(gè)關(guān)節(jié)點(diǎn),采用“點(diǎn)云”[6,7]方式表示運(yùn)動姿態(tài)。每個(gè)關(guān)鍵幀對應(yīng)不同的點(diǎn)云,任意點(diǎn)云經(jīng)過運(yùn)動變換后,使點(diǎn)云距離達(dá)到最小。對輸入的兩段運(yùn)動序列m1和m2任意的關(guān)鍵幀進(jìn)行空間變形。設(shè)m1中第i關(guān)鍵幀fi中一個(gè)關(guān)節(jié)坐標(biāo)為(x,y,z)T,設(shè)m2中第i關(guān)鍵幀中相同關(guān)節(jié)坐標(biāo)為 ( x′ ,y′,z′)T,人體在XOZ平面上繞軸的旋轉(zhuǎn)角度為θ。任意兩幀之間的距離函數(shù)為[6,7]:
其中,pi,k是由第i幀生成的鄰居點(diǎn)云上的第k個(gè)節(jié)點(diǎn);是把第i幀和第j幀對齊的仿射變換矩陣;wk是權(quán)值,決定了每個(gè)節(jié)點(diǎn)對最終距離值的影響程度。
我們將幾個(gè)典型動作按照合適的權(quán)重結(jié)合產(chǎn)生新的動作數(shù)據(jù)A,即可得到在兩個(gè)典型動作A1和A2之間的中間插值動作[6]:
其中,浮點(diǎn)數(shù)α取值0~1.0。式(9)表示兩個(gè)動作所包含的所有對應(yīng)的旋轉(zhuǎn)角度和平移矢量各自進(jìn)行線性組合。
根據(jù)研究的內(nèi)容,本文在Intel Core i3 2.53 GHz 2 048MB的環(huán)境下,選用 Microsoft Visual Studio 2010作為軟件開發(fā)平臺,使用OpenGL和Cal3D[8]開發(fā)庫,對提出的虛擬人運(yùn)動合成方法進(jìn)行了實(shí)驗(yàn)驗(yàn)證。首先,系統(tǒng)讀取從三維圖形軟件獲得的人體骨骼模型數(shù)據(jù),對模型進(jìn)行簡化處理,得到一個(gè)17個(gè)關(guān)節(jié)、39個(gè)DOF的虛擬人骨骼模型。構(gòu)建完虛擬人骨骼模型之后,用關(guān)鍵幀插值方法來合成虛擬人走路的運(yùn)動序列片段,如圖3所示。在實(shí)驗(yàn)中,虛擬人合成的運(yùn)動序列是以每秒60幀的速率產(chǎn)生的。從圖3中可以看出,虛擬人的行走是一個(gè)循環(huán)往復(fù)的過程,其中以腿部運(yùn)動為例來加以說明。腳趾作為人體的末端效應(yīng)器,只有平移運(yùn)動,顯然使用線性插值,而膝關(guān)節(jié)既有平移又有旋轉(zhuǎn),優(yōu)先使用球面線性插值,這樣保證了插值的連續(xù)性,不會產(chǎn)生加速效果。
為了驗(yàn)證關(guān)鍵幀時(shí)間和空間變形的有效性,我們將走路和跑步這兩種運(yùn)動進(jìn)行融合,合成虛擬人“慢跑”的運(yùn)動序列片段。分別將揮手和走路以及揮手和跑步這兩種動作相融合,生成在走路的過程中揮手和在跑步的過程中揮手兩種不同的運(yùn)動序列。圖4給出了揮手和跑步合成之后的運(yùn)動序列片段。在實(shí)驗(yàn)中,可以給揮手、走路和跑步等幾種運(yùn)動序列設(shè)置不同的權(quán)重,根據(jù)不同的權(quán)重值,生成多樣化的運(yùn)動序列片段。圖4所示的運(yùn)動序列片段,揮手和跑步的權(quán)重值分別為0.2和0.8。
Figure 3 Sequence fragment of virtual human walking motion圖3 人體走路的運(yùn)動序列片段
Figure 4 Sequence fragment of waving and running synthetic motion圖4 揮手和跑步合成的運(yùn)動序列片段
本文介紹了一種基于骨骼的虛擬人運(yùn)動合成方法。該方法在分析人體結(jié)構(gòu)的基礎(chǔ)上,通過三維圖形軟件獲取人體骨骼模型數(shù)據(jù),構(gòu)建虛擬人體的骨骼模型。將選定的虛擬人關(guān)鍵幀狀態(tài),用線性插值和四元數(shù)球面線性插值算法來合成真實(shí)自然的虛擬人運(yùn)動序列。為了合成多樣化的虛擬人運(yùn)動序列,將兩種不同的虛擬人運(yùn)動關(guān)鍵幀進(jìn)行時(shí)間和空間變形,合成一種新的運(yùn)動狀態(tài)。這種方法充分考慮了人體生理和運(yùn)動特性,降低了運(yùn)動合成的復(fù)雜性,提高了運(yùn)動合成的實(shí)時(shí)性,生成的虛擬人運(yùn)動序列真實(shí)自然。
[1] Hou Jin,Wu Ling,Xu Fang,et al.Real-time text driven avatars[J].Online Journal on Computer Science and Information Technology,2011,1(1):9-14.
[2] Peinado M,Meziat D,Maupu D,et al.Full-body avatar control with environment awareness[J].IEEE Computer Graphics and Applications,2009,29(3):62-75.
[3] Zhang Gui-juan,Zhu Deng-ming,Qiu Xian-jie,et al.Skeleton-based control of fluid animation[J].Visual Computer,2011,27(3):199-210.
[4] Li Shi-lei,Liang Jia-hong,Li Meng,et al.Whole body posture generation of virtual characters by combinig posture examples and prioritized inverse kinematics[J].Journal of System Simulation,2011,23(12):2692-2700.(in Chinese)
[5] Kong De-hui,Wang Li-chun,Zheng Chong-yu.A key frame interpolation method enhancing motion details of skeletal animation[J].Journal of Beijing University of Technology,2011,37(8):1255-1260.(in Chinese)
[6] Meng Wei,Guo Wei-bin,Zhu Chang-ming,et al.Motion fusion technique based on characteristics of human motion[J].Journal of Computer Applications,2011,31(1):42-44.(in Chinese)
[7] Horvath C,Geiger W.Directable,high-resolution simulation of fire on the GPU[C]∥Proc of the 2009Computing Machinery’s Special Interest Group on Computer Graphics,2009:1-8.
[8] Yuan Peng,Wang Shu-jie,Zhang Ji-wei,et al.Virtual reality platform based on open sourced graphics toolkit openscenegraph[C]//Proc of the 10th IEEE International Conference on Computer-Aided Design and Computer Graphics,2007:361-364.
附中文參考文獻(xiàn):
[4] 李石磊,梁加紅,李猛,等.基于姿態(tài)庫和PIK算法的虛擬人全身姿態(tài)生成[J].系統(tǒng)仿真學(xué)報(bào),2011,23(12):2692-2700.
[5] 孔德慧,王立春,鄭重雨.增強(qiáng)骨骼動畫運(yùn)動細(xì)節(jié)的關(guān)鍵幀插值方法[J].北京工業(yè)大學(xué)學(xué)報(bào),2011,37(8):1255-1260.
[6] 孟巍,郭衛(wèi)斌,朱昌明,等.基于人體運(yùn)動規(guī)律的運(yùn)動融合技術(shù)[J].計(jì)算機(jī)應(yīng)用,2011,31(1):42-44.
Research of the three-dimensional virtual human motion synthesis method based on skeleton
HE Chang-peng,HOU Jin,WANG Xian
(School of Information Science and Technology,Southwest Jiaotong University,Chengdu 610031,China)
In view of the problem that the construction of virtual human model is complicated and synthetic virtual human movement sequences have poor fidelity,proposes a method of the virtual human motion synthesis based on skeleton.Based on the analysis of human body structure,the human bone data are acquired through three-dimensional graphics software.In addition,quaternions spherical interpolation method and the time and space deformation of motion fusion method are combined to generates diversity virtual human movement sequences.The effectiveness of this method is verified through the experiment.
virtual human;motion synthesis;keyframe interpolation;time and space warping
TP317.4
A
10.3969/j.issn.1007-130X.2014.04.028
2012-09-04;
2012-12-19
國家自然科學(xué)基金資助項(xiàng)目(60902023,61171096);2009年高等學(xué)校博士學(xué)科點(diǎn)專項(xiàng)科研基金資助項(xiàng)目(20090184120020,20090184120022);中央高?;究蒲袠I(yè)務(wù)費(fèi)專項(xiàng)資金資助項(xiàng)目(SWJTU12CX093);四川省動漫研究中心2012年度科研項(xiàng)目(DM201204)
侯進(jìn)(Houjin_163@163.com)
通訊地址:610031四川省成都市二環(huán)路北一段111號西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院
Address:School of Information Science and Technology,Southwest Jiaotong University,Chengdu 610031,Sichuan,P.R.China
1007-130X(2014)04-0737-04
何長鵬(1986-),男,甘肅武威人,碩士生,研究方向?yàn)樘摂M人運(yùn)動合成。E-mail:hechangpeng2008@163.com
HE Chang-peng,born in 1986,MS candidate,his research interest includes virtual human motion synthesis.