Maya mel语言基础入门
- 格式:doc
- 大小:12.50 KB
- 文档页数:2
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脚本的打包操作本节课我们主要讲如果我们写好了一段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是函数或者子程序的名称。
在括号里面是定义的函数参数和内容,这里面的参数根据我们编写脚本的需要来设置。
在下面的大括号里面的则是函数体。
也就是说函数或者子程序内部的代码。
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指令和程序码的例子。
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>>;当生命矩阵变量时,必须包括二维阵列的尺寸。
第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文本教学第三课简单的命令和语法在前两节课中我们讲解了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段。
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 循环,可以提高制作效率,方便快捷。
一、了解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。