這篇教程教腳本之家的朋友們用MAYA MEL打造撲克動畫,教程難度中等。主要像腳本之家的朋友們介紹MAYA MEL的使用方法。希望大家喜歡這篇教程。先看看效果截圖:
具體制作步驟如下:
1、創建一個多邊形的Cube,進行三個軸的擠壓操作後,得到下圖效果。(圖01)
圖01
2、對多邊形進行加線,這樣便於制作“倒角”效果。(圖02)
圖02
3、對模型進行UV平面投射處理。(圖03)
圖03
4、給撲克模型賜予新材質lambert。(圖04)
圖04
5、對lambert的color貼圖,這裡是貼圖文件(來源於zcool網)。(圖05)
圖05
6、對2D坐標進行調整後。(圖06)
圖06
7、進行平滑處理,對模型執行2次smooth命令。(圖07)
圖07
8、這一步很重要,把模型的軸吸附在模型“腳底”,並且在世界中心凍結屬性,這樣便於做動畫處理。(圖08)
圖08
進行場景搭建
1、選擇撲克模型,ctrl+d復制,向X方向平移1個單位。(圖09)
圖09
2、立即使用shift+d進行智能變換復制,復制50個。(圖10)
圖10
進行動畫設置
1、選擇所有撲克模型,在第1幀定義動畫rotateZ為-89.333。(圖11)
圖11
2、選擇所有撲克模型,在第24幀定義動畫rotateZ為89.333。
MEL提取
在這裡我們的思路是做措關鍵幀處理。因為關鍵幀可以在DopeSheet列表中調整,但是50個或者100甚至1000個物體措關鍵幀的話,一個一個來做並不是明智之舉,所以在這裡我們選擇使用MEL來處理這個問題。
1、首先打開DopeSheet菜單,我們會看到如下圖所示關鍵幀列表。(圖12)
圖12
2、我們需要提取2行MEL:一個是選擇關鍵幀的MEL,一個是移動關鍵幀的MEL。如果能得到這兩行MEL,操作一個模型,那麼我們就可以操作n個模型。所以我們需要打開Script Editor觀察操作與執行結果腳本。(圖13)
圖13
3、首先我們在DopeSheet中選擇2個關鍵幀,並觀察Script Editor中反饋信息。(圖14)
圖14
4、我們得到了三行腳本:
selectKey -add -k -t 1 -t 24 pCube2_rotateX ;
selectKey -add -k -t 1 -t 24 pCube2_rotateY ;
selectKey -add -k -t 1 -t 24 pCube2_rotateZ ;
5、我們在DopeSheet中移動關鍵幀,向右用鼠標中鍵移動關鍵幀1格,並觀察ScriptEditor反饋。(圖15)
圖15
6、我們又得到3行腳本:
keyframe -e -iub true -r -o over -tc 1 pCube2_rotateX ;
keyframe -e -iub true -r -o over -tc 1 pCube2_rotateY ;
keyframe -e -iub true -r -o over -tc 1 pCube2_rotateZ ;
進行MEL篩選與編輯
雖然我們通過提取腳本行可以得到一些和移動關鍵幀相關的指令,但是有一些並不實用,所以我們要進行提取和精煉。
1、一下句子中X軸和Y軸雖然有動畫,但是並沒有用。有用的是我們的Z軸動畫:
selectKey -add -k -t 1 -t 24 pCube2_rotateX ;
selectKey -add -k -t 1 -t 24 pCube2_rotateY ;
selectKey -add -k -t 1 -t 24 pCube2_rotateZ ;
keyframe -e -iub true -r -o over -tc 1 pCube2_rotateX ;
keyframe -e -iub true -r -o over -tc 1 pCube2_rotateY ;
keyframe -e -iub true -r -o over -tc 1 pCube2_rotateZ ;
所以我們要對其進行精簡。可以精簡為:
selectKey -add -k -t 1 -t 24 pCube2_rotateZ ;
keyframe -e -iub true -r -o over -tc 1 pCube2_rotateZ ;只保留這兩句即可。
2、selectKey -add -k -t 1 -t 24 pCube2_rotateZ ;
keyframe -e -iub true -r -o over -tc 1 pCube2_rotateZ ;
通過腳本分析,我們可以看到,以上腳本只是對pCube2這個物體的旋轉Z軸進行操作,並沒有通用性,所以我們需要借助循環語法for來進行操作。
//For循環基本語法
int $i;
for($i=起始;$i<結束;$i++)
{做什麼事;}
3、因為我們要對選擇物體操作,所以需要進行字符串數組控制語法
string $selections[]=`ls -sl`;
之後我們直接提取$selections[$i]變量就可以了。