幸运蓝丝带全文:maya中的mel脚本是什么意思?

来源:百度文库 编辑:高校问答 时间:2024/05/05 04:08:51
说详细点
不要论文
看的介绍
有600个命令和几十个函数
不懂啊

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 的说明书

主要是使用参数来控制动画

脚本名称 描述
xbmLangPathList 返回XBMLANGPATH环境变量中的路径。
xform 用来设置或查询transformation节点中的任何元素。它也能被用来查询一些不能被直接设置的数值,
如transformation矩阵或bounding box。它也能被用来把中心点设置成合适的值。"
waitCursor 设置Maya程序的图标是否为等待图标。
warning 让用户在他(她)的教本执行时显示warning信息。
whatIs 查询一个字符串在Maya中是一个“命令”,“Mel程序”,“教本”,还是一个变量,如果时变量则给出变量的类型。
window 创建一个不可见的窗口。
windowPref 创建、修改或查询窗口的属性,注意对main Maya窗口和Command窗口不起作用。
wire 创建一个曲线变形器。
wireContext 创建一个能被用来创建曲线变形器的工具。
workspace 创建,打开或编辑一个给定的workspace文件,如果没有指定,则假定时当前的workspace。
wrinkle 用来创建一个曲面褶皱的网络,它自动创建一个用来控制一个曲线变形器的褶皱曲线,
而这个褶皱曲线则连接到一个cluster变形器上。
wrinkleContext 建立一个用来创建褶皱的连接。
writeTake 用来记录从记录数据的设备到一个mov文件的数量。
wtPaintCtx 用来在选定的nurbs曲面上绘画簇的权重。
validateShelfName 用来检测shelf tab的名字是否合法。
valuePaintCtx ?看不懂,小弟E文较差 x_x
verifyCmd 按照相应的值查询一个命令中的每个标签。
view2dToolCtx 居然没有描述NND
viewCamera 把摄像机移到指定摄像机的边上或顶上。
viewClipPlane 用来查询或设置指定摄像机的剪切平面。
viewFit 让选中摄像机显示除了摄像机本身外的指定物体,就是F吧
viewHeadOn 让指定摄像机按照法线观察物体,并让物体充满屏幕。
viewLookAt 让摄像机看向所有选中物体的中心
viewPlace 用来设定摄像机的一点参数:摄像机位置,摄像机瞄准点的位置,摄像机的方向,摄像机是否有透视,
视角以及向上轴。
viewSet 把选中摄像机设置到预定义的位置。
visor 创作或操作Visor窗口
volumeAxis 设置volumeAxis动力场
vortex 设置vortex动力场
uiOnDemandExample 这个脚本示范了“如何按照需要创建UI"来加快复杂视窗的初始化显示时间
uiTemplate 这个命令创建一个新的命令模板对象,模版对象能保存多个UI命令的默认标记参数。
unassignInputDevice 删除所有和指定设备(物体)有关的字符串命令
undo undo
undoInfo 控制undo的参数
ungroup 解组指定对象
uniform 设置uniform动力场
unit 返回一个归一化矢量
unloadPlugin 解除指定plugin的调用
untangleUV 通过解开texture UVs来帮助创建不重叠的区域
untrim untrim指定表面
upAxis 改变世界的向上轴。(Y轴 or Z轴)
updateAE 显示在属性编辑器中指定节点的信息
userCtx 根据一系列指定的工具来创建自己的工具,就象宏一样。
userPaintCtx 通过画笔来执行mel
uvlink 用来设置、中断、查询物体的UV组和纹理之间的连接关系
uvSnapshot 创建选择物体的uv快照