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;
}
}