王濤 范坤明
摘 要:三維動畫制作及教學內容中,角色的動作生成是一個非常重要的環節。筆者提出利用Kinect和3DSMAX整合技術,通過Kinect的動作捕捉技術,使用戶的動作與模型的動作產生聯動,生成關鍵幀,然后將這些關鍵幀制作動畫,并把這種方法運用到實際教學中。
關鍵詞:Kinect;3DSMAX;三維動畫
截至2014年底我國動漫產業總產值已經超過1000億元,國內核心二次元用戶規模達到4984萬人,而泛二次元用戶規模達到1億人。隨著國內動漫行業規模的持續擴大,動畫電影,特別是三維動畫電影作品越來越多地受到投資者和觀眾的青睞,涌現了一大批諸如《瘋狂動物城》《功夫熊貓3》《西游記之大圣歸來》等優秀作品,具有廣闊的發展前景。受此影響,國內對于三維動畫制作人才的需求也在逐年增加。各大高校也把三維動畫制作引入課堂,開設了相關課程進行教學。
如今三維動畫制作教學的主要內容包括角色和場景制作兩大部分。針對角色制作部分又細分為角色模型創建、貼圖材質繪制、骨骼綁定及蒙皮、動作制作及關鍵幀生成、后期動畫合成等幾個模塊。其中針對角色動作制作及關鍵幀生成的內容,課程教學的關鍵在于教授學生如何制作角色動作,并利用關鍵幀記錄角色的運動過程。所謂關鍵幀,是指角色或者物體運動或變化中的關鍵動作所處的那一幀。在傳統教學中,學生根據事前決定的故事內容,通過手動調整角色在某一時刻各個骨骼關節的位置制作角色的動作,并通過軟件將此幀的內容記錄下來作為一幀關鍵幀。重復以上操作,在完成所有關鍵幀之后,學生可以通過軟件自動創建關鍵幀之間的過渡幀,從而將角色的動作連貫起來,合成完整的動畫。在實際的教學過程中我們發現,由于缺乏經驗,學生往往需要花費大量的時間調節角色的動作,結果仍然經常出現動作不到位甚至變形的情況,大大影響了動畫制作的效率和最終結果。
因此,筆者利用Kinect和3DSMAX整合技術,提出一種三維動畫角色動作制作過程中的教學新方法。通過讓學生使用Kinect設備識別自身的骨骼關節,將其與3DSmax中預先制作好的模型骨骼關節進行匹配。通過Kinect動作捕捉技術捕捉學生動作,將動作映射到上面使模型產生聯動,再由3DSMAX記錄為關鍵幀,然后利用這些關鍵幀生成過渡幀,最終合成動畫。
1 Kinect原理簡介
Kinect是一款由微軟研發,最早針對XBOX游戲平臺的體感周邊外設產品。[1]憑借其自身卓越的動作捕捉和識別性能和相對低廉的成本,迅速為人們所關注和熟識。Kinect不需要使用任何控制器,只需要通過內置的紅外投影機和紅外攝像頭接收紅外光點陣[2]生成深度數據圖,然后對得到的深度數據圖中通過邊緣檢測、噪聲閾值處理等操作區分背景和人體輪廓,將人物從背景圖像中剝離出來。接著Kinect將人物輪廓中的人體部位信息與預存在機器中的人體部位學習樣本進行匹配,識別不同的人體部位和關節位置。對于一些如手、腳等可能被遮擋的身體部位,Kinect可以通過其他關節推算被遮檔部位的關節位置從而得到完整的骨骼關節圖,最后對這些骨骼關節點的運動進行跟蹤,實時記錄人體的關節運動變化情況。[3]如圖1所示,左圖為Kinect拍攝到的彩色圖像,右半部分為得到的深度數據圖。圖中綠色線條為kinect識別出的人體骨骼信息。從結果我們可以看出人體與背景被清晰地區分開來,人體的各部分信息及骨骼關節也被清楚地識別了出來。
2 3DSMAX原理簡介
3D Studio Max是當今主流的基于PC系統的三維動畫渲染和制作軟件,廣泛應用于三維模型、三維動畫制作過程中。[4]在實際的教學中,我們利用3DSMAX軟件完成三維角色模型制作、動作編輯、動畫合成等一系列操作,一般包括以下幾個方面:第一,角色模型制作,俗稱建模;第二,為模型增加材質和紋理貼圖;第三,為角色綁定骨骼,蒙皮并根據動畫內容制作角色動作的關鍵幀;第四,利用關鍵楨生成過渡幀;第五,完成后期動畫合成。關于角色骨骼綁定,3DSMAX軟件主要采用BIPED骨骼和BONE骨骼兩種骨骼。BIPED骨骼具有一個完整的人形形態,具有頭、頸、軀干、四肢等各個部分,適合表示包括人類在內的兩足生物的骨骼。BONE骨骼為單獨分離的骨骼片段,用戶根據角色的形態和實際需要通過連接不同的骨骼片段組成一副完整的骨骼關節模型,從而實現形狀各異的生物的骨骼模擬。用戶根據實際情況選擇BIPED骨骼和BONE骨骼來綁定角色模型。
3 Kinect和3DSMAX整合技術
Kinect與3DSMAX整合技術的核心原理是將人視為控制器,利用Kinect采集人體信息,識別人體的骨骼和關節。另外,利用3DSMAX軟件根據動畫內容預先制作角色模型并綁定骨骼,將骨骼和關節與Kinect得到的人體骨骼和關節一一匹配,形成關聯映射。用戶根據動畫內容,完成各種動作,Kinect記錄用戶的動作,并將骨骼關節信息傳輸給3DSMAX軟件,使角色模型的動作也產生對應的變化,即由用戶的動作來操縱角色模型的動作,從而達到用戶動作與角色動作的互動與同步。因為Kinect無法直接與3DSMAX兼容,所以我們采用“Kinect+OpenNI+3DSMAX”系統,實現Kinect與3DSMAX之間的數據通信。OpenNI由一組可用來編寫通用自然交互應用的接口組成,通過標準化的通信方式,實現軟件的視頻、音頻數據的交互。
接下來,我們通過3dsmax自帶的儲存關鍵幀功能,編寫腳本自動記錄下一系列關鍵幀。本文中筆者采用每隔一段時間自動設置關鍵幀的辦法記錄使用者的動作。假設整個動作時間為T幀,時間間隔為t幀(0
圖2,左圖為Kinect記錄的使用者的動作深度圖像,右圖為3dsmax中模型的動作圖。從結果可以看出,右圖中模型動作與使用者動作一致,且能隨使用者動作變化發生相對應的改變。
4 在實際的教學中的應用
為了驗證新方法在實際教學中的效果,我(下轉第頁)(上接第頁)們針對動畫專業兩個年級學生(每個年級50人左右),分別采取傳統的三維動畫教學方法和Kinect和3DSMAX整合技術的教學方法,在一學期的時間內完成角色骨骼綁定、蒙皮、動作制作等內容的教學。課堂上使用3DSMAX2014版本,主要使用biped骨骼模型進行試驗。制作一個簡單動作的角色動畫(跑步、行走),使用傳統的教學方法,手動調節角色動作的學生大約需要1個小時,而使用Kinect和3DSMAX整合技術的學生只需要5~10分鐘即可完成。從制作效果來看,基于Kinect和3DSMAX整合技術制作出的模型動作略好于使用傳統教學制作出的動作。由此可見,采用Kinect和3DSMAX整合技術,能夠在保證角色動作質量的基礎上,節省學生花費的時間,提高學生學習的效率和積極性。利用Kinect和3DSMAX整合技術,我們在教學中收到了很好的效果。
5 結語
相比于傳統的動畫制作技術,基于Kinect與3DSMAX整合技術能夠大大提高三維動畫學習和制作的效率。以后的研究方向包括如何利用Kinect與3DSMAX整合技術完成人形角色的復雜動作以及非人形角色的動作模擬,進一步提高識別和制作動作的準確性。
參考文獻:
[1] 劉晉鋼,劉衛斌,劉晉霞.Kinect與Unity3D數據整合技術在體感游戲中的應用研究[J].電腦開發與應用,2014.
[2] 鄭立國,羅江林,許舸.基于Kinect的動作捕捉系統的實現[J].吉林大學學報(工學版),2013.
[3] 鄔冠上.基于Kinect的交互式健身游戲的設計與實現[D].中國科學院大學(工程管理與信息技術學院),2014.
[4] 黃靜,張紅忠. 3DSMAX在虛擬現實中的應用[J].測繪與空間地理信息,2013.
作者簡介:王濤(1984—),男,山西臨縣人,博士,講師,研究方向:數字藝術,視覺傳達。
通訊作者:趙怡,四川大學藝術學院教師。