Maya mel语言基础入门
Maya Mel基础教程(6)
Maya Mel基础教程(6)使用脚本语言结点一个脚本语言结点是一个包括了一个 MEL脚本语言程序的结点。
当该结点产生或者当该结点被破坏时,该程序被执行,它取决于脚本结点的类型。
本章包括以下内容:1、了解脚本语言结点;2、产生脚本语言结点;3、测试脚本语言;4、编辑脚本语言结点;5、设立脚本语言结点的执行;6、删除脚本语言结点。
3、测试脚本程序可以使用表达式编辑器对脚本程序进行测试。
为测试一个脚本程序:1--选择Window Expression Editor。
2--在表达式编辑器中选择Select Filter By Script Node Name。
3--在Script window中输入脚本程序,或从Script Nodes 表中。
4--点击Test Script键。
错误显示在脚本语言编辑器中。
4、编辑脚本语言结点可以使用表达式编辑器对脚本语言结点进行编辑。
为了对脚本语言的编辑定义一个编辑器:1--选择Window Expression Editor。
2--在表达式编辑器中选择Select Filter By Script Node Name。
3--从编辑器下拉菜单中选择一个编辑器。
为了编辑一个脚本语言结点:1--选择Window Expression Editor。
2--在表达式编辑器中选择Select Filter By Script Node Name。
3--选择你想在Script Nodes list中要编辑的脚本语言结点。
4--在Script window中编辑该脚本语言结点。
5--如果你想撤消你的改变,点击Reload。
Maya重装原来的脚本语言结点。
6--为了清理Script window,点击Clear键。
5、设立脚本语言结点的执行为了设立脚本语言结点的执行:1--选择File Open Scene。
或选择File Open然后在Open Scene window中点击Options。
maya语言mel文本教学第七课-mel脚本的打包操作
maya语言mel文本教学第七课-mel脚本的打包操作maya语言mel文本教学第七课mel脚本的打包操作本节课我们主要讲如果我们写好了一段mel,我们如何调用它,通过什么样的方式将mel 进行打包操作mel的打包操作分为,mel内部打包调用操作和mel外部打包整体操作内部打包是在我们写mel的时候我们事先写好一段执行语句,设置好变量后暂时不执行这段语句的操作,而是先将其存放在maya的内存中,当需要执行这段语句运算的时候,我们把相关的数据调入这段语句的变量中通过我们所写的语句执行操作得到我们要的结果。
这样可以简便我们的mel操作。
节省mel行数。
外部打包是我们将写好的完整的mel整体进行保存成 .mel 文件,当我们使用这段mel的时候可以通过mel文件的名字调用这段mel执行我们想要的操作。
就如同我们平时在网上下载的一些打包好的mel 一样。
在mel中我们打包mel是通过函数和子程序操作的我们执行打包的函数和子程序其实差不多,不同的是,函数一般用于数字的计算,而子程序一般是用于字符串的计算。
我们大家不用刻意的去区分函数和子程序的概念和类型,我们只把它当作是对一段mel运算方法的打包或者是一个计算模板就可以了。
首先我给大家讲解一下用于mel本体内调用的函数子程序的基本操作格式proc float name(float $x,float $y){float $z = $x+$y;return $z;}给大家解释一下我们要声明一个函数或者子程序我们要使用proc 进行声明,也就是说在mel中键入proc 的时候mel就会识别此操作为声明一个函数或者子程序的操作。
后面跟着的float是函数的返回值的类型此含义为函数返回值的类型为浮点型。
后面跟着的name是函数或者子程序的名称。
在括号里面是定义的函数参数和内容,这里面的参数根据我们编写脚本的需要来设置。
在下面的大括号里面的则是函数体。
也就是说函数或者子程序内部的代码。
maya_mel
8. Alias属性,aliasAttr,修改属性名称,-remove,移除相关属性的名称,
9.自定义变量。有整数变量,字符串变量,浮点变量。自定义变量,int,$自定义变量的开头,myint = 5;int $myint = 5;
float $mufloat = 2.135;string $ma = "gaojinjins" string $maya[] = {"fit","gao","jin","jin"};[]存在一个替代的作用,数组输出print "my calable \n\a";print $myint;print $maya[0],也可以输出多数组【】【】【】
print "all done";
print"maya(CN)";
};
source mayacn;
mayacn;
13.不可以key帧的属性,string $mysel[数组的特点]=`ls -selecetion(-sl)`;选择所选, setAttr -keyable false $mysel[数组的特点0] //somenthing;//
5. 链接属性,添加属性,设置属性,本身的属性,setAttr,connectArre,addAttr,polySphere -name ball;move 1 2 3;polyCube -name box;move 2.2 1.2 3.0。-是针对属性的设置,
6. –defaultValue,默认值,添加到可以里面。选择自己想要操作的物体addAttr -longname -defaultValue 0 -maxValue 360 –minValue -360 –keyable true;
MAYA MEL
1楼MEL (Maya埋入式语言)为Maya提供了基础。
Maya界面的几乎每一个要点都是在MEL指令和脚本程序上建立的。
由于Maya给出了对于MEL自身的完全的访问,你可以扩展和定制Maya。
通过MEL,你可以进一步开发Maya使它成为你和你的项目的独特而创新的环境。
为有效地使用Maya,你并不非得精通MEL。
但是,熟悉MEL可以加深你使用Maya的专业能力。
使用MEL的许多方面可以由只有很少编程经验或者没有经验者所使用。
喜欢ME L并不非得喜欢编程。
有一些方法,它们可以使你获得MEL的好处而不必考虑编程的细节。
一旦当你进行了产生MEL脚本语言的尝试,你会发现MEL可以给你提供可以想象到的最先进的数字化画图的方法。
为了获得Maya的输出,大部分可以使用MEL来做。
这里是你可以使用MEL来工作的一些例子:•使用MEL指令脱开Maya的用户界面,快速地产生热键,访问更深的要点。
•给属性输入准确的值,脱开由界面强制引起的拘谨的限制。
•对特定的场景自定义界面,对一个特定的项目改变缺省设置。
•产生MEL程序和执行用户建模、动画、动态和渲染任务的脚本程序。
如何使用本教程本教程叙述如何学习和使用Maya埋入式语言(MEL)。
如果你初次接触MEL,本教材帮助你在使用MEL指令和脚本程序方面开始起步。
一旦当你开始开发 MEL程序的时候,本教材将继续帮助你,讲解如何能够使你获得用MEL产生的更多的指令、宏、程序和用户界面元素的输出。
本教材假定你对Maya已经有了基本的了解。
如果你完全是新开始学习Maya,请看一下学习Maya的教材,并对在Using Maya documentation set中描述的要点进行开发。
应该熟悉Maya的在线文件(见Online documentation)。
特别是应该使你自己熟悉MEL Command Refer ence和DG Node Reference。
本教材的各处都有许多有关的MEL指令和程序码的例子。
基础mel学习第三课
string $s[] = polyCube("-sh",5,"-n","box");
另外在跟大家说一下在mel中的注释。我们在执行一段非常长的mel的时候可能会写几百行或者上千行的语句,如果我们需要对语句进行修改的话,我们每行去找的话想对就比较麻烦,我们可以在写完一个mel段之后为这个mel段加入一个注释,说明此段是做什么的,能起到什么效果。注释常用的方法有两种第一种是//在mel中遇见//mel就会忽略//后面到整个行尾的语句,我们可以在//后面填写此段mel是做什么用的起到什么效果,方便我们查询。另外一种方法是/*注释内容 */这种注释方法的好处是可跨行,在表达式编辑器里面不可以使用此种方法。
print $s;
}
则打印我们所选择的物体的名字为 a b c 这个也根据我们选择物体的先后有关,在maya中是讲究选择物体的先后顺序的,如我在场景中选择的物体顺序依次为 c a b 我们在执行上面的语句后会发现打印的$s的内容 则为 c a b 。
下面我在为大家介绍一下命令的三种模式
我们同样以polyCube为例我们在在mel编辑器中输入 help polyCube 显示polyCube的参数,在polyCube的参数里面我们看到了-e和-q 他们后面没有跟参数类型。他们其实是命令三种模式的其中两种,分别是编辑edit模式和查询模式query,另外还有一种是命令默认的模式是创建模式crate。
mel命令的通用格式
命令的名称 空格 第一个参数 空格 参数的内容 空格 第二个参数 空格 参数的内容 以此类推,最后跟分号;这就是mel的通用格式,一个命令可能有几十个参数,有些参数是不需要更改的我们只需要其保留默认值就可以,这样我们就不用把他们都写在上面我们要更改哪个参数,我们就写那些参数进行设置和更改就可以了。
Maya 编程 经典入门
what Is ls;
help ls;
ls -typ nurbsSurface;
1. 脚本编辑器
使用脚本编辑器,用户可以输入MEL 命令。选择Window > General Editors > Script Editor 命令或单击Maya
在命令线中执行命令时,既可以使用数字键盘上的Enter 键,也可以使用数字键盘上的Enter 键,而在脚
本编辑器视窗中执行命令时,则必须使用数字键盘上的Enter 键。
命令线只有一行,如果要输入多个命令,则必须使用分号把每个命令分开
在命令线的右侧,只显示最后一个命令的结果;而在脚本编辑器中显示所有命令的结果。
用户可以使用命令线来输入MEL 命令。选择Options > Command Line 命令可以显示命令线(见图9-2)。
图9-2 命令线
使用命令线和脚本编辑器来输入MEL 命令,也有一些区别:
来完成自定义的建模、动画、动力学和渲染任务。
本书,Using Maya: MEL,对使用MEL 命令、程序和脚本进行了基础的介绍。如果要进一步地了解MEL
可以使用Maya 的在线文件。在在线文件中,不但包含有本书中的内容,还包含有下面的文件:
MEL 用户界面创建。
在下面的例子中,假设用户使用关节工具来创建了一个关节,并想沿X 轴方向移动关节5 个单位。用户
可以在不中断创建的情况下,使用下面的命令来移动关节:
move -r 5 0 0;
Maya 的在线技术文件对每个命令的用法、语法、返回值和例子都进行了描述。
可以直接在脚本编辑器中输入一个程序来执行它。用户也可以使用这种方式来执行脚本。如果用户在执行一个
Maya Mel基础教程7
Maya Mel基础教程定义数据本章描述 MEL的数据类型它们之间的转换:1、变量;2、常数;3、数据类型转换;4、限制。
1、变量所有变量名以$开始。
变量名不包括空格和特殊字符。
你可以使用下划线和数字作为变量名但开头不能是数字。
识别大小写,如$temp不同于$Temp。
例:int $radical7Mark; // 有效int HEYchief; // ERROR: 开头缺"$"int $ nine; // ERROR: 开头不是"$"int $_VAL_ID___AIT_; // 有效int $howdyYa`ll; // ERROR: 含有无效字符int $1Bill; // ERROR: 开头不能是数字有以下五种变量类型:类型意义例子int 整数 (...-2, -1, 0, 1, 2...)10, -5, 和 0float 小数 392.6, 7.0, and -2.667string 一个或更多的字符 "What's up, chief?"vector 三个浮点数 <<3,?7.7,?9.1>>matrix 浮点数阵列 <<1.1, 2, 3; 6.7, 5, 4.9>>以上类型除matrix外,都可以是一个阵列。
如,一个三元素的整数阵列是一个跟一个的三个整数。
声明和标注变量声明一个变量是说明变量的名字和类型;标注一个变量是给已生命的变量一个专有的值。
下例是将声明和标注合为一步:int $temp = 3;float $Temp = 222.222;string $tEmp = "Heya kid.";vector $teMp = <<1, 2.7, 3.2>>;matrix $temP[2][3] = <<4.5, 1, 0.2; -13, 9911, 0.007>>;当生命矩阵变量时,必须包括二维阵列的尺寸。
maya特效教程:MEL
第8章MEL本章介绍Maya的嵌入式脚本语言:MEL。
读者将了解到Maya如何使用MEL;学习如何利用MEL自动完成重复性工作来提高工作效率;学习使用MEL进行编程的基本方法;并且了解如何继续学习MEL的高级知识。
对于大部分用户来说,并非一定要精通MEL,即可有效地使用Maya。
但是,熟悉MEL 可以加深使用Maya的专业能力,可以为用户提供更广阔的操作模式和额外的解决方案。
而喜欢MEL也不需要必须喜欢编程,学习中的一些方法可以使大家获得MEL的好处而不必考虑编程的细节。
一旦产生编写MEL脚本语言的尝试,你会发现MEL可以给你提供可以想象得到的最先进的数字化画图的方法。
本章主要内容:MEL语言的基础知识与实例的具体分析。
●掌握MEL语言的使用范围●常量、变量的基本用法●语句的使用与简单程序段的创建●通过具体的实例分析,掌握MEL语言的基本用法8.1.MEL语言介绍MEL语言是Maya自身提供的一种脚本语言。
在Maya中执行命令的本质就是执行MEL 语言。
MEL语言使Maya提供了用户对其的完全访问,包括创建用户界面、访问某些隐藏属性和插件的编写等等。
MEL语言是Maya自己的编程语言,MEL是Maya的基础,是比较偏底层的东西。
如果读者有编程基础的话,可以很容易掌握它。
如果没有编程基础,那么掌握它也不是很困难,因为MEL是一种脚本语言而不是面向对象或者面向过程的语言,它的所有命令和操作都和Maya息息相关。
对于一个有Maya使用基础的用户来说,需要做的就是在熟悉了语法规则之后再将Maya的命令和MEL进行关联,就可以写出流畅运行的MEL语言。
Maya绝大部分的功能均可使用MEL实现,例如:●脱离Maya用户界面,直接控制Maya内核,访问更深的要点;●自定义Maya界面;●储存,调用流操作;●扩展Maya的界面命令等。
Maya中编写和执行MEL的脚本编辑器,可以由操作界面命令行最后的快捷按钮进入。
maya语言mel文本教学第三课-简单的命令和语法
maya语言mel文本教学第三课简单的命令和语法在前两节课中我们讲解了mel的一些基础知识,大家知道了什么是变量什么是数组,并对其进行了实际操作和使用。
从这节课开始我们使用mel就慢慢开始练习到场景内的实际操作,给大家介绍一些maya实际操作中所涉及的一些命令和语法学习是一个循序渐进的过程,欲速则不达。
我们由简入深。
一步一步的跟一起研究mel,希望大家在群内一起探讨多多发言,营造本群的学习氛围。
谢谢大家~正文开始:mel 初级命令和简单语法操作在maya脚本里int float string if for(if和for以后学判断语句和循环语句时会用到)等等这些是语言本身使用的,控制语言本身的流程。
除了这些关键字意外,剩下的其他的语句都是命令。
我们可以在maya的菜单栏的help下拉菜单中的MEL Command Reference 中查询mel的所有命令语句。
mel命令的通用格式命令的名称空格第一个参数空格参数的内容空格第二个参数空格参数的内容以此类推,最后跟分号;这就是mel的通用格式,一个命令可能有几十个参数,有些参数是不需要更改的我们只需要其保留默认值就可以,这样我们就不用把他们都写在上面我们要更改哪个参数,我们就写那些参数进行设置和更改就可以了。
我们打开maya,在maya的mel编辑器中,我们输入help polyCube 并运行,在mel 的返回栏中就会详细的列出polyCube的所有参数,前面带“-”的都是他的参数,参数有长名表示法和短名表示法,长命表示法,比较清晰,短名表示法就是书写起来比较方便,每一个参数后面都有他的参数类型。
如我们看到在参数中有一个-name参数,他后面跟的参数类型string,也就是说这个参数是字符串参数,我们可以通过这个参数给polyCube其名字。
后面还有参数类型是int的就是参数类型是整数。
好比-sw后面跟的参数类型就是整数类型,因为我们在设置polyCube的横向分段的时候不可能存在小数,如我们创建一个polyCube 横向分段为5段而不可能是5.5段。
MayaMel大纲
Maya Mel第一部分:01.概念mel maya embed language !maya 嵌入式语言02.学习Mel01. Commands02. 先多看别人写的Mel 脚本03. 自己尝试写一些简单的Mel 脚本02 mel语言与表达式的区别mel脚本语言只是在执行的一瞬间有效,而表达式则是时刻执行有效。
02.常规结构01.Command –Flag Object ;命令参数操作对象02.Command Object -Flag ;命令对象参数03.Command -Flag ;命令参数03.命令的模式:Create 缩写 C 创建模式Query 缩写Q 查询模式(取得某种信息)Edit 缩写 E 编辑模式More 缩写M 可以多次使用的命令Maya 的默认模式是 C04.Mel 脚本的基本形式01. ;分号每句完整的命令后面一定要有分号.02. 参数名:分全称和简称03. 空格:用空格来区分不同的内容,参数与参数之间一定要有空格( 注:空格的三种形式:01.空格(单纯的空格)02.Tab (下一制表符)03.空行(一行都是空着的)在Maya 里面这里的空格形式可以去掉,机器能读,人就晕了,所以空格是给人看的)04. 大小写的区分约定:( 注: 在Mel 里面的规范第一个单词的第一个字母小写第二个单词的第一个字母大写第三个单词的第一个字母大写…………………………………….在你的变量名称里面也遵守这种约定在你命名的时候也要遵守这种约定在你保存文件的时候也要遵守这种约定)05. 注解( 注:注解符001. //002. /* ………………. */)06. 变量与常量常量就是固定的一个数值变量是用$ 来表示的变量的类型:001. float 浮点002. vector 矢量(这里面只能是数字,不是字母)003. int 整数004. boolean 布尔005. string 字符串006. matrix 矩阵07. 变量名规范:001.$ 以$开头002.变量名称不能含空格特殊字符003.变量名称里面只能有字母数字下划线004.不能以数字开头eg : $11_name $name_11eg:$name _t $name_t005.变量命名的原则(个人习惯)0001.前缀后缀eg:float $RT_Name 以你的脚本的名称来命名RT 代表retimer 0002.根据变量类型来定义eg:float $RT_F_Name08. 声明与隐含声明Eg01 :float $F_temp ;(注:声明了就一辈子不会变了)Eg02 :float $F_temp ;parint $F_tempV alue ;Eg03 :$F_temp = 0.5 ; (这个声明了一个float )$F_temp = 5 ; (这个声明了一个int )09. 赋值Eg01 :float $F_temp = 0.35 ;(注:= 就是赋值的过程是把= 号右边的东西赋给= 号左边的东西,变量一定在= 号的左边)Eg02 :float $F_temp = $F_tempV alue ;(这种情况是可以的那么maya 会申明另一个变量$F_tempV alue) eg : float $F_tempV alue = F_tempV alue + 0.3 ;float $F_tempV alue += 0.3 ; (缩写)10. 计算:Eg01 :float $F_temp = 0.35 + 1 ;(注:对于float 有加减乘除对于int 有加减乘除对于vector 只有加减没有乘除但是有特殊的乘叉乘点乘对于string 就只有加)Eg02 :string $temp = "myName" ;string $temp = "my Name" ;string $name = "WT \* \( temp \) \& Name" ;string $namedd = "WT * ( temp ) & Name" ;Eg03 :string $name = "gogo" ;string $nameTemp_01 = "HaHa" ;string $nameAll = $name + $nameTemp_01 ;Eg04 :string $name += “name_One” ;string $name ++ ;Eg05 :string $name = "name_" + "....\...." ;//print $name ;print ($name + "\n") ;(注:字符串赋值的过程一定要有引号“”字符串里面可以有空格这是安全的字符串里面要加入特殊符必须以反斜杠开头戴着\而且一个反斜杠只能带一个特殊符字符串里面有加但是++ 是错误的因为他没有这种运算)11. 智能的数据类型的转换:Eg01 :float $f_temp = 0.35 ;int $i_temp ;$i_temp = $f_temp ;Eg02 :string $n = "fff" ;float $f ;$f = $n ;Eg03 :string $n ;float $f = 0.5 ;$n = $f ;12.计算的优先:高( ) [ ]! ++ - - ( ! 非)* / % ^ (% 取余^ 次方)+ -< <= > >=== != ( ! = 不等于== 判断是否等于)&& (并)| | (或)= += - = *= / =低13. 数组与size 命令int $i_na[] = {1,2,3,4,5,6,7,8,9,0} ;size($i_na) ;int $i_na[] = {1,2,3,4,5,6,7,8,9,0} ;int $size = `size($i_na)` ;(注:[] 这就是数组的意思数字之间用逗号分隔, 外面用大括号{ } ) string $s_name[] = {0,2,3,name,A,B,C} ;( 数组里面如果是int 就全是整型数只能是同样的数据类型)14. 执行运算:01. ` `02. eval(command) ;03. command(flag)Eg :01string $selct[] = `ls -sl` ;int $size = size( $selct) ;Eg :02string $selct[] = eval("ls -sl") ;int $size = size( $selct) ;Eg :03string $selct[] = ls("-sl") ;int $size = size( $selct) ;Eg :04string $s_input = "sdsadegcdacddd" ;string $s_output[] ;tokenize $s_input "c" $s_output ;print $s_output ;Eg :05string $input_name = `getAttr SSSSS.fileTextureName` ;string $ouput_name[] ;tokenize $input_name "/" $ouput_name ;print $ouput_name ;(tokenize 这时在处理路径的时候就变得非常有用了)15. Mel 的语句:01. if 条件语句结构:if ( ) if ( condition )Eg :01float $ty = `getAttr nurbsSphere1.ty` ;if ($ty > 0)setAttr "lambert2.color" -type double3 1 0 0 ;02. if else 结构:if ( )elseEg :01float $ty = `getAttr nurbsSphere1.ty` ;if ($ty > 0)setAttr "lambert2.color" -type double3 1 0 0 ;elsesetAttr "lambert2.color" -type double3 0 0 1 ;03. if else if 结构 :if ()else if ()else if ()Eg :01float $ty = `getAttr nurbsSphere1.ty` ;if (($ty > 0) && ($ty < 4))setAttr "lambert2.color" -type double3 1 0 0 ;else if ($ty < 5)setAttr "lambert2.color" -type double3 0 0 1 ;else if ($ty == 10 )setAttr "lambert2.color" -type double3 0 1 0 ;02.for 循环语句:for 循环语句的结构:for ( start ; end ; iocream ){. . . . . . . . . . ;. . . . . . . . . . ;. . . . . . . . . . ;}在项目生产中大量的用到 for 循环,可以提高制作效率,方便快捷。
Maya Mel基础教程4
提示:
可以首先选取MEL script的一部分然后只执行这一部分(Ctrl Enter)。 它不会删除其它部分。
6、清除状态信息
要清除状态信息(脚本编辑器的顶部),从脚本编辑器里选择Edit > Clear History。这将会删除掉所有的状态信息文字。
使用这个指令时应当小心一些,因为没有办法撤消它。
你可以在脚本编辑器里选择Edit > Echo All Commands ,虚拟地显示与你的Maya作用相关的所有指令。
它可以帮助你学习哪些MEL指令触发作用。
在你的Maya的作用之间并不是总有一对一的对应关系,这些指令返回响应到脚本编辑器里。
假如你使用一个脚本程序去打开属性编辑器,一些MEL指令出现在脚本编辑器里(响应是打开的):
Maya 在脚本编辑器状态信息框(顶部)的旁边显示脚本程序的行号。
要关掉行号,在脚本编辑器菜单里再次选择Edit > Show Line Numbers。
Maya将显示行号的设置保存下来作为以后使用。假如打开了行号,当下一次你运行Maya时它们会出现在脚本编辑器里。
10、显示堆栈跟踪
1--从脚本语言编辑器中选择File > Open Script。出现一个文件浏览器。
2--选择要打开的脚本文件。
把一个脚本程序作为源文件
把一个MEL脚本程序文件作为源文件,执行所有的MEL指令并声明包含在该脚本程序文件中的所有的全局过程。
假如你在一个脚本程序文件中修改了一个程序,Maya 并不把这个改变登记给该程序,直到你把它的程序文件作为源文件。
假如你用埋入的脚本程序文件执行一个脚本程序时出现了问题,打开堆栈跟踪选项显示文件结构中的脚本程序错误。
Maya Mel基础教程(8)
阵列
你可以声明一个int, float, string或vector类型的阵列。阵列的第一个序号为0
string $array[3] = {"first\n", "second\n", "third\n"};
print($array[0]); // 显示 "first\n"
double array 浮点阵列 numbersFireShape.lifespan 1.333 1.666
你可以使用getParticleAttr和setParticleAttr指令设立矢量的元素或一个粒子系统的双阵列。
float $Tmp[] =
`getParticleAttr -at position FireShape.pt[0]`;
可以获取它的属性的一个值:
float $yScale = `getAttr Brawl.scaleY`;
Brawl.scaleY是Brawl物体的scaleY属性的全名。
路径
假如两个物体具有不同的父物体,它们可以有相同的名字。当说明有相同名字的物体时必须使用路径:
pathname|objectname
物体属性
属性是场景中的物体的特征或参数。在Maya中可以用许多方法建立属性-属性编辑器、MEL程序、工具盒工具或表达式。
你可以设立属性去控制在工作空间中看到的虚拟的事情。
如,一个NURBS球具有属性scaleX, scaleY, scaleZ, rotateX, 等等。
物体属性名
matrix $a1[][] = <<1; 4>>; // 错误: 没有说明尺寸
Maya Mel基础教程2
Maya Mel基础教程3、使用指令包括内容有:输入指令、使用指令行、获得指令返回值、指令模式和指令在表达式中。
⑴、输入指令Maya提供了一些输入MEL指令的方法;使用脚本语言编辑器(Script Editor)或者指令行(Command Line)是最常用的方法。
你也可以在脚本程序文件、Maya ASCII(.ma)文件、工具柜图标(shelf icons)、热键以及表达式中执行指令。
但是最常用的还是在脚本语言编辑器中输入指令。
无论如何输入指令,所有的MEL指令必须用一个分号结束。
以下是MEL 指令的一些例子:sphere -name roundy;setAttr roundy.translateX 7;whatIs ls;help ls;ls -typ nurbsSurface;⑵、使用指令行可以使用指令行输入MEL指令。
如果指令行没有出现,在MAYA主菜单中选择Options > Command Line使指令行出现。
虽然在指令行和脚本语言编辑器中都可以输入指令,但两者之间有一些重要的区别:你可以从指令行,使用数字键盘或字符键盘的Enter键输入指令。
而脚本语言编辑器只能用数字键盘的Enter键。
指令行只有一行,执行一个MEL指令。
为了输入更多的MEL指令,指令之间可以?quot;;"分开。
指令行仅将结果的最后一行显示到右边。
而脚本语言编辑器显示所有的结果。
⑶、获得指令返回值Many MEL指令返回一个值。
为了抓取这个返回值,可以用单引号或者eval指令。
使用单引号获得指令返回值用单引号"`"将指令前后标注出来可以返回指令的输出。
随后你可以把这个输出赋给一个变量并在脚本语言编辑器中显示它。
例string $a[];$a = `particle -p 5 0 5 -name Sun`;print($a);第一条语句定义了一个名为$a的阵列。
第二条语句执行引号中的MEL指令,并把指令的输出赋给$a。
Maya Mel基础教程3
Maya Mel基础教程概述 MAYA脚本语言本章包括以下内容: 1、了解脚本语言;2、设立脚本语言环境。
1、了解脚本语言编写脚本语言程序是产生Maya埋入式语言(MEL)脚本程序的过程。
一个脚本语言程序是一个MEL指令或者MEL序列的集。
通过产生脚本语言程序,你可以利用M aya的用户界面使执行任务自动化,可以获得"under the hood"访问Maya所有的各个部分,还可以对界面进行扩展和自定义。
2、设立脚本语言环境为了设立脚本语言环境,需要考虑以下内容:⑴、脚本语言文件⑵、建立脚本语言路径⑶、在脚本语言程序中使用程序⑴、脚本语言文件一个MEL脚本文件(*.mel)是一个包含MEL指令、MEL程序或者二者都有的文件。
典型地,是用一个MEL脚本文件执行一系列的指令。
如,可以写一个脚本程序以产生一个墙形状的物体,然后再给它施加一个砖的纹理。
可以用一个文字编辑器写一个MEL脚本文件然后把它保存到磁盘的一个文件中。
MEL脚本文件使用文件扩展名 .mel。
可以把脚本文件用于不同的场景中和不同的工作期间中。
当执行一个MEL脚本文件时,它并不变成为场景的一个部分,因此如果你要想重复它的作用时,应该每次都执行该脚本程序。
⑵、建立脚本文件路径在缺省状态下,Maya在你的scripts目录中查找MEL脚本文件。
在缺省状态下,这个目录定义在你的login名下。
例子如下:(IRIX) ~elvis/maya/scripts(Windows NT) C:\Aw\Elvis\maya\scripts使你的脚本文件可以运行的最简单的方法是把它们放在上述路径里。
注意你的scripts目录缺省地包含了一些脚本文件。
它们以menu_作为名字的开始,用于Maya内部。
你可以给MAYA用于查找脚本文件的缺省路径增加目录。
为脚本文件路径增加一个目录(在IRIX中):1--在一个IRIX shell中,设立环境变量MAYA_SCRIPT_PATH给附加目录的路径。
Maya Mel基础教程5
Maya Mel基础教程使用脚本语言结点一个脚本语言结点是一个包括了一个 MEL脚本语言程序的结点。
当该结点产生或者当该结点被破坏时,该程序被执行,它取决于脚本结点的类型。
本章包括以下内容:1、了解脚本语言结点;2、产生脚本语言结点;3、测试脚本语言;4、编辑脚本语言结点;5、设立脚本语言结点的执行;6、删除脚本语言结点。
1、了解脚本语言结点脚本语言结点是把一个MEL脚本语言程序存储到一个Maya场景文件中的一种方法。
脚本语言结点也包含了用于产生用户界面的所有MEL指令,并被用MAYA文件保存。
你可以用不同的方法执行脚本语言程序。
可以指明一个脚本程序结点执行它的程序:当该结点是从一个文件中读出的;在渲染一桢图像的之前或者之后;在渲染一个动画的之前或者之后。
当一个文件关闭着时使用File > Open或者File > New一个脚本语言程序结点有三个属性:Before、After和Type。
决定于脚本程序的类型,当执行该程序时,说明Befor e和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指令,隐含地需求它时,运行脚本文件(看在线指令文件的s criptNode指令的信息)。
基础mel学习第一课
mel 遇到第一个引号发现里面的转义字符\将"转义为字符,发现字符串maya,发现转义字符\将"转义为字符,后面引号字符串结束
如果我们需要打印结果如下
yes!
end
我们该如何操作呢?
如果我们使用如下方法
{
string $a = "yes!" + "end";
print Sa;\
关于整型变量我们就介绍到这里,以后我们会根据实际操作在将整型变量进行深入讲解
浮点变量(小数变量)float
用于计算小数的变量
如
{
float $f = 5.0/2.0;
print $f;
}
计算结果为2.5
在浮点变量我们要注意如我们使用整型变量
{
int $ i = 5/2;
数组 相当于变量的**,事实上他并非某一种变量。他只是一个容器,一般在mel中用[]表示
大家要牢记的是整型变量int 浮点变量float 字符串变量string
下面我给大家详细讲解
首先是整型变量的使用方法
大家看下面的语句:
{
int $ i;
$i = 7;
print $i;
如果只是在原基础上加1 减一的话我们也可以调用C语言的写法 $i++ 或者 $i--。
下面给大家讲一下字符串变量
字符串变量定义的语句为string
{
string $s = "maya2011";
print $s;
}
我们定义字符串变量S,赋值为 maya2011 ,注意我们在maya2011 上面加了" " 来说maya2011为一个字符串。
maya语言mel文本教学第二课-数组
第二课mel学习系列课程--数组数组也分整数数组,小数数组,字符串数组其实数组就好比我们在maya场景中选择了多个对象打组是一个道理,在mel中我们可以将数字和字符串进行打组后进行统一操作如整数数组里面可能有很多数字1 3 5 7 0 等,可以理解为将这些数字打了一个组小数数组也是如此1.2 3.6 6.8 3.4 将这四个数字进行了打一个组字符串数组就是将字母或者字符串打组hi hello maya ok 将这四个单词打组数组在mel中的表示方式如下,我以整数数组为例{int $a [] = {3, 13, 17,37};print $a;}上面我们做了一个整数数组的简单表达方式。
int上节课讲过是代表整型变量定义一个整型变量a在a的后面有一个[]意思就是告诉系统这个变量是一个数组,在等号后面大括号中的内容就是这个数组的内容。
大家可以执行这条语句看看maya的反馈信息是是如何显示的,我们使用print反馈数组信息,得到数组列表。
但是如果我们要调用数组中的单独的某一个数字我们该怎么操作呢?这就需要我们执行数组下标操作。
大家要注意数组我们上面写的数组语句中的数组内容标号是从0开始的。
也就是说{3, 13, 17,37}数组中第一个数字3的下标为0以此类推,13的下标为1等等。
如果我们要调用上面数组中的第三个数字17,我们要执行如下操作{int $a [] = {3, 13, 17,37};print $a[2];}大家在mel执行上面的语句后反馈结果为17,这个结果是我们想要的同样我们也可以对数组重新赋值,这个道理就好比是,我们在maya场景中建立一个空组,在这个空组中我们可以随意的添加和更换组中的元素是一个道理{int $a [] = {3, 13, 17,37};print $a;}上面这个语句我们只是对这个数组的初始化,好比我们在maya场景中建组,组中已经包含了这些对象,我要更换这个组里面的内容我们要执行如下操作{int $a [] = {3, 13, 17,37};$a = {47,98,103,111};print $a;}我们在mel中执行上面的语句,发现我们将变量$a数组的原内容3,13,17,37更改为47,98,103,111。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、了解MEL
MEL (Maya埋入式语言)为Maya提供了基础。
Maya界面的几乎每一个要点都是在MEL指令和脚本程序上建立的。
由于Maya给出了对于MEL自身的完全的访问,你可以扩展和定制Maya。
通过MEL,你可以进一步开发Maya使它成为你和你的项目的独特而创新的环境。
为有效地使用Maya,你并不非得精通MEL。
但是,熟悉MEL可以加深你使用Maya的专业能力。
使用MEL的许多方面可以由只有很少编程经验或者没有经验者所使用。
喜欢MEL 并不非得喜欢编程。
有一些方法,它们可以使你获得MEL的好处而不必考虑编程的细节。
一旦当你进行了产生MEL脚本语言的尝试,你会发现MEL可以给你提供可以想象到的最先进的数字化画图的方法。
为了获得Maya的输出,大部分可以使用MEL来做。
这里是你可以使用MEL来工作的一些例子:
·使用MEL指令脱开Maya的用户界面,快速地产生热键,访问更深的要点。
·给属性输入准确的值,脱开由界面强制引起的拘谨的限制。
·对特定的场景自定义界面,对一个特定的项目改变缺省设置。
·产生MEL程序和执行用户建模、动画、动态和渲染任务的脚本程序。
如何使用本教程
本教程叙述如何学习和使用Maya埋入式语言(MEL)。
如果你初次接触MEL,本教材帮助你在使用MEL指令和脚本程序方面开始起步。
一旦当你开始开发MEL程序的时候,本教材将继续帮助你,讲解如何能够使你获得用MEL产生的更多的指令、宏、程序和用户界面元素的输出。
本教材假定你对Maya已经有了基本的了解。
如果你完全是新开始学习Maya,请看一下学习Maya的教材,并对在Using Maya documentation set中描述的要点进行开发。
应该熟悉Maya的在线文件(见Online documentation)。
特别是应该使你自己熟悉MEL Command Reference和DG Node Reference。
本教材的各处都有许多有关的MEL指令和程序码的例子。
要运行例子程序,你可以把它们粘贴到Maya的脚本语言编辑器(Script Editor)里,并选择Edit > Execute就可以了。
使自己进一步地熟悉脚本语言编辑器的要点,执行脚本程序,并把程序保存到Maya的script目录中的一个文件中,可以参考Maya文件和用户指南中的适当章节。
如何学习更多的MEL内容
为了学习更多的MEL内容,可以通过以下途径:
·在线文件
·训练课程
·网站资源
在线文件
本教材提供了一个使用MEL指令、程序和脚本语言的总的概览。
有关特定的MEL指令的
详细信息,请参阅MEL Command Reference。
当你学习MEL时,你会发现你需要学习更多的有关Maya的相关图节点(dependency graph node)的内容。
在线的DG N。