沈一帆
摘 要 目前在動畫制作中,存在有交互動畫制作方法繁瑣、相關軟件和插件的局限、對從業人員制作能力要求高等問題。為此提出一種基于TCP通訊協議實現Processing控制Maya制作交互動畫的技術。該技術結合Processing簡單易學又功能強大的優勢,利用TCP通訊方法和MEL語言控制Maya的方法,可有效得提高交互動畫制作效率,拓寬交互動畫制作思路,推動交互動畫制作技術的發展。實驗結果表明,該技術實際應用切實可行,在數字媒體行業中可得到廣泛的應用。
【關鍵詞】Processing Maya 交互動畫 MEL語言
1 引言
隨著計算機技術的迅猛發展,數字化交互的展現形式應運而生。其中交互動畫因其帶給人們極其豐富的視覺體驗和交互體驗,其制作的需求越來越大。其制作內容也變化多端,特別是隨著AR/VR/MR的興起,動畫和虛擬現實場景的結合成為一種趨勢,觀眾更喜歡互動的觀影方式,這帶來了動畫制作技術上的一次全新的革命。對于交互動畫而言,市場需求越來越大,對其質量要求也越來越高。然而相關軟件和插件沒有很好得針對目前的交互動畫需求做更新、完善,制作方法繁瑣并且調控不精準、效果不理想。其次,對制作人員也提出很大的要求。一般交互動畫制作需要程序的介入,而且需要美術、設計等知識。就以Maya動畫而言,會使用Maya軟件的美工工作者不容易掌握計算機編程知識,而懂得編程的人員又不容易結合藝術、美工等方面的知識。所以制作交互動畫對于從業者而言難度較大。
依照市場需求,既要做出交互效果,又要畫面精美,細節豐富的交互動畫,可借助三維動畫軟件。目前三維動畫軟件中最具代表的是Maya。Maya是AUTODESK公司推出的全球頂級三維動畫軟件,它集模型、動畫、渲染、動力學、特效等創作工具于一體。同時Maya擁有全套開發動畫的工具,界面友好,操作容易,使得制作動畫更加全面、快捷,風格更加多樣。但是Maya制作交互動畫缺少相關模塊支持,插件同樣有相當大的局限性,不易制作。
Processing是一款適用于圖形與動畫設計的開源編程語言和開放平臺。它的語言極其簡潔高效,可方便得了解學習并創作互動藝術。其開源性使學習使用非常便捷快速,且相關社區相當完善,相關開發的第三方庫(library)也非常豐富。總之,用戶不用掌握很深奧的編程知識也可得到富有創意的圖形藝術或是搭建互動平臺。但是Processing做編輯動畫或是渲染出精美的圖形圖像的工作則是一件非常困難的事情。
因此,研究一種新的高效制作交互動畫的技術就成為一個重要的研究方向。本文提出一種基于TCP通訊協議實現Processing控制Maya制作交互動畫的技術并對其基本實現原理和實現技術做了闡述。最后用該技術做了兩個動畫實例并做了簡單分析。
2 基本原理
Maya傳統的動畫制作流程是借助Maya自帶的動畫工具或模塊,還有強大的腳本工具MEL。MEL語言是Maya內嵌的腳本語言,可直接調用Maya的命令,控制其工作流程。幾乎所有的控制動畫的命令、工作流程都可以調用相應的MEL語句實現。如在場景中生成一個立方體cube,可在腳本編輯器(Script Editor)中調用polyCube命令便得到結果。又如修改立方體的旋轉值,調用rotate命令即可實現。在MEL控制系統中,可以接收外部程序發送的數據作為MEL語句的執行語句。通過這個特性,可將Maya的操作轉化為外部軟件的操作,即外部程序利用TCP通訊發送Maya的MEL 指令信息給Maya軟件端,待Maya接收后,執行對應的MEL語句,即可實現外部程序控制Maya操作的效果。
Processing能夠快速創建充滿創意的圖形圖案或是互動藝術,如音頻可視化、分形圖形、互動影像等。為了能夠把Processing程序中的數據與Maya共享,使用官方的net庫創建通訊橋梁,借此發送數據。這樣,就把Processing處理好的動畫數據發送給Maya,通過MEL語句的執行,生成互動模型或場景、動畫。技術原理如圖1所示。
這樣一來既解決了Maya軟件對于制作與聲音、影像等信息互相作用的交互動畫的不便捷性,又彌補了Processing對于畫面表現和動畫控制上的不足,讓制作交互動畫更方便快捷且效果出色。
3 Processing控制Maya制作交互動畫實現技術
3.1 Maya場景搭建
制作動畫首要的工作依然是Maya的場景搭建。首先需建立場景,創建模型,賦予材質,建立燈光攝像機等,依據動畫劇本和相關設計方案整理場景中的資源。接著是做好通訊模型的準備。考慮到Processing間接控制動畫,因此,需要準備好相關模型或對象的屬性,如模型的命名等,這樣才能確保通訊順利,控制參數無誤。
3.2 通訊的準備
為了能夠實現數據通訊,必須建立好Maya和Processing兩個應用程序的通訊端口。對于Maya,通過使用MEL語言可方便地打開通訊端口,即 “commandport” 命令。此命令允許Maya應用程序從其他進程接收MEL命令行并執行,可實現其他進程間接控制Maya操作。例如,執行MEL語句 commandPort -n "localhost:12000",打開Maya進程的一個TCP端口,端口號為12000,等待接收其他進程發送的信息。對于Processing,使用官方的net庫來建立TCP通訊。在Processing官方IDE中輸入:
import processing.net.*;
Client client;
client = new Client(this, "127.0.0.1", 12000);
本機的12000端口便是Processing準備輸出數據用的遠程端口號,即Maya程序待接收的端口號。這個端口號理論上除系統預留的端口號外都可以設置。值得注意的是,因TCP協議的面向連接性,故需在通訊前服務器和客戶端都必須建立好通訊端口。
3.3 創建Processing程序
Processing社區提供大量的庫,極大地方便了應用開發,比如使用sound庫或video庫可以輕松創建視音頻互動交互的作品。在程序邏輯中,必定會有定義圖形效果的數據,可以利用這些數據作為Maya動畫的根據,定義Maya相關對象的屬性值,便可得到和processing中一致的互動效果。如將一采集的數據實時寫入Maya的相應MEL語句中。這些語句分別對某對象的縮放值、關鍵幀動畫進行控制。部分程序如下:
//將Maya MEL語句通過TCP協議傳遞給Maya
client.write("scale -a -os "+"1"+""+rr+""+"1"+" \"group1\";\n");
client.write("setKeyframe -breakdown 0 |group1.scale;\n");
client.write("currentTime "+ i +" ;\n");
i++;
其中,scale命令控制模型的縮放值,setKeyframe命令用來設置關鍵幀,currentTime命令控制當前所在的幀數。再通過client.write()函數發送相應的MEL語句。
其次,運行processing程序需依賴預制的運行機制,即定義setup函數和draw函數。setup() 函數定義應用程序的基本參數,如窗口大小、幀速率、背景顏色等,該函數只在運行期間調用一次并且先于draw()函數調用。假定動畫制作采用24幀每秒的幀速率,所以需在這里定義幀速率24fps。draw()函數定義運行期間的主要邏輯,在運行期間反復執行。因此,采集數據和發送MEL語句的邏輯需寫在draw()函數中。
3.4 動畫的生成
執行Processing程序,Maya自動接收MEL指令,并依次執行,可得到預先設計好的控制效果。建立好初步的關鍵幀動畫之后,應檢查動畫是否存在問題,因為通訊過程中難免會出現不同步或是其他通訊問題導致執行MEL語句出現延遲,語句執行錯誤。也可在此基礎上進行加工修改動畫。修改完畢,通過Maya批渲染(Batch Render)命令渲染序列圖。等待渲染完畢,導入后期合成軟件,如After Effects,設置動畫序列幀速率24fps,進一步修改加工后,即可得到最終的動畫效果。
4 實驗
依照該技術實現兩例動畫效果,一是彈簧模型隨聲音音量大小而伸縮的互動動畫,二是通過動態影像生成三維模型和動畫。
4.1 聲音交互動畫
首先在Maya場景中創建好彈簧模型,注意模型名稱。其次分別準備Maya的TCP端口和Processing 程序端口。編寫Processing檢測聲音音量的程序,將采集到的音量信息進行簡單處理,然后使用client.write()方法將數據整合進MEL腳本中,輸出給Maya端。為了能夠更高效得調試程序,加入簡單的繪畫模塊來反映聲音的數據信息,如在應用程序窗口中繪畫一個圓,圓的縮放大小和音量大小有聯動反映。最后執行Processing程序,會得到如圖2和圖3所示的畫面。
動畫生成后進行批渲染,得到序列圖。再導入后期合成軟件After Effects,將音頻素材拖入合成中,預覽合成,可見視音頻同步,彈簧跟隨聲音大小的變化而伸縮,節奏完全吻合,效果理想。如圖4所示。
4.2 影像交互動畫
設想在一方塊矩陣上創建基于影像的動畫。利用Processing程序創建好80*60*1的方塊矩陣,以矩陣坐標為基礎,設置好每一方塊對應的名字。然后讀取影像每一幀的數據,依次拾取每一像素點的亮度值,并計算出相對應的方塊凸起的參數值。之后按照對應方塊名字把數據傳給Maya,定義Maya中每個方塊具體的位置參數,并打上關鍵幀。這樣一來,便可用影像控制方塊矩陣的動畫。如圖5所示的影像和圖6所示的對應三維場景預覽效果。
5 結束語
計算機技術日新月異,很多軟件平臺或程序語言逐漸成熟,影響力愈加擴大,然而不可能解決項目中的所有問題,三維軟件和編程框架同樣如此。Maya三維軟件可以借助蓬勃發展的編程語言Processing創造有趣生動的互動動畫效果以滿足如今追求互動式體驗為主的動畫市場需要。Processing控制Maya制作交互動畫的技術原理易于理解、掌握,借助Processing以及眾多庫的使用可方便得制作互動類的動畫效果。在此基礎上采用TCP通訊的方法間接調用Maya中的MEL語句,為Maya場景制作模型、動畫、特效等幾乎任何類型的對象,很大程度上提高了制作的速度和質量。該技術也降低了制作交互動畫的門檻,使不懂編程技術的美工人員可以快速搭建交互動畫,使傳統動畫制作技術人員、編程者能方便地建立交互動畫。該技術經過實驗和最終效果的呈現表明其應用切實可行,是一種高效又易學的交互動畫制作技術,具有較高的使用價值。同時其他相關軟件都可參考此技術原理來改進制作方法。
參考文獻
[1]余的的,張毣.三維動畫軟件的應用發展及其技術走勢[J].電子技術與軟件工程,2017(13):65-67.
[2]翟浩澎.Maya三維動畫制作技術[J].藝術研究,2017(03):42-43.
[3]王圣蔚.三維動畫制作Maya技術研究[J].軟件導刊,2010(02):157-158.
[4]李柳君.Processing計算機語言及其程序設計思維在創意設計中的應用[J].湖南包裝,2017(03):59-63.
[5]于海雯.Maya編程技術[J].電腦知識與技術,2013(36).
[6]張寶榮,呂新欣等編著.Maya總動員-動畫編程篇[M].清華大學出版社,2011.
作者單位
吉林藝術學院 吉林省長春市 130000