1. 我是學CG特效的感覺用的maya還可以想學一下mel又想學houdini一直糾結先學那個好
本來很簡單的事 看了這些回答一時不知道該怎麼說了 你要弄清幾點:
首先mel和python並不是用來做特效的 是用來寫腳本的 mel和python都是腳本語言 目的是為了把軟體本來很繁瑣的操作變的簡單化 用的比較多的是模型和動畫 你也可以把他們的作用理解成在做特效 因為他們的寫的腳本是軟體本來很難實現的功能 比如你要做一個章魚 章魚的觸角有很多種變化效果 彎曲捲曲伸縮等等 你用控制器去控制它每根觸角的動畫會很麻煩 這時候就要用到腳本 你可以把各種動畫效果歸類 然後寫成一個腳本 專門控制章魚觸角的
做特效用的是表達式 寫表達式和寫腳本完全是兩回事 腳本是開發軟體的功能 軟體讀了這個腳本就多了這個功能 表達式是計算每一幀的動畫 你寫的表達式每一幀都要計算一遍 他才是針對特效的 和maya相比houdini的表達式用的更頻繁更靈活 所以能實現的效果更豐富
總結一下:maya的mel和maya的表達式是兩回事 他們的語法不一樣 功能也不一樣 houdini的表達式和python是兩回事 他們的語法不一樣 功能也不一樣
關於腳本語言 沒有什麼強不強大的區別 只是用起來有的更簡潔 更通用 推薦用python也只是因為好多軟體都用它寫腳本 一勞多逸 maya也內置了python語言
再補充一個點就是API API是對軟體的更深一步開發 它和腳本最大的區別就是腳本的功能和演算法是建立在軟體自身的 API是改變了軟體自己內核的演算法 它針對特定的要求給軟體寫了一套新的演算法 用來提高軟體工作效率 說白了就是寫一個新的軟體嵌套進去 所以概念更廣泛 比如maya的破碎插件BlastCode和DMM、粒子發射剛體等等 這類涉及軟體開發的用的語言基本上是C++ 雖然很多是為特效服務 但做這行的人都是軟體開發人員 CG行業的很少有人做
2. maya里怎麼用mel和python寫動態 button,簡單來說就是用一個按鈕控制另一個按鈕的顯示與隱藏,謝謝
python的腳本如下
import maya.cmds as mc
win=mc.window()
mc.columnLayout( adjustableColumn = True )
btn1=mc.button(l="按鈕開",c='')
btn2=mc.button(l="按鈕2",c='mc.button(btn1,e = 1,l = "按鈕關")')
mc.showWindow(win)
mel的腳本如下
window;
columnLayout -adj 1;
button -l "按鈕開" -c "" btn1;
button -l "按鈕2" -c "button -e -l \"按鈕關\" btn1";
showWindow;
其實還可以寫成函數來調用
python函數如下
import maya.cmds as mc
win=mc.window()
mc.columnLayout( adjustableColumn = True )
btn1=mc.button(l="按鈕開",c='')
btn2=mc.button(l="按鈕2",c = 'change()')
mc.showWindow(win)
def change():
btn = mc.button(btn1,q = 1,l = 1)
if btn == '按鈕開':
mc.button(btn1,e = 1,l = '按鈕關')
if btn == '按鈕關':
mc.button(btn1,e = 1,l = '按鈕開')
mel函數如下
window;
columnLayout -adj 1;
button -l "按鈕開" -c "" btn1;
button -l "按鈕2" -c "btn1";
showWindow;
proc btn1(){
string $btn1 = `button -q -l btn1`;
if($btn1 == "按鈕開"){
button -e -l "按鈕關" btn1;
}
if($btn1 == "按鈕關"){
button -e -l "按鈕開" btn1;
}
}