将Mel整合进.ma(.mb)文件
原创文章,转载请注明出处!!!
其实非常简单,但是发现这方面的资料就是少得可怜啊,是不是高手们都不屑于写这样的教程啊,这不利于大家的共同进步啊!近日我因困扰于这个问题,狂扒nimo rigging里的代码,还在论坛上发贴求助,虽然没有得到什么完整的答案,但是几个朋友的提示还是给了我莫大的启发。迫不及待写这份教程来和大家分享。
两种方法,大家按喜好取舍。
先分析下吧,比如我们要将这段代码(灰色斜体字为自己定义的函数和变量名)整合进.ma文件:
global proc string mel_integrate_test1()
{
if (`window -exists showUI`) delete showUI;
window showUI;
rowColumnLayout -numberOfColumns 1 -columnWidth 1 60;
text -label “Hello!World!”;
showWindow showUI;
return 1;
};
我们只要创建一个脚本节点(Script Node)来存储这段代码即可,看步骤,方法一:
1、打开Maya,新建场景(废话),什么都不用往里面加,我们只是做测试,给大家介绍方法。
2、在命令栏或者脚本编辑器运行 createNode script -n “mel_integrate_test1“; 命令,创建一个叫mel_integrate_test1的脚本节点。
3、打开大纲(Outliner)窗口,在Display里面取消DAG Objects Only的选项,会看到一堆隐藏节点,其中就有我们刚创建的mel_integrate_test1节点,选中。
4、进入表达式编辑器(Expression Editor),注意,一定要选中mel_integrate_test1节点,然后把上面那段代码粘贴进表达式(Expression)输入框,单击创建,如果代码没错,创建会成功的。在命令栏或者脚本编辑器执行mel_integrate_test1,看看是不是有个窗口弹出来了,哈哈,大功告成!
方法二,更简单:
1、同上
2、进入表达式编辑器(Expression Editor),在Select Filter菜单里选中By Script Node Name,在Script Node Name处填入mel_integrate_test1,把文中示例代码填入脚本(Script)框,点击创建,创建完毕后把Execute On(执行条件)改为Open/Close,再点击编辑即可。完成!
两种方法有什么区别?其实原理上是一致的,都是需要一个脚本节点来存储代码,只是第一种还需要借助表达式节点来帮助存储,而第二种直接存储在脚本节点中。个人推荐第二种,简单而且标准。
P.S:文中示例文件下载:mel_integrate_test1.ma




没去试验下 不过看起来不错 ~~~加油~~
方法一 用不用把Execute On(执行条件)改为Open/Close