maya python 中的maya.cmds 与maya.mel模块的区别笔记

作为一个python的小白,之前多从事mel程序开发,因为python变化太快,不如maya内置mel语言稳定,所以一直懒于python学习,后来偶尔使用中发现,其实python作为maya mel的封装,与内置的mel还是有很大差别的。
经常看到大家编写py文件里,调用maya mel命令方式如下:

import maya.cmds as cm
import maya.mel as mel

究竟 两个有啥差别呢,经过一段测试做一笔记分享:
maya.cmds 调用的都是通过 c++ 开发的的mll (dll)也就是动态链接库command程序或函数,执行效率都很快。此类命令在官方帮助里被标记为如下类型:
maya python 中的maya.cmds 与maya.mel模块的区别笔记_第1张图片

比如调用 ls()命令,可以写为:

maya.cmds.ls()

而 maya.mel 使用中,多以 maya.mel.eval(‘…mel脚本命令代码…’) 的形式,来在python环境下,调用mel语言编写的脚本。也就是说 mel 其实是调用了多个cmds的内部命令组合,来实现宏脚本语言功能。cmds可以被看做mel的核心命令元素。用mel调用ls命令的方法如下:

maya.mel.eval('ls()')

并且,mel可以调用mel脚本自定义的global proc 程序。如下图显示,带M标记的都是文本脚本mel定义的程序:
maya python 中的maya.cmds 与maya.mel模块的区别笔记_第2张图片
maya python 中的maya.cmds 与maya.mel模块的区别笔记_第3张图片

所以maya.mel是包含了cmds核心命令,并且允许在cmds基础上,定义宏脚本mel程序。cmds方式运行的都是单个命令,mel则可以批量运行多个cmds命令合集。

第三方开发的很多程序,也包含了众多的cmds命令。
可以使用如下命令查看所有的cmds命令核心程序名:

help(maya.cmds)

可以通过 melInfo命令来显示所有的cmds核心命令和mel脚本类函数程序:

maya.cmds.melInfo()
或
maya.mel.eval('melInfo()')

好了基本的差别就介绍到这里, 南无阿弥陀佛

你可能感兴趣的:(maya,maya.cmds,与maya.mel,模块的区别笔记,python)