摘 要:Maya是CG動畫制作人員的生產利器,其功能基本滿足三維動畫制作的要求,但Maya在個別功能上略有瑕疵,本文針對Maya的批量渲染功能進行了一定的優化和改進操作,以提高實際工作效率。
關鍵詞:Maya;三維動畫渲染;CG
中圖分類號:TP391.9 文獻標識碼:A 文章編號:1674-7712 (2014) 16-0000-01
Maya是三維動畫制作軟件,現今被廣泛應用在CG電影及廣告的制作中,Maya的渲染功能有較好的穩定性和較為出色的光影仿真性。但是,筆者在日常的工作中發現,在使用Maya的批量渲染功能(Render模塊->BatchRender菜單項)時常會在最終渲染前出現較長的等待時間,無論Maya的場景復雜與否、亦或Maya場景有無大量動力學解算時,都會出現這樣的問題。為此,筆者針對此問題的癥結進行了分析,并制作了相應的腳本工具來進行優化解決,具體步驟如下:
1.首先分析一下Maya后臺渲染的整個流程,如圖1。
圖1 Maya的后臺渲染流程圖
2.根據以上的結論,如果我們渲染的時候沒有動力學系統的參與,或場景在前期渲染起始階段有大量的貼圖進行內存吞吐的話,那么我們就可以編輯一個批量處理的Mel腳本進行“人為”的逐幀渲染,其效果相當于我們點擊Render(模塊)->RenderCurrent(菜單項)的效果,這樣可以大大提高渲染的速度,減少渲染的等待時間。
3.Maya相應的Mel腳本編輯如下(注:“//”后為注釋部分):
int $total=144; //總的渲染幀數,這里“144”是筆者設置的總渲染幀數,讀者可以自行修改
int $shift=100; //渲染的起始幀數,這里“100”是筆者設置的起始幀數,讀者可以自行修改
string $imageName;
for(int $i=1;$i<=$total;$i++)
{
$imageName=\"d:/camL02/qiankun_camL02.\"+$i; //圖片的存放路徑及圖片名稱的前綴
renderIntoNewWindow render; //開啟一個新的渲染窗口
catch(eval(renderWindowSaveImageCallback(\"renderView\",$imageName,`getAttr defaultRenderGlobals.imageFormat`))); //調用渲染回調函數進行逐屏的渲染
currentTime($i+$shift);//當前幀數,遞增變化的
}
4.以上Mel腳本根據讀者的具體場景編寫好后,要在硬盤上建立相應的路徑(如本文所示的d:/camL02/),否則圖片輸出后無法保存。最后將相應的腳本填寫到Maya的ScriptEditor中執行(如圖2紅框中所示),即可看到類似于Maya中RenderCurrent(命令)渲染的功能,并可以批量執行,這樣就極大地提高了渲染的速度,筆者測試過極端情況下可以節省10倍以上的渲染時間。
圖2 Maya腳本編輯器(ScriptEditor)執行結果
5.結束語。由于Maya的版本更新,可能相應的Mel命令有所變化,請以您實際使用的版本為準,以上為本人在實際工作中的經驗所談,如有疏漏之處還望不吝指正!
參考文獻:
[1]鄧綻蕾,談國新.基于LSF的MAYA集群渲染研究及實現[J].中國會議,2007(10).
[2]姜雪姣.基于RenderMan規范的真實感渲染光源建模與實現[D].山東大學,2013:11-30.
[3]靳宇,雷振宇,王建雄.影視動畫三維CG制作流程研究[J].現代電影技術,2013(11).
[4]楊磊.GPU的發展及Maya即時渲染器FurryBall應用初探[J].現代電影技術,2011(03).
[5]姚景益.淺談數字動畫小型集群渲染的原理和硬件搭配[J].三江學院學報,2011(09).
[6]徐晉非.從IMAX 3D電影《大明宮傳奇》談立體技術與特效[J].現代電影技術,2011(02).
[7]曹永正,張海江,宋桂展.集群渲染系統遠程管理平臺的設計與實現[J].實驗室科學,2011(04).