Maya教程:撲克波浪動(dòng)畫(huà)特效解析(4)
導(dǎo)言:
相信很多人看過(guò)相關(guān)特效的視頻:翻撲克波浪效果。也就是說(shuō)當(dāng)我們翻動(dòng)第一張撲克的時(shí)候,后面會(huì)有連帶翻滾的效果。這里我們選擇Maya這款三維軟件來(lái)制作,應(yīng)用簡(jiǎn)單的MEL就可以做出這個(gè)特效,希望大家喜歡。
模型制作
雖然說(shuō)撲克牌只是一張紙,但是如果在三維軟件中只用一個(gè)面片,會(huì)顯得很辣手,而且沒(méi)有厚度也不好看,所以我們選擇從一個(gè)方盒子開(kāi)始制作,這樣會(huì)使撲克牌看起來(lái)比較有厚度。
1、創(chuàng)建一個(gè)多邊形的Cube,進(jìn)行三個(gè)軸的擠壓操作后,得到下圖效果。(圖01)
圖01
2、對(duì)多邊形進(jìn)行加線(xiàn),這樣便于制作“倒角”效果。(圖02)
圖02
3、對(duì)模型進(jìn)行UV平面投射處理。(圖03)
圖03
4、給撲克模型賜予新材質(zhì)lambert。(圖04)
圖04
5、對(duì)lambert的color貼圖,這里是貼圖文件。(圖05)
圖05
6、對(duì)2D坐標(biāo)進(jìn)行調(diào)整后。(圖06)
圖06
7、進(jìn)行平滑處理,對(duì)模型執(zhí)行2次smooth命令。(圖07)
圖07
8、這一步很重要,把模型的軸吸附在模型“腳底”,并且在世界中心凍結(jié)屬性,這樣便于做動(dòng)畫(huà)處理。(圖08)
圖08
進(jìn)行場(chǎng)景搭建
1、選擇撲克模型,ctrl+d復(fù)制,向X方向平移1個(gè)單位。(圖09)
圖09
2、立即使用shift+d進(jìn)行智能變換復(fù)制,復(fù)制50個(gè)。(圖10)
圖10
進(jìn)行動(dòng)畫(huà)設(shè)置
1、選擇所有撲克模型,在第1幀定義動(dòng)畫(huà)rotateZ為-89.333。(圖11)
圖11
2、選擇所有撲克模型,在第24幀定義動(dòng)畫(huà)rotateZ為89.333。
MEL提取
在這里我們的思路是做措關(guān)鍵幀處理。因?yàn)殛P(guān)鍵幀可以在DopeSheet列表中調(diào)整,但是50個(gè)或者100甚至1000個(gè)物體措關(guān)鍵幀的話(huà),一個(gè)一個(gè)來(lái)做并不是明智之舉,所以在這里我們選擇使用MEL來(lái)處理這個(gè)問(wèn)題。
1、首先打開(kāi)DopeSheet菜單,我們會(huì)看到如下圖所示關(guān)鍵幀列表。(圖12)
圖12
2、我們需要提取2行MEL:一個(gè)是選擇關(guān)鍵幀的MEL,一個(gè)是移動(dòng)關(guān)鍵幀的MEL。如果能得到這兩行MEL,操作一個(gè)模型,那么我們就可以操作n個(gè)模型。所以我們需要打開(kāi)Script Editor觀(guān)察操作與執(zhí)行結(jié)果腳本。(圖13)
圖13
3、首先我們?cè)贒opeSheet中選擇2個(gè)關(guān)鍵幀,并觀(guān)察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、我們?cè)贒opeSheet中移動(dòng)關(guān)鍵幀,向右用鼠標(biāo)中鍵移動(dòng)關(guān)鍵幀1格,并觀(guān)察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 ;
進(jìn)行MEL篩選與編輯
雖然我們通過(guò)提取腳本行可以得到一些和移動(dòng)關(guān)鍵幀相關(guān)的指令,但是有一些并不實(shí)用,所以我們要進(jìn)行提取和精煉。
1、一下句子中X軸和Y軸雖然有動(dòng)畫(huà),但是并沒(méi)有用。有用的是我們的Z軸動(dòng)畫(huà):
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 ;
所以我們要對(duì)其進(jìn)行精簡(jiǎn)。可以精簡(jiǎn)為:
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 ;
通過(guò)腳本分析,我們可以看到,以上腳本只是對(duì)pCube2這個(gè)物體的旋轉(zhuǎn)Z軸進(jìn)行操作,并沒(méi)有通用性,所以我們需要借助循環(huán)語(yǔ)法for來(lái)進(jìn)行操作。
//For循環(huán)基本語(yǔ)法
int $i;
for($i=起始;$i<結(jié)束;$i++)
{做什么事;}
3、因?yàn)槲覀円獙?duì)選擇物體操作,所以需要進(jìn)行字符串?dāng)?shù)組控制語(yǔ)法
string $selections[]=`ls -sl`;
之后我們直接提取$selections[$i]變量就可以了。
4、進(jìn)行整合就是
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 ;
}
這樣雖然嵌套成功,但是并沒(méi)有讓pCube2這個(gè)物體變成變量操作,所以我們要對(duì)腳本進(jìn)行修改.將pCube2_rotateZ變成通配屬性($selections[$i]+”_rotateZ”),這樣$i在循環(huán)1~50的同時(shí)對(duì)50個(gè)模型也就進(jìn)行了操作。由于keyframe -e -iub true -r -o over -tc 1 pCube2_rotateZ ;中的1代表做1幀偏移,但是每往后推1個(gè)模型,幀數(shù)就需要累加1.所以這里就形成了一個(gè)n=n+1的狀態(tài),但是這并不難解決,我們把1套為$i就可以了,因?yàn)?i是變量,從1~50自動(dòng)變化。經(jīng)過(guò)以上考慮,我們把腳本修改為:
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、觀(guān)察時(shí)間條,50個(gè)撲克的關(guān)鍵幀就在一瞬間全部錯(cuò)開(kāi)。(圖17)
圖17
4、此時(shí)我們的動(dòng)畫(huà)效果就完成了。(圖18)
圖18
學(xué)習(xí) · 提示
相關(guān)教程