?

三維建模過程復用MEL腳本研究

2018-04-21 08:10胡曉輝郭建平
科技創新與應用 2018年10期
關鍵詞:三維建模模塊

胡曉輝 郭建平

摘 要:三維建模過程復用是動畫制作過程中常見的操作,傳統的方式是手工建模和手工復制,大量的重復性操作造成了時間和精力的巨大浪費。文中以動畫場景中創建一組旋轉噴泉群為例,通過Maya MEL語言對三維建模過程復用的操作進行程序開發,此外還開發了該MEL腳本的可視化操作界面。經調試,該MEL腳本可快捷實現旋轉噴泉群的參數化建模,對其它三維建模過程復用的MEL腳本開發提供了設計思路。

關鍵詞:Maya;三維建模;復用;MEL語言;模塊

中圖分類號:TP391.4 文獻標志碼:A 文章編號:2095-2945(2018)10-0005-03

Abstract: The reuse of 3D modeling process is a common operation in animation production. The traditional way is manual modeling and manual copying. A large number of repetitive operations have caused a huge waste of time and energy. Taking the creation of a group of rotating fountains in the animation scene as an example, a program is developed for the reuse of 3D modeling process using Maya MEL language. In addition, the visual operation interface of the MEL script is also developed. After debugging, the MEL script can quickly realize the parameterized modeling of the rotating fountain group, and provides the design idea for the MEL script development of other 3D modeling process reuse.

Keywords: Maya; 3D modeling; reusing; MEL language; module

引言

隨著計算機軟硬件技術和計算機圖形學的快速發展,三維動畫制作已經在多個領域推廣開來。Autodesk公司的三維動畫軟件Maya在動畫設計和制作中應用廣泛。Maya的可擴展性較強,MEL語言可以進行Maya命令的擴展和模塊的開發,通過編制MEL腳本,可以大大簡化一些動畫制作過程中的重復性操作,提高了動畫制作效率,節約了大量的人力物體。動畫制作中三維建模過程復用的情況非常常見,完全可以利用MEL腳本實現重復建模和模型的多次重復調用。

1 MEL語言在Maya中的應用

MEL語言和其它程序設計語言一樣是通過命令來實現程序控制的。三維制作軟件Maya可以看作是由MEL命令集與節點組合而成,MEL用來動態的控制過程,節點是靜態的來表現結果。雖然在Maya軟件操作界面中,一般用戶察覺不到在操作過程中對MEL語言的調用和執行,但是實際上所有的Maya操作都離不開MEL語言。

因為MEL語言的單獨命令都只能執行一條程序操作,很少有操作僅僅靠一個獨一的MEL語言命令就能實現的,所以在Maya中,MEL語言的調用都是以MEL腳本的形式進行。根據需要的操作而將多個MEL語言命令組合起來放在一起就構成了一個MEL腳本。將執行特定操作的MEL語言命令集寫入一個數據文件中,那么這個數據文件就是一個腳本文件。MEL腳本的設計者可以定義一個命令來調用和執行這個腳本文件,這個命令是一個Maya中新的命令,也叫做腳本命令,腳本命令和Maya中自帶的命令一樣,還能在其它腳本中調用。Maya中調用這種新的MEL腳本程序,除了可以使用自定義命令來執行,還可以將這個自定義命令添加編輯到Maya系統菜單中,通過鼠標點擊菜單中的該自定義命令關聯到MEL腳本程序執行所需要的操作。

可以通過兩種方法運行MEL腳本,一種是對于那些沒有進行模塊化設計的MEL腳本,這種腳本只是單獨的標準命令集文件,通過調用該腳本直接執行其中的MEL命令,這種MEL腳本多用于功能單一、需要執行的操作不存在動態設置的情況。另一種是可視化腳本調用。將寫成標準命令的MEL腳本通過可視化操作界面執行調用。這樣雖然需要另行制作可視化模塊界面,但是可以通過MEL腳本中的變量設置與關聯,實現在模塊化調用MEL腳本時的動態參數調整和輸入,適合于執行的MEL腳本需要用戶參與變量設置的情況。

2 三維建模過程復用模塊的開發

三維建模過程復用是動畫制作過程中常見的操作。例如在一個動畫制作項目中,劇本中的場景需要創建一組旋轉噴泉群。這組旋轉噴泉群是由多個結構和外形相同的單獨噴泉組成,其中中間的一個噴泉稍大一些,其余噴泉作為小噴泉圓形均布環繞這個大噴泉,這些噴泉在場景中需要一直噴射水花,然后水花落進噴泉的水池里。

這組旋轉噴泉如果在Maya中逐個建模,再手工復制到指定位置費時費力,通過MEL語言編制一段腳本可以實現這個建模過程復用。主要思路和過程是先制作一個三維噴泉模型,把它作為一個整體建模,放置到場景中特定位置,再復制若干個噴泉模型圍繞在這個中央噴泉周圍。建模效果如圖1所示。

創建如圖1中的一組旋轉噴泉群,在這個小場景中,其中的第一個噴泉底座的模型直接建模,周圍的其它噴泉底座模型是通過命令陣列復制而來。噴泉的底座大小、層數都可能變化,噴泉的水流向上噴射的花型、速度、高度也可能不同,這些都需要設置變量參數。這些變量參數可以依據用戶的設計需要輸入,用戶可以快捷方便的通過操作輸入界面創建不同的旋轉噴泉群。

噴泉噴出的水花是向上發射的,圓形擴散,然后在重力的作用下自由落體。這些水花可以用粒子實現,場景中創建一個向上的粒子發射器,擴散的形狀和速度可以通過變量參數控制,噴泉水噴出后,要給粒子增加重力,使得水粒子在重力作用下落回到噴泉池子中。此外,在水落下時還需要設置水粒子與水池中的水進行碰撞。通過上述方式就創建出模擬現實生活場景的噴泉水池。

發射器可以通過以下MEL語句實現:

emitter -pos 0 0 0 -type direction -sro 0 -r 200 -nuv 0 - cye none -spd -cyi l $Fountain_Speed -srn 0 -nsp l - mxd 0 -tsp 0 -mnd 0 -dx 0 -dy l -dz 0 -sp $Fountain_Spread -n myEmitter;

particle -n myParticle;

connectdynamic -em myEmitter myParticle;

語句中的變量$Fountain_Speed用來存儲噴泉水柱噴出的速度值,變量$Fountain_Spread用來存儲噴泉水柱的擴散值,這兩個變量都由用戶在程序腳本模塊的操作界面輸入。

在Maya場景中設置基本重力,定義水粒子運動受重力場影響。水粒子與水池中的水進行碰撞可以利用循環語句來反復調用,保證噴泉不斷水流不斷,關鍵性腳本語句是:

int $j=0;

for ($j=0;$j<5;$j++)

{select -r myParticle;

select -add ("surface"+$j);

collision -r l -f 0 ("surface"+$j);

connectdynamic -c ("surface"+$j) myParticle;

event -n ("event"+$j) -die 0 -count 0 myParticle;

event -name ("event"+$j) -e -die l myPartical;}

制作完單一的噴泉模型之后,再利用MEL語言實現多個噴泉的陣列圓形環繞,同樣采用一個for循環來實現,關鍵性腳本語句是:

int $j;

for ($j=1;$j<13;$j++)

{$Exp=$Exp+"group"+$j+".rotateY"="+$Rotate_Speed+"*frame+"+($j-1)*(360/$num)+";\nif ("+($j%2)+"==0)\n{\nif(frame%(10/"+$Glitter_Speed+")<("+$Glitter_Speed+"*2)))\ngroup"+$j+".visibility=0;\nelse\ngroup"+$j+".visibility=1;\n}\nelse\ngroup"+$j+"..visibility=1;\n";}

expression -s $exp -o "" -uc all -ae 1 -n experssionl;

這段語句可以根據用戶設置,實現旋轉噴泉群的建模,噴泉可以實現旋轉。語句中的變量$Rotate_Speed控制旋轉速度。

旋轉噴泉群建模腳本制作完成之后,再創建一個可視化模塊界面與這段腳本程序相互關聯,通過該模塊界面可直接調用和運行旋轉噴泉群建模腳本。旋轉噴泉群的建模效果都可以通過界面進行直觀快捷的設置,創建的旋轉噴泉群模型經過測試如果不符合要求,還可以對參數進行修改重新建模,直至滿意。旋轉噴泉群建模的制作界面如圖2所示。

這個可視化界面中的radius參數用來控制噴泉陣列的圓周半徑,fountain Speed參數用來控制水柱的噴射速度,fountain Spread參數控制水的擴散范圍,num參數控制噴泉陣列的數量。設置好這些參數后點擊“create”即可創建旋轉噴泉群,“delete”按鈕可以刪除不滿意的模型。Rotate Speed用來控制圓周的噴泉旋轉速度,glitter Speed用來控制噴泉群的動作頻率。設置好之后點擊“anim”可以運行動畫。

3 結束語

文中利用MEL語言制作了三維建模過程的復用的Maya二次開發腳本,該腳本可以實現旋轉噴泉群模型的批量建模,總結步驟如下:

首先,根據場景需要對建模過程進行分析;其次,運用MEL腳本實現建模和模型的復用,一些模型的動態數據可以設計成變量由用戶控制;最后,制作這個三維建模過程復用模塊的可視化制作界面,通過這個界面實現最終的三維建模。

在動畫制作過程中遇到的其它類型的模型需要建模和復用的,都可以通過這個思路編寫MEL腳本模塊來實現。

參考文獻:

[1]Mark R. Wilkins. Maya動畫師MEL腳本編程全攻略[M].北京:電子工業出版社,2004.

[2]陳清,韓杰,楊娟.電腦動畫設計與制作[M].濟南:山東美術出版社,2006.

[3]戴健文.面向真實感渲染的材質轉換系統與優化[D].杭州:浙江大學,2016.

[4]何偉.MEL腳本語言在數字集群動畫中的設計與實現[D].北京:北京工業大學,2012.

[5]賀瞿.基于動力學原理的Maya粒子特效插件[D].上海:上海交通大學,2011.

[6]李志豪,李才應.Maya命令參考大全[M].北京:兵器工業出版社,2006.

[7]劉娟娟.基于MayaMEL語言的數字媒體動畫控制技術的研究[J].電子技術與軟件工程,2015(1):115.

[8]羅漢.MayaMEL動畫編程從入門到精通[M].北京:兵器工業出版社,2005.

[9]孟詩涵.創意材質在Maya動畫創作中的表現研究[D].長春:東北師范大學,2016.

[10]田玉婷.Maya的MEL語言在項目中的開發應用[J].黑龍江科技信息,2007(22):100.

[11]王澄宇.Maya腳本應用手冊:表達式與MEL語言[M].北京:人民郵電出版社,2013.

[12]吳文哲.MEL語言在Maya場景設計中的應用[J].數字技術與應用,2010(3):65-67.

[13]夏航.MAYA軟件中使用MEL腳本設計粒子碰撞[J].中國現代教育裝備,2010(17):31-34.

[14]徐冰.數字媒體動畫控制技術研究[J].電子制作,2015(4):109-110.

[15]于海雯.Maya編程技術[J].電腦知識與技術,2013(36):8409-8410.

[16]胡曉輝,萬嵩.基于軟件工程及其模型的課件開發研究[J].高教學刊,2015(23):95-96.

猜你喜歡
三維建模模塊
Module 2 Highlights of My Senior Year
Module 5 Ethnic Culture
Module 6 The World’s Cultural Heritage
Module 4 Music Born in America
農用風力發電機葉片設計
數控仿真系統三維建模技術研究
基于GIS的網絡三維系統的構建及應用
三維建模技術在家畜器官建模中的應用
必修模塊相關知識過關訓練
基于CATIA的多功能運動輪椅三維數字化建模及其優化設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合