Maya教程:撲克波浪動畫特效解析(3)
2、選擇所有撲克模型,在第24幀定義動畫rotateZ為89.333。
MEL提取
在這里我們的思路是做措關鍵幀處理。因為關鍵幀可以在DopeSheet列表中調整,但是50個或者100甚至1000個物體措關鍵幀的話,一個一個來做并不是明智之舉,所以在這里我們選擇使用MEL來處理這個問題。
1、首先打開DopeSheet菜單,我們會看到如下圖所示關鍵幀列表。(圖12)
圖12
2、我們需要提取2行MEL:一個是選擇關鍵幀的MEL,一個是移動關鍵幀的MEL。如果能得到這兩行MEL,操作一個模型,那么我們就可以操作n個模型。所以我們需要打開Script Editor觀察操作與執(zhí)行結果腳本。(圖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軸進行操作,并沒有通用性,所以我們需要借助循環(huán)語法for來進行操作。
//For循環(huán)基本語法
int $i;
for($i=起始;$i<結束;$i++)
{做什么事;}
3、因為我們要對選擇物體操作,所以需要進行字符串數(shù)組控制語法
string $selections[]=`ls -sl`;
之后我們直接提取$selections[$i]變量就可以了。
4、進行整合就是
string $selections[]=`ls -sl`;
int $i;
for($i=1;$i<50;$i++)
{
selectKey -add -k -t 1 -t 24 pCube2_rotateZ ;
keyframe -e -iub true -r -o over -tc 1 pCube2_rotateZ ;
}
這樣雖然嵌套成功,但是并沒有讓pCube2這個物體變成變量操作,所以我們要對腳本進行修改.將pCube2_rotateZ變成通配屬性($selections[$i]+”_rotateZ”),這樣$i在循環(huán)1~50的同時對50個模型也就進行了操作。由于keyframe -e -iub true -r -o over -tc 1 pCube2_rotateZ ;中的1代表做1幀偏移,但是每往后推1個模型,幀數(shù)就需要累加1.所以這里就形成了一個n=n+1的狀態(tài),但是這并不難解決,我們把1套為$i就可以了,因為$i是變量,從1~50自動變化。經過以上考慮,我們把腳本修改為:
string $selections[]=`ls -sl`;
int $i;
for($i=1;$i<50;$i++)
{
selectKey -add -k -t 1 -t 24 ($selections[$i]+”_rotateZ”) ;
keyframe -e -iub true -r -o over -tc ($i) ($selections[$i]+”_rotateZ”) ;
}
最終執(zhí)行
1、在大綱中順序選擇pCuble1到pCube50。
2、在Script Editor中輸入腳本,并且按ctrl+enter執(zhí)行。(圖16)
圖16
3、觀察時間條,50個撲克的關鍵幀就在一瞬間全部錯開。(圖17)
圖17
4、此時我們的動畫效果就完成了。(圖18)
圖18
學習 · 提示
相關教程