当前位置:首页 » 编程软件 » maya的mel脚本

maya的mel脚本

发布时间: 2022-05-02 12:00:13

‘壹’ maya中mel文件如何使用

使用脚本语言编辑器

本章包括以下内容: 1、打开脚本编辑器;2、打开一个脚本程序;3、把一个MEL脚本程序文件作为源文件 ;
4、保存脚本文字;5、执行一个脚本程序;6、清除状态信息;7、清除指令输入;8、响应一个指令;
9、显示程序中的语句行号;10、显示堆栈跟踪。

1、打开脚本编辑器
可以通过选择Window > General Editors > Script Editor或者点击Maya窗口右下部的Script Editor图标打开脚本编辑器。
脚本编辑器提供以下菜单选项:

Open Script--打开脚本程序
Source Script--把一个脚本程序文件作为源文件
Save Selected--保存脚本程序
Execute--执行脚本程序
Clear History--清除历史
Clear Input--清除输入
Echo All Commands--返回所有指令的返回值
Show Line Numbers--显示行号
Show Stack Trace--显示堆栈跟踪

编辑命令

下表列出了在脚本编辑器中有效的键盘命令。(在表达式编辑器和一些输入框中它们也是有效的。) 命令 定义 平台
Ctrl+c Copy IRIX、Windows
Ctrl+x Cut IRIX、Windows
Ctrl+v Paste IRIX、Windows
Ctrl+k 删除到本行末 IRIX
Ctrl+d 删除下一个字符 IRIX
Ctrl+a 移动光标到行首 IRIX
Ctrl+e 移动光标到行末 IRIX
Ctrl+a 选择编辑框中的所有文字 Windows

2、打开一个脚本程序

我们可以打开一个脚本程序以便检查、执行或找出它的问题。打开一个脚本程序时并不执行它。
只是在脚本编辑器的输入栏里简单地把它显示出来。

要执行显示在脚本编辑器的输入栏里的一些或者全部脚本程序,可以用鼠标选择它,然后按键盘的数字Enter键。

当你想把一些或者全部内容拖拉到柜架上并在那里产生一个图标时,打开一个脚本程序就是非常有用的。
可以点击该图标执行这个程序。

为了打开一个脚本文件:

1--从脚本语言编辑器中选择File > Open Script。出现一个文件浏览器。

2--选择要打开的脚本文件。

把一个脚本程序作为源文件

把一个MEL脚本程序文件作为源文件,执行所有的MEL指令并声明包含在该脚本程序文件中的所有的全局过程。
如果你在一个脚本程序文件中修改了一个程序,Maya 并不把这个改变登记给该程序,直到你把它的程序文件作为源文件。
这是因为Maya把执行了的程序保存到了存储器中。当你把一个脚本程序文件作为源文件时,Maya再次读该脚本程序文件里的那个程序。

为了把一个脚本程序作为源文件:

1--从脚本语言编辑器中选择File > Open Script。出现一个文件浏览器。

2--选择要打开的脚本文件。

把一个脚本程序作为源文件之后,该文件里的所有MEL指令会执行。该脚本程序中的所有全局过程会被声明,但并不被执行。
MEL指令是按照它们出现在文件中的顺序执行的,并且应当没有错误。如果产生了一个错误,执行会中断并不再装载更多的程序。

当你把一个MEL脚本程序作为源文件之后,不声明或者不执行局部过程。
但是,如果你是通过在脚本编辑器或指令行里输入而声明了一个局部过程,该过程会被声明为全局过程,你可以在任何时候执行它。

执行一个程序可以通过执行一个MEL指令实现。当你想把一个脚本程序作为源文件,并具有执行该文件中的程序的作用时,这是很有用的。
为了这样做,要首先声明该程序,然后声明通过一个文件浏览器执行该程序的指令。

4、保存脚本文字

使用File > Save Selected指令从脚本编辑器保存脚本文字。可以从指令输入(底部)将文字高亮化,
也可以通过脚本编辑器的状态信息(顶部)部分。Maya 将会把高亮的文字部分保存到你说明的目录里的一个 .mel 文件中。

5、执行一个脚本程序

当你想执行一个预先已经源化了的脚本程序时,可以在脚本编辑器的指令输入栏(底部)输入该程序的名字,然后进行下面工作中的一种:

按 Ctrl + Enter 键;
或者
按数字键盘的 Enter 键;
或者
从脚本编辑器里选择 Edit > Execute。

也可以使用这些指令执行一个在脚本编辑器里已经打开了的脚本程序的定义。如果MEL脚本定义没有出现失败,
则该定义是从脚本编辑器的底部移到顶部。否则该定义不会移动,并且在顶部会显示出一个错误信息。

提示:
可以首先选取MEL script的一部分然后只执行这一部分(Ctrl+Enter)。 它不会删除其它部分。

6、清除状态信息

要清除状态信息(脚本编辑器的顶部),从脚本编辑器里选择Edit > Clear History。这将会删除掉所有的状态信息文字。
使用这个指令时应当小心一些,因为没有办法撤消它。

7、清除指令输入

要清除指令输入文字(脚本编辑器的顶部), 从脚本编辑器里选择Edit > Clear Input。这将会删除掉所有的指令输入文字。
使用这个指令时应当小心一些,因为没有办法撤消它。

8、响应一个指令

当你用Maya工作时,对应的MEL指令常常出现在脚本编辑器的顶部。缺省情况下,只有那最重要的指令才会显示。

你可以在脚本编辑器里选择Edit > Echo All Commands ,虚拟地显示与你的Maya作用相关的所有指令。
它可以帮助你学习哪些MEL指令触发作用。

在你的Maya的作用之间并不是总有一对一的对应关系,这些指令返回响应到脚本编辑器里。
如果你使用一个脚本程序去打开属性编辑器,一些MEL指令出现在脚本编辑器里(响应是打开的):

buildObjectEdMenu MayaWindow|menu4|menuItem56;
editSelected;
editMenuUpdate MayaWindow|menu2;

但是,只有以下的MEL指令需要引入属性编辑器:

editSelected;

同时,对于一些作用来说,也不总是会将MEL指令的响应返回到脚本编辑器里。如,当你选择了一个属性编辑器时,
脚本编辑器的顶部没有返回任何信息。

要关闭返回信息,从脚本编辑器里再次选择 Edit > Echo All Commands。

9、显示程序中的语句行号

如果你在执行一个长的程序时由于错误而出现了问题,可以打开脚本程序的行号,你就可以更容易地找到错误。
要显示错误指令的行号,从脚本编辑器里选择Edit > Show Line Numbers。当你打开了Show Line Numbers选项,
Maya 在脚本编辑器状态信息框(顶部)的旁边显示脚本程序的行号。

要关掉行号,在脚本编辑器菜单里再次选择Edit > Show Line Numbers。

Maya将显示行号的设置保存下来作为以后使用。如果打开了行号,当下一次你运行Maya时它们会出现在脚本编辑器里。

10、显示堆栈跟踪

如果你用埋入的脚本程序文件执行一个脚本程序时出现了问题,打开堆栈跟踪选项显示文件结构中的脚本程序错误。
要显示一个脚本文件的堆栈跟踪,在脚本编辑器里选择Edit > Show Stack Trace。Maya会在一个窗口里显示堆栈跟踪,
在脚本编辑器里显示一个错误信息。

使用脚本语言结点

一个脚本语言结点是一个包括了一个 MEL脚本语言程序的结点。
当该结点产生或者当该结点被破坏时,该程序被执行,它取决于脚本结点的类型。

本章包括以下内容:
1、了解脚本语言结点;
2、产生脚本语言结点;
3、测试脚本语言;
4、编辑脚本语言结点;
5、设立脚本语言结点的执行;
6、删除脚本语言结点。

1、了解脚本语言结点

脚本语言结点是把一个MEL脚本语言程序存储到一个Maya场景文件中的一种方法。
脚本语言结点也包含了用于产生用户界面的所有MEL指令,并被用MAYA文件保存。

你可以用不同的方法执行脚本语言程序。可以指明一个脚本程序结点执行它的程序:

当该结点是从一个文件中读出的;

在渲染一桢图像的之前或者之后;

在渲染一个动画的之前或者之后。

当一个文件关闭着时使用File > Open或者File > New

一个脚本语言程序结点有三个属性:
Before、After和Type。决定于脚本程序的类型,当执行该程序时,说明Before和After属性。

2、产生脚本语言结点

可以使用表达式编辑器产生脚本语言结点。

为了产生一个脚本语言结点:

1--选择Window > Expression Editor。

2--在Expression Editor中选择Select Filter > By Script Node Name。

任何现存的Script Nodes显示在Script Nodes表中。

3--在Expression Editor的Script window中输入脚本程序。

4--在Script Node Name框中输入一个名字。

5--定义你想要使脚本成为一个之前或者之后的脚本程序。

6--点击Create键。

这产生脚本结点。现在你可以定义它的类型。

7--从Execute On 下拉菜单里选择以下的一个脚本程序结点类型:

Demand
当你使用scriptNode指令,隐含地需求它时,运行脚本文件(看在线指令文件的scriptNode指令的信息)。
忽略这种类型的脚本文件的之前和之后的属性。

Open/Close
如果你已经指定了该脚本文件作为之前的脚本文件,当以批处理模式读文件时脚本被执行。如果你把它
作为之后的脚本文件,当文件被关闭或者没有以图示用户界面模式提供,或者当该结点被删除时,它被执行。

GUI Open/Close

如果你已经指定了该脚本文件作为之前的脚本文件,当以图示用户界面模式运行MAYA,在读文件时脚本文件
被执行。如果你把它作为之后的脚本文件,当文件被关闭,或者没有以图示用户界面模式提供,或者当该结
点被删除时,它被执行。

UI Configuration (内部)

之前的脚本文件包括了用户界面设置的信息。它是由Maya或者一个plug-in为了保存面板排列和编辑状态信息
而自动的产生的。当你打开一个文件时,这个脚本结点执行它的脚本文件。在执行之后,该结点被删除掉。之
后的脚本是不会运行的。如果一个文件被提供或被输入,这个结点将会不存在。

软件渲染

如果你选派好脚本作为之前的脚本,脚本的执行在一个动画之前被渲染。如果你选派好脚本作为之后的脚本,
脚本的执行在一个动画之后被渲染。

软件桢渲染

如果你选派好脚本作为之前的脚本,脚本的执行在一个桢之前被渲染。如果你选派好脚本作为之后的脚本,脚
本的执行在一个桢之后被渲染。

8--点击Edit键给脚本结点赋类型。

9--如果你想增加另外一个脚本结点,点击New Script Node键。

Script窗口和Script Node Name框被清除,你可以输入一个新的脚本结点。

‘贰’ maya中的mel脚本是什么意思

mel语言是maya自己的一套编程语言,mel是maya的基础,是比较偏底层的东西。如果你稍有编程基础的话,可以很容易掌握它。我们可以看到除了maya的插件(maya内部很多组件也都是以插件形式存在的)以外,所有的操作都可以在script editor窗口中有相应的mel语言与之对应。例如:创建一个常规的polygon球体,打开windows-->General Editors-->Script Editor,可以看到:polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -tx 2 -ch 1;;这句话的意思是创建一个polygon球体(polySphere),其半径为1(-r 1),x、y轴向的分段皆为20(-sx 20 -sy 20),轴向为Y轴向上(-ax 0 1 0),显示方式为有锯齿贴图(-tx 2),并带有历史纪录(-ch 1)。参见help中的polySphere词条。

最好的方法还是买书自己学,可以参考《Maya动画师MEL脚本编程全攻略》(以前看过,很快就能上手)。

附上我以前学习的一些笔记,希望能给你一些帮助:

1.得到所有被选中对象的列表并存入数组:“string $sel[] = `ls -sl`;”
2.在表达式中可以直接用“=”给对象的属性赋值或取值;而mel中则必须通过getAttr和setAttr来实现,这种方式效率比较低
3.“==”是判断是否相等;“!=”不等于
4.定义变量:“float $rotation_value;”
5.为对象添加属性:Window-->Attribute Editor;Attributes-->Add Attribute
6.在数学表达式中的向量:可以对向量中的单个分值赋值,如:$abc.x=3;但是不可以这样赋值:$abc=<<$abc.x,1,1>>
7.向量运算(Maya中的点都是向量存储,因此要定位的话向量比较重要):向量相减:代表向量从一个点移到另一个点所需行进的方向和距离,减数指向被减数
8.向量操作:unit(格式化)/unit($vectoer1);mag(长度)/mag($vectoer1);angle(夹角,弧度制,如果想获得角度将它乘以180/pi,方向为逆时针)/angle($vector1l,$vector2);cross(叉积,与两个向量正交,即垂直的第三个向量,其长度为:dot运算)/cross($vector1l,$vector2);dot(=mag($vector1)*mag($vector2)*cos(angle($vector1,$vector2)))/($vector1l,$vector2);rot(将一个向量绕着由另一个向量所定义的轴旋转一定的角度)/rot($vector1,$vector_axis,$degrees)
9.检测两个向量平行或垂直:dot(unit($vector1),unit($vector2)),如果=0,那么垂直;如果=1,那么平行
10.在mel语言中,不能把属性值赋给变量,必须用如下格式获得:$val=`getAttr expression1.time`;
11.连接属性:connectAttr 属性1 属性2
12.创建表达式:express -string "属性1=值";;适用于mel中对属性的赋值
13.变量:数组变量/$t={1,2,3};声明变量/int $t;
14.全局变量:Maya要求在每一个使用全局变量的域中重新声明该变量,如:
global int $a=1;
proc print_a(){
global int $a;
print($a);
}
print_a();
15.将一个整数转换为一个浮点数:float(3);;将浮点数转换为整数:int(3.7),结果为向下取整=3
16.算术比较运算:print(5>6);结果为:0或1
17.运算符:+,-,*,/,%,+=,-=,*=,/=,++,--,&&,||,!
18.取相邻最大整数:ceil($f);取相邻最小整数:floor($f)
19.在mel中的向量:不能直接将一个值赋给向量的一个分量,如:$abc.x=3;必须这样赋值:$abc=<<$abc.x,1,1>>
20.分隔字符串:tokenize "string1" $myarray;得到的结果将是以空白符来拆分字符串,并存入数组中;又:tokenize "string1" "char" $myarray;将得到以char来拆分字符串,并存入数组中
21.数组中所有没有被赋值的元素默认为0
22.数组的尺寸:size($myarray)
23.如果需要在脚本中使用一个非常的数组,在结束时使用mel中的clear命令清楚该数组:clear $myarray
24.模式选择:-c标记或不适用标记将选择创建模式;-q选择查询模式;-e选择编辑模式
如:sphere -q -radius nurbsSphere1 返回半径
sphere -e -radius 15 nurbsSphere1 修改半径
25.当希望存储命令的返回值时,可以在赋值运算的右边将命令置入反引号(``)中。如:string $coneNodeNames[]=`cone -name testing2`
26.使用eval命令:string $spherecommand="sphere"; string $nodenames[]=eval($spherecommand);表示创建一个球体,将sphere命令的返回值存入$nodenames数组中
27.在脚本中有三种运行mel命令的方法:(一)如果不关心返回值,作为独立一行的语句独立运行;(二)如果想将返回值存入一个变量,将其放入反引号中;(三)如果想在字符串中构造命令并执行它,使用eval函数命令。

‘叁’ 怎样在maya中用mel脚本,实现一个点在空间中的运动轨迹

DirectX 11 Shader 节点的属性,指定了 MayaUberShader 着色器文件。
要使用该着色器,您必须在 Viewport 2.0 的 DirectX 11 环境中工作,并启用 dx11shader.mll 插件。有关详细信息。
您可以在 Hypershade 创建栏中找到 DirectX 11 Shader。创建着色器后,会自动加载 MayaUberShader.fx 文件。
dx11Shader.mll 插件可使您在 Maya Viewport 2.0 中加载并查看自己的 HLSL 着色器。使用 Hypershade 创建 DirectX 11 shader 时,会自动连接 MayaUberShader.fxo 文件;但是,您也可以改为加载自定义 HLSL 着色器。此外,<maya directory>\presets\HLSL11\examples\ 中提供了其他示例 HLSL 着色器。

选择 DirectX 作为渲染引擎(方法 1)
选择“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display)并将“渲染引擎”(Rendering engine)设置为“DirectX 11”。

重要信息若要使用 DirectX 渲染引擎,您必须使用 64 位的 Windows 和可兼容 DirectX 11 的显卡。
在面板菜单中选择“渲染器 > Viewport 2.0”(Renderer > Viewport 2.0)将工作区切换到 Viewport 2.0。

注意您的工作区平视显示仪现在应指示 Viewport 2.0 (DirectX 11)。
选择“窗口 > 设置/首选项 > 插件管理器”(Window > Settings/Preferences > Plug-in Manager)并加载 dx11Shader.mll 插件。
选择 DirectX 作为渲染引擎(方法 2)
此环境变量将覆盖交互式和批处理会话的用户首选项(“窗口 > 设置/首选项 > 首选项 > 显示”(Window > Settings/Preferences > Preferences > Display))(使用 -hw2 选项)。
将 MAYA_VP2_DEVICE_OVERRIDE 设置为 VirtualDeviceDx11 可在 Viewport 2.0 中渲染时始终使用 DirectX 11。

提示将此环境变量设置为 VirtualDeviceGL 可在 Viewport 2.0 中渲染时始终使用 OpenGL。

注意取消设置该环境变量可再次使用用户首选项来选择渲染引擎。
创建 DirectX 着色器
选择“窗口 > 渲染编辑器 > Hypershade”(Window > Rendering Editors > Hypershade),以打开“Hypershade”窗口。在“创建”(Create)栏中,选择“Maya > 曲面 > DirectX 11 Shader”(Maya > Surface > DirectX 11 Shader)。
将创建 DirectX 11 Shader,同时自动加载 MayaUberShader.fx。
按 6 以获得纹理模式,按 7 以使用场景照明。

提示纹理和非纹理模式均受支持,且所有灯光模式(“使用所有灯光”(Use All Lights)、“使用选定灯光”(Use Selected Lights)、“不使用灯光”(Use No Lights)和“使用默认照明”(Use Default Lighting))均受支持。

‘肆’ 怎样把maya的mel脚本插件 添加到工具架上急!!

1、打开脚本编辑器

2、将脚本粘贴进来

3、全选脚本

4、鼠标中键将其拖拽到工具栏上即可

PS:右键已经添加好的mel脚本可以编辑属性

‘伍’ maya怎么用mel脚本控制导出的文件路径及名称

string $sel[] = `ls -sl`;
string $savePath = ""; //替换成存放路径

string $nowObj;

for ($nowObj in $sel)
{
select $nowObj;
file -force -options "v=0;" -typ "FBX export" -pr -es ($savePath+$nowObj+".fbx");
};

这段脚本会按照你选择的物体,把每个单独保存成一个FBX文件

‘陆’ 请问,怎样把MEL脚本导入MAYA

最简单的办法就是直接拖到maya窗口里,这一步相当于把它载入,然后的把文件名(扩展名之前的部分)复制到命令行里运行一下。这样就OK了。这样做简单,而且不是每次打开MAYA都自动载入,所以不影响maya的运行速度和稳定性。

‘柒’ 如何把maya的mel脚本插件 添加到工具架上去啊

在script editor里打开你的mel脚本,全选 然后按住鼠标中键拖到上方的工具架上

如果想删除某个工具架上的按钮 用鼠标中键拖着它到右边的垃圾桶图标

‘捌’ MAYA里 属性关联MEL脚本

你是说点击属性时执行 还是改变属性的数值 到达一定的值后执行

‘玖’ maya的mel脚本与表达式是否等同

这个问题问得很乱 只能按语句逐个回答
1 可在mel语言中使用的所有内容是否全部可用于表达式?
这个是肯定的 但有转化命令 mel直接使用表达式 (表达式只是语言的逻辑数学关系赋值嘛) 表达式要使用mel命令则需要辅助命令eval(“”);
2 换句话说:是脚本>表达式,还是脚本=表达式;
这个是你概念上的混乱 脚本和表达式完全两回事 互不相干 表达式表达的是逻辑数学关系 mel是用来调用命令 至于二者的搭配使用 就好像你从A点到B点 公路呢就坐车 水路呢就坐船 实际上船和车没有太大关系 顶多都是交通工具
3 如果两者不同,请给出不同点,比如:变量定义、语法、语句、maya定义的函数库(或命令)等
变量定义、语法、语句、maya定义的函数库(或命令)这些都相同,表达式是需要关系运算符的 没有关系运算符的不能叫表达式 mel不需要一定有关系运算符 表达式调用mel 当然要遵守mel的语法规则 表达式是mel的一部分 可以独立使用的特殊mel 这个只能用来理解二者关系 但实际上他们独立性很强
4 不要解释与问题无关的内容(比如什么事脚本语言、表达式、API、命令行等等)
从你问的问题可以看出 这些概念你很混乱 先搞清比较好

热点内容
苹果像素低为什么比安卓好 发布:2025-05-14 19:13:23 浏览:459
安卓机微信怎么设置红包提醒 发布:2025-05-14 19:00:15 浏览:271
androidsystem权限设置 发布:2025-05-14 18:56:02 浏览:970
mq脚本 发布:2025-05-14 18:45:37 浏览:25
仙境传说ro解压失败 发布:2025-05-14 18:45:01 浏览:868
betweenand的用法sql 发布:2025-05-14 18:39:25 浏览:250
tplink摄像头存储卡格式化 发布:2025-05-14 18:37:08 浏览:347
安卓平板怎么安装excel的软件 发布:2025-05-14 18:35:44 浏览:42
广州数控圆弧编程实例 发布:2025-05-14 18:25:00 浏览:401
搭建服务器能使用nodejs开发吗 发布:2025-05-14 18:24:14 浏览:136