mel是Maya Embedded Language(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代码。:\\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++的编程经验,并具有图形学基础

发表于 2007-05-17 16:38 坏孩子的涂鸦空间 阅读(282) 评论(0)  编辑 收藏 引用 所属分类: MAY

mel编程相较于c语言怎么样,MEL语言相关推荐

  1. mel编程相较于c语言怎么样,关于mel脚本语言的编写与使用?

    慕哥6287543 ge(Maya内置语言)的缩写,是一种强大的命令和脚本语言,让你直接控制Maya的特征.进程和工作流程.mel能做什么,不能做什么?能做的mel有一个很重要的功能是编写界面,May ...

  2. 会c 学plc编程语言,想学PLC编程?先弄清5种PLC专用语言!

    PLC目前有5种标准的编程语言,包含图形化编程语言和文本化编程语言. 图形化编程语言包含:梯形图(LD-Ladder Diagram).功能块图(FBD - Function Block Diagra ...

  3. Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3))、安装、学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略

    Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3)).安装.学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略 ...

  4. 3.4 学编程不拘于语言,学语言不限于平台——《逆袭大学》连载

    返回到[全文目录] 目录 3.4 学编程不拘于语言,学语言不限于平台 编程语言 软件和硬件--计算机要作为一个整体看待 语言的江湖 语言不是回事 多平台上的精彩 3.4 学编程不拘于语言,学语言不限于 ...

  5. Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3))、安装、学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略

    目录 Python语言的简介 1.Python的应用领域 2.Python语言特点.对比其它语言 2.1.Python语言特点 2.2.Python语言对比其它语言 3.Python版本语言兼容问题( ...

  6. 苹果电脑python编程里面怎么切到中文_电脑语言怎么切换中文,AdobeInDesignCCforMac苹果笔记本上,怎样转换页面语言为中文英语?...

    引: AdobeInDesignCCforMac苹果笔记本上,怎样转换页面语言为中文英语? 各种各样百度搜索沒有方式,随后去Google找到.流程以下: 关掉InDesign把Indesign程序文件 ...

  7. PTA 基础编程题目集 7-27 冒泡法排序 C语言

    PTA 基础编程题目集 7-27 冒泡法排序 C语言 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一 ...

  8. PTA 基础编程题目集 7-7 12-24小时制 C语言

    PTA 基础编程题目集 7-7 12-24小时制 C语言 编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间. 输入格式: 输入在一行中给出带有中间的:符号(半角的冒号)的24小时制 ...

  9. PTA 基础程序编程集 7-2 然后是几点 C语言

    PTA 基础程序编程集 7-2 然后是几点 C语言 有时候人们用四位数字表示一个时间,比如1106表示11点零6分.现在,你的程序要根据起始时间和流逝的时间计算出终止时间. 读入两个数字,第一个数字以 ...

最新文章

  1. python gui 可视化开发工具_用c语言输出九九乘法口诀表
  2. java简单通讯录的实现02person类_Java中Math类的简单介绍
  3. 科大星云诗社动态20210414
  4. 打算写的文章,先写个标题
  5. 优化以insert语句导入数据的方式
  6. dubbo图形化界面搭建_使用 JMeter 进行 Dubbo 性能测试
  7. vlookup查找值不唯一时怎么办
  8. xd可以用ui动效效果吗_通过动画使UI设计栩栩如生:Adobe XD和After Effects
  9. linux查看vtk版本,vtk在linux下的安装(12月8日更新)
  10. O/R Mapping再乱弹
  11. java给文件添加水印_Java在PDF中添加水印(文本/图片水印)
  12. 读书笔记-你不知道的JavaScript(上)
  13. servletcheckbox选中和未选中判断_【微课堂】2020【1期】如何判断牛市启动,春季布局思路! 2020.1.4...
  14. mysql源码包的安装
  15. 游戏 编程 语言 服务端 客户端 就业
  16. gabor matlab pudn,matlab-Face-recognition 基于Gabor特征提取和人工智能的人脸检测系统 271万源代码下载- www.pudn.com...
  17. TortoiseGit配置SSH key
  18. 小程序全套购物车(全选,单选,反选,删除,价格计算)
  19. PiXYZ Studio教程
  20. java人体识别_【人体分析-人像分割】JavaAPI示例代码

热门文章

  1. 测试用例设计 通用原则
  2. SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
  3. idea的language level含义和module的language level自动跳到5
  4. level2买股技巧_同花顺Level-2教你看清个股真实交易数据
  5. 51nod 1607 卷积和(枚举搜索)
  6. 未能找到路径“\bin\roslyn\csc.exe”的一部分 的解决办法
  7. vscode配置备忘录
  8. 自己动手做一款蓝牙小车
  9. 请问,我要去工商局申请一个工作室,法律上需要那些流程
  10. HTML5 五种密码框