① 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脚本
1,打开script editor:Windows->General editors->Script editor 或者,点击右下角的图标,如下图:
③ 如何有效编写各种由MAYA Mel语句组成的逻辑运算
一、了解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 Node Reference文件详细地描述了Maya的相关图节点。
训练课程为了学习更多的有关Maya和MEL的内容,请考虑学习Alias│Wavefront的训练课程。这些课程向你介绍MEL指令和脚本语言程序,还可以向你提供最主要的内容的深层知识。要学习更多有关MEL的内容,可以先从MEL基本教程开始。
在Alias│Wavefront的网站aliaswavefront.com(Express Link to Training)中的课程安排和描述是有效的。关于课程的有效性、价格和登录的最新的信息,可发Email给training-info@aw.sgi.com,电话是416-874-8760或1-877-927-7478 (option 4),或FAX 416-369-6131。
网站资源Alias│Wavefront的Assistant Online提供了许多有关Maya的教材,包括含有产生MEL脚本程序的教材。
更多信息可以访问Alias│Wavefront网站:aliaswavefront.com。
另外,Highend3D的highend3d.com网站介绍了MEL脚本程序并连接到更多的有关MEL和Maya的信息。
为了获得MEL和Maya的大部分的输出,请开发和利用这些训练课程和网站资源。
④ 跪求 <<Maya动画师MEL脚本编程全攻略>>和 <<Maya MEL动画编程从入门到精通>>
我有给你吧 979774476
⑤ 求教maya MEL脚本 动画脚本
要想会mel光会编程不行,得有一定的maya使用经验,入门是非常好入的,因为mel没有指针的概念,刚开始推荐你看《Maya动画师MEL脚本编程全攻略》再配合着视频教程如诺宝的mayacn的,双管齐下
在我看来,mel就是mel命令堆起来的,等mel用的差不多了在学maya的api
⑥ 指教MAYA脚本mel的安装与使用说明
就是说你在maya软件里的mel输入栏这里输入分别输入RageMergeFaces和spinFaces(每次只输入一个名称,即第一次输入RageMergeFaces)然后全选RageMergeFaces字样,利用鼠标把他拖到shelf上就可以了。然后再次输入spinFaces字样,重复上一步骤就可以了
⑦ 关于mel脚本语言的编写与使用
ge(Maya内置语言)的缩写,是一种强大的命令和脚本语言,让你直接控制Maya的特征、进程和工作流程。mel能做什么,不能做什么?能做的mel有一个很重要的功能是编写界面,Maya的整个界面是用mel编写的,Maya中的所有界面元素都可以编写到你自己的mel程序界面中,你可以用mel跟据自己的习惯定制自己的操作界面。Maya中的所有的按钮命令都是通过mel来调用的,你可以记录并把其中一些命令组合起来,通过一键或按钮来自动执行这一组命令,就像PhotoShop里的Actions一样。Maya中的每一步操作都是在执行mel,因此Maya的任何一个功能,能做的任何一项操作,都可以加到你自己的mel程序中。mel有着和c语言类似的语法,有强大的字符串处理功能,还包含一些较为低层的命令(比如说获取选择物体的名称和获取点在空间中的坐标值等命令),可以编写一些Maya中没有的,较为复杂的功能。不能做的mel是一种脚本语言,受脚本解释器(Command Engine)和Maya内置命令的影响,还是有很多局限的。mel不能使用ActiveX插件。mel只能根据Maya中已有的命令(dll或mll中注册过的命令)进行扩展,无法直接调用dll模块中的函数。我们平常使用的dll或exe程序文件是经过编译器优化的二进制文件,命令的执行速度非常快。mel脚本语言是文本,有一个脚本解释器分析的过程,命令的执行速度较慢,大约要慢20倍。mel不支持指针,不能对内存进行直接操作。这就导致了很多方面的效率超级低下,对内存的间接操作可能会使运行速度降低100倍甚至1000倍以上。不过这样也有一个不容争辩的好处,就是不会产生内存泄漏,保障了Maya的稳定性。mel不能读写二进制文件。既然mel不支持指针,不支持数据结构,就算能够读写二进制文件意义也不大。mel不能编写程序渲染器、播放器;不能编写Maya中不存在的界面元素,如TreeView、RichEdit、透明窗口等;不能编写读取二进制文件的程序,如3dmax(*.max)、LightWave(*.lwo,*.lw)等。有人问过mel能不能编写病毒问题。答案是肯定的。编写mel病毒不需要什么高超的技能,只要通过mel调用dos命令或 JavaScript/VBScript命令就行了。编写病毒是一件损人不利己的事,mel病毒决对不能代表编写者的技术高深,只能说明他的素质低劣。 mel病毒极其罕见,只听说国内有人编过,并害了自己人。如果万一你被mel病毒格式了硬盘或删除了文件,可以用EasyRecover之类的程序来恢复,但有一点一定要记住,就是在恢复文件之前千万不要对受损的硬盘进行写操作!包括不能把恢复的数据存到受损的硬盘上!否则再厉害的高手也救不了你。学Maya一定要学mel吗?不一定非要学mel。但由于Maya与mel的关系太密切了,Maya的用户界面就是用mel编写的,你在Maya中的每一步操作都是在执行mel,你也经常会在表达式里用到mel,或使用别人编写的外部mel程序,这一切都要求你至少要对mel有一个初步的了解。可以先学mel再学Maya吗?不可以。只有先熟悉的Maya的操作后才可以学mel。一般至少学两个月以上的Maya,才可以学mel。学mel是否要有编程基础?是否应该先学C语言再学mel?有编程基础的确会对学mel有很大帮助,但这并不是说学mel一定要有编程基础。C语言和Java语言虽然在语法上与mel很相似,但在编程的思路方面有很大差距,mel更注重代码的简洁而非代码运行的高效率。由于mel是不需要编译的脚本语言,对一些编程的规范要求不是很严格,学习起来会比C或Java更简单一些。学mel是否要学好数学?是否要学好图形学?如果你是学理科的,而且以后打算在3D图形编程这方面发展,那么学好数学和图形学是必须的。如果你是搞艺术的,学mel只是为了辅助Maya作图,那么你就少在数学和图形学上浪费时间。mel是比较高层的脚本语言,一般都是直接调用Maya中已经编好的算法,你只要熟练掌握Maya的操作就行了。如果你有比较好的图形学基础,可能反而会不喜欢使用mel,因为很多优秀的算法无法用mel实现 - mel的速度太慢了。如何编写mel?mel是脚本语言,这就意味着你可以用任何文本编辑器来编写,比如写字板、记事本等。Maya自带的编辑器不好用,所以我们一般使用外部编辑器来编写mel。比较专业的编辑器有:TextPad、 UltraEditor、EditPlus等,有了这些编辑器后还要在网上(比如Highend3d)下载一个mel语法加亮文件,配置好后,才好用。如何使用mel?mel编辑器单行的mel命令,可以直接在命令行(Command Line)执行,也可以在Window > General Editors > Command Shell执行。多行的mel代码,可以在Script Editor中按Ctrl+Enter执行。shelf在Shelf中执行mel。把要执行的代码选中,用鼠标拖放到Shelf上,Shelf上多了一个mel图标,点这个图标,就可以执行你的mel代码了。使用textToShelf命令。比如:textToShelf "cube" "polyCube";可以在当前Shelf上建一个polyCube命令的图标。使用Shelf Editor,添加、编辑你的mel代码,或更改图标。mel文件mel文件的名字必须取与文件中的主函数相同的名字。要把mel文件复制到我的文档/Maya/5.0/scripts目录中,然后在命令行输入主函数名就可以执行这个函数命令。源化脚本(Source Script)Source Script可以使mel文件中的代码或命令立即生效。有几种方法可以Source Script,比如说可以在命令行执行source yourScript.mel,或用Script Editor的File > Source Script...,或直接把你的mel文件拖放到Maya的视窗中。启动文件userSetup.mel要想在Maya每次启动时都执行某一段代码,需要把这段代码加到Maya的启动文件userSetup.mel中。具体方法是在我的文档/Maya/5.0/scripts目录中新建一个文本文件并重命名为userSetup.mel,然后把你的代码加到这个文件中。如果scripts目录中已经存在了userSetup.mel,就把你的代码加到这个文件的结尾。其它也可以通过快捷键、菜单、Marking Menu、mll插件、外部程序文件、JavaScript等方法来调用mel。如何学习mel?学mel最好的参考手册就是Maya的帮助文档,遇到问题时,应首先从这些文档中找答案。我把文档中的Mel Command Reference部分做成了chm文件便于查询,可以点此处下载。要想提高自已的水平,需要多看别人编写的mel代码。<disk>:\\Alias\\Maya6.0\\scripts目录中存放着所有 Maya自带的mel,这些mel可以随意抄写,修改并发布,无版权限制,是我们学习的范本。另外在Maya官方网站和Highend3d也可以下载到大量有用的mel供我们学习。什么是表达式?mel与表达式有什么关系?mel与表达式的关系,Maya帮助文档中讲得很清楚:Expressions have a different purpose from MEL commands and MEL scripts. You enter a MEL command to do a single action, for example, to create a sphere.A MEL script is a list of commands you create to do a sequence of actions, for instance, create a wall-shaped object and apply a brick texture to it.Because you store a MEL script in a file on disk, you can run a script in different scenes and different work sessions, whether today or next year.An expression animates one or more attributes over time in a single scene. By default, an expression executes each frame as an animation plays. After you create an expression, it executes whenever you play the animation-including when you play the animation after saving, closing, and reopening the scene.A MEL command or script is not part of a scene after you execute it. You must execute it again to repeat the action.做几点补充说明:mel是用户与Maya内部机制交流的通道。mel不能直接编写节点和属性,因此往往要使用表达式才能对物体进行实时控制。表达式是与动画不可分割的,表达式与动画的时间(time或frame)有密切的关系,表达式对动画的每一帧都要进行计算。在表达式中可以使用mel,但很多mel用在表达式中是没有意义的,比如说一般不会把编写界面的mel用在表达式中。mel脚本可以用于任何场景。表达式只能用于一个场景,另一个场景即使用到相同的表达式,也要重新创建。表达式主要是对物体的属性进行控制,可以用等号对物体的属性直接取值或赋值,例如:cone.translateX = 3;而mel就必须用getAttr或setAttr来做同样的事情了,例如:setAttr cone.translateX 3;什么是MayaAPI?与mel有什么关系?API - Application Programmer Interface(应用程序界面)。也有人称作SDK,是一种专门给程序员使用的界面或接口。MayaAPI提供了Maya的5个dll文件。这些dll中包含控制Maya的大量类和函数,我们通过这些类和函数用vc++编写自己的dll(mll)文件,这些函数通过Maya的方式(比如用mel命令的形式)来调用。我们常用到的*.mll插件都是通过MayaAPI编写的。MayaAPI比mel更强大,更复杂,效率更高,能做到许多mel做不到的事情,运行速度在mel的十倍以上。MayaAPI的功能主要体现在以下几点:编写mel命令。 执行mel命令。 进行创建物体,选择、缩放、删除等基本操作。 编写manipulator。 编写contexts(tool)。 编写属性节点。 编写材质节点。 文件输入输出。 编写独立的exe控制台程序。MayaAPI程序因为使用vc++,可以使用MayaAPI,MFC,还有很多SDK,几乎是无所限制。不过不能改动Maya底层的东西,不能更改Maya的运作方式。使用MayaAPI,需要有vc++的编程经验,并具有图形学基础
⑧ 怎样编写maya脚本
可以参看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快照
⑨ 求maya5编程全攻略PDF
mel 是maya的语言,就跟中文是咱中国人的语言一样,所有maya的操作,不管是渲染,建立球模型,存盘,打开某窗口,都是在maya后台执行一条或者多条mel命令,所以说某高手凭借一段mel语句能完成一项很复杂的工作(比如自动装配)就不会让你太惊讶了。
mel学起来不难,如果你之前学过C语言,并且有良好的编程习惯(比如知道怎么排除错误和设置程序断点)那么你学起mel会觉得很爽快,因为这个语言实在是很浅显。
如果需要书籍,中青IT翻译的《maya编程全攻略》,邮电出的《maya渲染技术精粹》,网上流传甚广的《the art of rigging 1-3》都值得好好看看,还是那句话,mel很浅显,所以just learn it。
但是.....会用mel 不等于 会编写复杂插件,插件的哲学是建立在简化重复劳动的基础上的——你首先要知道什么工作是“重复性”的,比如你装配一个角色,不停地给关节们重命名,这个步骤就是重复性的,是应该开发一个插件来简化的——其次你需要知道怎么简化这个重复性的工作,以及谁是这个插件的用户,如果是一个对程序一点不了解的用户,你是否需要开发一个好看的界面——再次你需要一个严谨的结构,保证这个插件不管用在什么角色身上都完美无错,这需要你去试验和碰壁.....
至于其他方面,渲染,建模......mel发挥的作用就更五花八门,所有的大型制作公司都有专门的RnD(研究与开发部门)负责为maya开发特殊工具。
--------------
表达式仅仅是mel的一个小小分支而已,可以理解表达式为“时间(frame)驱动的mel微程序” ,表达式永远和时间是有关系的,所以如果你目的是学习基于运动的特效,粒子、流体、弹性动画.....你必然会用到表达式。
但是对于建模之类静态任务来说,表达式扮演的角色不如mel或python本身更明显。
⑩ 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框被清除,你可以输入一个新的脚本结点。