張師榕,張 振,2,3,趙轉哲,2,3*,劉永明,2,3,闞延鵬
(1.安徽工程大學 機械工程學院,安徽 蕪湖 241000;2.安徽工程大學 人機自然交互和高效協同技術研究中心安徽省新型研發機構,安徽 蕪湖 241000;3.安徽工程大學 先進數控和伺服驅動技術安徽省重點實驗室,安徽 蕪湖 241000)
近年來,隨著家用個人計算機(Personal Computer,PC)性能的提高以及計算機硬件的飛速發展,計算機圖形(Computer Graphics,CG)逐漸進入大眾視野,現已廣泛應用于如三維計算機圖形(3D Computer Graphics,3DCG)設計、數據可視化(Data Visualization)、電影廣告和游戲視頻等諸多領域。目前,我們已經可以在個人計算機上利用三維動畫制作軟件(如Blender、Metasequoia和MikuMikuMoving等)制作3DCG。Unity3D游戲開發平臺的發布使得全尺寸3D游戲的開發進入普通家庭,為眾多動畫制作愛好者提供了方便。
三維人體動畫是3DCG產品制作中最吸引人也是難度最高的技術之一,其制作方法大致分為使用圖形用戶界面(Graphical User Interface,GUI)和機器人用戶界面(Robot User Interface,RUI)兩種。國內外相關學者在這些領域做了大量的研究,如郭松基于Unity3D游戲開發平臺,設計了一款面向廣大消費者的3D虛擬試衣系統。首先利用Unity3D軟件的布料系統,隨后構造基本碰撞球體,重組人體力學碰撞模型,在力學仿真環境中提高了用戶的真實體驗度。吳鈴等提出了一種利用BVH(Biovision Hierarchy)文件驅動三維人體動畫的方法,在OpenGL軟件中使用三維模型構建人體動畫,實現了三維人體動畫的模擬。Li等提出了一種根據上下文的手勢生成方法,將中文手語文本翻譯成虛擬動畫,具有較高的準確度和可理解性,為耳聾人群獲得信息和服務提供了便利。陳姝等提出了一種實時的人體三維動畫方法,該方法基于H-Anim標準,首先研究了人體肢體層次結構,接著重構并計算了由Kinect獲取的運動數據,最后根據關節旋轉矩陣對三維虛擬人物進行驅動。結果表明,所提算法能夠精確地實現人體運動的重構。彭剛等基于超聲波測距技術介紹了3D輸入設備的設計原理,采用渡越時間測量結合自動增益控制的方法,經過空間解析幾何運算,確定輸入設備在空間坐標系中的位置和姿態,根據按鍵所處的狀態確定要實現的操作。
盡管以上方法均可以生成理想的動畫序列,但通常采用GUI方法使用鼠標對3D動畫模型進行調整時,其模型越復雜,需要消耗的時間也越長,動畫制作效率較低;使用RUI方法雖然可以將機器人的移動輸入為3D模型的運動,甚至可以復制細微的動作,但除了類人動物之外(例如動物和幻想生物)的3D模型輸入難度較大,對動畫制作者水平要求較高。因此,為了克服上述兩種方法的弊端,研究根據人體上肢運動角度范圍,開發了一種基于運動捕捉的多自由度機械臂輸入設備。以Unity3D為開發平臺,通過GUI和RUI兩種方法對虛擬人物模型的不同動作姿勢進行生成,對比兩種方法耗費的時間,對該設備的有效性進行實驗驗證。
關鍵幀動畫提取方法是三維動畫視頻生成的一種常見的基本方法。所謂關鍵幀動畫,就是將動畫中關鍵動作所在的那一幀指定為關鍵幀。關鍵幀是對整個動畫序列的總結和概括,在相鄰兩個關鍵幀之間的部分稱為中間幀或內插幀,可以采用特定的插值方法計算得到,從而使動畫達到比較流暢的效果。利用該方法生成動畫的過程如圖1所示。由圖1可知,首先指定兩個關鍵幀frame A和frame B作為動畫序列的開始狀態和結束狀態,由計算機在兩個關鍵幀之間插入空白幀。通常在設置關鍵幀時,需要使用鼠標或鍵盤來對3D模型姿勢進行調整來達到預期的效果。當前,關鍵幀提取方法主要基于聚類算法、優化算法和曲線算法三種。在內插幀則一般使用線性插補和貝塞爾曲線插補的方法,并且可以進行精準控制,如勻速運動、加速運動,從開始到結束的平穩運動或劇烈運動。

圖1 關鍵幀動畫
利用運動捕捉技術生成動畫通常是將傳感器放置在表演者具有運動特征的部位(例如人體關節)上,將傳感器運動軌跡轉化為抽象運動,使三維虛擬人物擁有同步的動畫動作,從而生成預期的動畫序列。目前,常見的運動捕捉技術可分為電磁式、機械式、光學式和聲學式四種。采用運動捕捉方法制作動畫的實施案例如圖2所示。由圖2可知,實施案例效果逼真流暢,還原度較高,但其運動幅度有限,如果是難度較大的動作,對于實驗者要求則較高。

圖2 運動捕捉技術
通常使用GUI方法生成關鍵幀動畫時,需要通過使用鼠標或鍵盤等調整虛擬人物的動作來生成理想的動畫序列,對操作者熟練度和專業性要求較高。使用RUI方法生成動畫序列時,用戶將機器人作為動作姿勢的輸入設備與計算機端3D動畫模型實時同步,通過改變機器人的狀態生成理想的動畫序列,RUI方法示意圖如圖3所示。

圖3 RUI方法示意圖
研究根據人體手臂關節實際運動角度范圍,開發了一種可以與3D模型同步運動的多自由度機械臂作為動畫制作的輸入設備,其三維模型及實物圖分別如圖4所示。在三維模型中,分別在肩部和腕部設有2個自由度,肘部設有1個自由度。在圖4a中,①代表電機,安裝在模型的端口及關節處,為設備的正常工作提供必要的動力;②代表模型骨架,用于模擬人體手臂骨骼并固定電機及傳感設備。另外,由于角速度傳感器或角度傳感器僅能檢測當前角速度或角度,而加速度傳感器可以檢測到相對于地面的角度,因此研究采用加速度傳感器作為數據輸入。在圖4b中,電機選用Tower Pro Pte Ltd公司的微型電機SG-90,骨架使用ABS樹脂材料通過3D打印進行制造,加速度傳感器型號選用KXR94-2050。在機械臂伸展狀態下,其總長度約為275 mm,最大寬度約為90 mm,總重量約為115 g。

圖4 設備模型及實物圖
Unity3D是一個實時3D互動開發平臺,具有Unity Technologies公司開發的以Java、C#或C++作為腳本語言的內置集成開發環境。研究以Unity3D為平臺,以其提供的虛擬人物模型為實驗樣本,對虛擬人物的動作姿勢進行生成。該虛擬人物模型的皮膚形狀和骨骼信息如圖5所示。

圖5 虛擬人物模型
與人體手臂關節類似,機械臂的關節同樣存在一定的運動范圍。研究參考日本康復醫學會提供的人體關節運動角度范圍和測量方法,比較了人體上肢關節參考運動角度范圍和該機械臂輸入設備的運動角度范圍,如表1所示。

表1 人體關節與機械臂運動角度范圍比較
虛擬人物模型初始及預生成姿勢如圖6、圖7所示。在設置3D虛擬人物模型的初始姿勢(見圖6a)后,根據人體上肢的基本運動形式,選取了人體上肢常見的5種動作姿勢作為預生成姿勢(見圖6b~圖6c、圖7a~圖7c)。實驗者分別使用RUI和GUI兩種方法對5種動作進行生成,分別記錄花費的時間并對比,步驟如下:
(1)受試者用3 min來熟悉實驗設備和操作流程。
(2)受試者根據給定的姿勢b,使用機械臂輸入設備進行動作的生成。
(3)在完成姿勢b的同時,受試者可查看姿勢c的動作。隨后,使用同樣的方法在動作b的基礎上進行動作c的生成。
(4)重復上述(1)到(3)的步驟,直至5個預生成姿勢全部完成,統計時間并記錄。
(5)受試者使用GUI的方法,進行上述(1)到(4)的步驟并計時。
實驗邀請5位受試者(分別記為A,B,C,D和E)進行試驗,記錄其Unity3D使用經驗的有無,實驗結果如表2所示。其中,“生成每個姿勢所需時間”下方的箭頭表示兩種動作的轉變。由表2可知,相較于GUI方法中鼠標操作生成規定動作姿勢,使用研究設計的多自由度機械臂輸入設備完成以上5種相同動作所需時間均有不同程度的縮短,分別為使用GUI方法的0.52倍、0.6倍、0.38倍、0.22倍和0.47倍;另外,對于從未使用過Unity3D軟件的受試者D和E,使用該機械臂輸入設備花費的時間明顯較短,這表明對于普通用戶而言,使用該機械臂輸入設備完成指定的動畫序列更為簡單便捷,效果更為直觀。

表2 實驗結果對比

圖6 虛擬人物模型初始及預生成姿勢(a~c)

圖7 虛擬人物模型預生成姿勢(d~f)
研究根據人體上肢運動角度范圍,設計了一種基于運動捕捉的多自由度機械臂輸入設備,通過GUI和RUI兩種方法生成5種相同的動作姿勢,對兩種方法花費的時間進行了對比。結果表明,使用該機械臂輸入設備對于規定動作的生成更為迅速和便捷,這一結果在沒有Unity3D使用經驗的受試者身上更為顯著。該機械臂輸入設備的成功應用為動畫制作領域的研究提供了一個較好的案例,同時也可將該方案應用于康復訓練、游戲開發和影視動畫等領域。