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