張師榕,張 振,2,3,趙轉(zhuǎn)哲,2,3*,劉永明,2,3,闞延鵬
(1.安徽工程大學(xué) 機(jī)械工程學(xué)院,安徽 蕪湖 241000;2.安徽工程大學(xué) 人機(jī)自然交互和高效協(xié)同技術(shù)研究中心安徽省新型研發(fā)機(jī)構(gòu),安徽 蕪湖 241000;3.安徽工程大學(xué) 先進(jìn)數(shù)控和伺服驅(qū)動技術(shù)安徽省重點實驗室,安徽 蕪湖 241000)
近年來,隨著家用個人計算機(jī)(Personal Computer,PC)性能的提高以及計算機(jī)硬件的飛速發(fā)展,計算機(jī)圖形(Computer Graphics,CG)逐漸進(jìn)入大眾視野,現(xiàn)已廣泛應(yīng)用于如三維計算機(jī)圖形(3D Computer Graphics,3DCG)設(shè)計、數(shù)據(jù)可視化(Data Visualization)、電影廣告和游戲視頻等諸多領(lǐng)域。目前,我們已經(jīng)可以在個人計算機(jī)上利用三維動畫制作軟件(如Blender、Metasequoia和MikuMikuMoving等)制作3DCG。Unity3D游戲開發(fā)平臺的發(fā)布使得全尺寸3D游戲的開發(fā)進(jìn)入普通家庭,為眾多動畫制作愛好者提供了方便。
三維人體動畫是3DCG產(chǎn)品制作中最吸引人也是難度最高的技術(shù)之一,其制作方法大致分為使用圖形用戶界面(Graphical User Interface,GUI)和機(jī)器人用戶界面(Robot User Interface,RUI)兩種。國內(nèi)外相關(guān)學(xué)者在這些領(lǐng)域做了大量的研究,如郭松基于Unity3D游戲開發(fā)平臺,設(shè)計了一款面向廣大消費者的3D虛擬試衣系統(tǒng)。首先利用Unity3D軟件的布料系統(tǒng),隨后構(gòu)造基本碰撞球體,重組人體力學(xué)碰撞模型,在力學(xué)仿真環(huán)境中提高了用戶的真實體驗度。吳鈴等提出了一種利用BVH(Biovision Hierarchy)文件驅(qū)動三維人體動畫的方法,在OpenGL軟件中使用三維模型構(gòu)建人體動畫,實現(xiàn)了三維人體動畫的模擬。Li等提出了一種根據(jù)上下文的手勢生成方法,將中文手語文本翻譯成虛擬動畫,具有較高的準(zhǔn)確度和可理解性,為耳聾人群獲得信息和服務(wù)提供了便利。陳姝等提出了一種實時的人體三維動畫方法,該方法基于H-Anim標(biāo)準(zhǔn),首先研究了人體肢體層次結(jié)構(gòu),接著重構(gòu)并計算了由Kinect獲取的運動數(shù)據(jù),最后根據(jù)關(guān)節(jié)旋轉(zhuǎn)矩陣對三維虛擬人物進(jìn)行驅(qū)動。結(jié)果表明,所提算法能夠精確地實現(xiàn)人體運動的重構(gòu)。彭剛等基于超聲波測距技術(shù)介紹了3D輸入設(shè)備的設(shè)計原理,采用渡越時間測量結(jié)合自動增益控制的方法,經(jīng)過空間解析幾何運算,確定輸入設(shè)備在空間坐標(biāo)系中的位置和姿態(tài),根據(jù)按鍵所處的狀態(tài)確定要實現(xiàn)的操作。
盡管以上方法均可以生成理想的動畫序列,但通常采用GUI方法使用鼠標(biāo)對3D動畫模型進(jìn)行調(diào)整時,其模型越復(fù)雜,需要消耗的時間也越長,動畫制作效率較低;使用RUI方法雖然可以將機(jī)器人的移動輸入為3D模型的運動,甚至可以復(fù)制細(xì)微的動作,但除了類人動物之外(例如動物和幻想生物)的3D模型輸入難度較大,對動畫制作者水平要求較高。因此,為了克服上述兩種方法的弊端,研究根據(jù)人體上肢運動角度范圍,開發(fā)了一種基于運動捕捉的多自由度機(jī)械臂輸入設(shè)備。以Unity3D為開發(fā)平臺,通過GUI和RUI兩種方法對虛擬人物模型的不同動作姿勢進(jìn)行生成,對比兩種方法耗費的時間,對該設(shè)備的有效性進(jìn)行實驗驗證。
關(guān)鍵幀動畫提取方法是三維動畫視頻生成的一種常見的基本方法。所謂關(guān)鍵幀動畫,就是將動畫中關(guān)鍵動作所在的那一幀指定為關(guān)鍵幀。關(guān)鍵幀是對整個動畫序列的總結(jié)和概括,在相鄰兩個關(guān)鍵幀之間的部分稱為中間幀或內(nèi)插幀,可以采用特定的插值方法計算得到,從而使動畫達(dá)到比較流暢的效果。利用該方法生成動畫的過程如圖1所示。由圖1可知,首先指定兩個關(guān)鍵幀frame A和frame B作為動畫序列的開始狀態(tài)和結(jié)束狀態(tài),由計算機(jī)在兩個關(guān)鍵幀之間插入空白幀。通常在設(shè)置關(guān)鍵幀時,需要使用鼠標(biāo)或鍵盤來對3D模型姿勢進(jìn)行調(diào)整來達(dá)到預(yù)期的效果。當(dāng)前,關(guān)鍵幀提取方法主要基于聚類算法、優(yōu)化算法和曲線算法三種。在內(nèi)插幀則一般使用線性插補(bǔ)和貝塞爾曲線插補(bǔ)的方法,并且可以進(jìn)行精準(zhǔn)控制,如勻速運動、加速運動,從開始到結(jié)束的平穩(wěn)運動或劇烈運動。
圖1 關(guān)鍵幀動畫
利用運動捕捉技術(shù)生成動畫通常是將傳感器放置在表演者具有運動特征的部位(例如人體關(guān)節(jié))上,將傳感器運動軌跡轉(zhuǎn)化為抽象運動,使三維虛擬人物擁有同步的動畫動作,從而生成預(yù)期的動畫序列。目前,常見的運動捕捉技術(shù)可分為電磁式、機(jī)械式、光學(xué)式和聲學(xué)式四種。采用運動捕捉方法制作動畫的實施案例如圖2所示。由圖2可知,實施案例效果逼真流暢,還原度較高,但其運動幅度有限,如果是難度較大的動作,對于實驗者要求則較高。
圖2 運動捕捉技術(shù)
通常使用GUI方法生成關(guān)鍵幀動畫時,需要通過使用鼠標(biāo)或鍵盤等調(diào)整虛擬人物的動作來生成理想的動畫序列,對操作者熟練度和專業(yè)性要求較高。使用RUI方法生成動畫序列時,用戶將機(jī)器人作為動作姿勢的輸入設(shè)備與計算機(jī)端3D動畫模型實時同步,通過改變機(jī)器人的狀態(tài)生成理想的動畫序列,RUI方法示意圖如圖3所示。
圖3 RUI方法示意圖
研究根據(jù)人體手臂關(guān)節(jié)實際運動角度范圍,開發(fā)了一種可以與3D模型同步運動的多自由度機(jī)械臂作為動畫制作的輸入設(shè)備,其三維模型及實物圖分別如圖4所示。在三維模型中,分別在肩部和腕部設(shè)有2個自由度,肘部設(shè)有1個自由度。在圖4a中,①代表電機(jī),安裝在模型的端口及關(guān)節(jié)處,為設(shè)備的正常工作提供必要的動力;②代表模型骨架,用于模擬人體手臂骨骼并固定電機(jī)及傳感設(shè)備。另外,由于角速度傳感器或角度傳感器僅能檢測當(dāng)前角速度或角度,而加速度傳感器可以檢測到相對于地面的角度,因此研究采用加速度傳感器作為數(shù)據(jù)輸入。在圖4b中,電機(jī)選用Tower Pro Pte Ltd公司的微型電機(jī)SG-90,骨架使用ABS樹脂材料通過3D打印進(jìn)行制造,加速度傳感器型號選用KXR94-2050。在機(jī)械臂伸展?fàn)顟B(tài)下,其總長度約為275 mm,最大寬度約為90 mm,總重量約為115 g。
圖4 設(shè)備模型及實物圖
Unity3D是一個實時3D互動開發(fā)平臺,具有Unity Technologies公司開發(fā)的以Java、C#或C++作為腳本語言的內(nèi)置集成開發(fā)環(huán)境。研究以Unity3D為平臺,以其提供的虛擬人物模型為實驗樣本,對虛擬人物的動作姿勢進(jìn)行生成。該虛擬人物模型的皮膚形狀和骨骼信息如圖5所示。
圖5 虛擬人物模型
與人體手臂關(guān)節(jié)類似,機(jī)械臂的關(guān)節(jié)同樣存在一定的運動范圍。研究參考日本康復(fù)醫(yī)學(xué)會提供的人體關(guān)節(jié)運動角度范圍和測量方法,比較了人體上肢關(guān)節(jié)參考運動角度范圍和該機(jī)械臂輸入設(shè)備的運動角度范圍,如表1所示。
表1 人體關(guān)節(jié)與機(jī)械臂運動角度范圍比較
虛擬人物模型初始及預(yù)生成姿勢如圖6、圖7所示。在設(shè)置3D虛擬人物模型的初始姿勢(見圖6a)后,根據(jù)人體上肢的基本運動形式,選取了人體上肢常見的5種動作姿勢作為預(yù)生成姿勢(見圖6b~圖6c、圖7a~圖7c)。實驗者分別使用RUI和GUI兩種方法對5種動作進(jìn)行生成,分別記錄花費的時間并對比,步驟如下:
(1)受試者用3 min來熟悉實驗設(shè)備和操作流程。
(2)受試者根據(jù)給定的姿勢b,使用機(jī)械臂輸入設(shè)備進(jìn)行動作的生成。
(3)在完成姿勢b的同時,受試者可查看姿勢c的動作。隨后,使用同樣的方法在動作b的基礎(chǔ)上進(jìn)行動作c的生成。
(4)重復(fù)上述(1)到(3)的步驟,直至5個預(yù)生成姿勢全部完成,統(tǒng)計時間并記錄。
(5)受試者使用GUI的方法,進(jìn)行上述(1)到(4)的步驟并計時。
實驗邀請5位受試者(分別記為A,B,C,D和E)進(jìn)行試驗,記錄其Unity3D使用經(jīng)驗的有無,實驗結(jié)果如表2所示。其中,“生成每個姿勢所需時間”下方的箭頭表示兩種動作的轉(zhuǎn)變。由表2可知,相較于GUI方法中鼠標(biāo)操作生成規(guī)定動作姿勢,使用研究設(shè)計的多自由度機(jī)械臂輸入設(shè)備完成以上5種相同動作所需時間均有不同程度的縮短,分別為使用GUI方法的0.52倍、0.6倍、0.38倍、0.22倍和0.47倍;另外,對于從未使用過Unity3D軟件的受試者D和E,使用該機(jī)械臂輸入設(shè)備花費的時間明顯較短,這表明對于普通用戶而言,使用該機(jī)械臂輸入設(shè)備完成指定的動畫序列更為簡單便捷,效果更為直觀。
表2 實驗結(jié)果對比
圖6 虛擬人物模型初始及預(yù)生成姿勢(a~c)
圖7 虛擬人物模型預(yù)生成姿勢(d~f)
研究根據(jù)人體上肢運動角度范圍,設(shè)計了一種基于運動捕捉的多自由度機(jī)械臂輸入設(shè)備,通過GUI和RUI兩種方法生成5種相同的動作姿勢,對兩種方法花費的時間進(jìn)行了對比。結(jié)果表明,使用該機(jī)械臂輸入設(shè)備對于規(guī)定動作的生成更為迅速和便捷,這一結(jié)果在沒有Unity3D使用經(jīng)驗的受試者身上更為顯著。該機(jī)械臂輸入設(shè)備的成功應(yīng)用為動畫制作領(lǐng)域的研究提供了一個較好的案例,同時也可將該方案應(yīng)用于康復(fù)訓(xùn)練、游戲開發(fā)和影視動畫等領(lǐng)域。