Maya插件(一): Mel Command命令插件

前言

      本系列(Maya插件)讲解的是关于用C++开发Maya插件.  首先安装Maya, 用到的文件如下(按安装顺序):

1. isscript.msi (系统缺少这个,Maya将安装失败);

2. Maya2009.msi (Maya安装包);

3. Maya_Docs_en_US2009.msi (Maya开发文档).

 

      安装完毕后,本人的Maya相关路径如下, 以后的Maya插件中将使用该路径.

1. 安装目录:C:/Program Files/Autodesk/Maya2009/
2. 用户目录:D:/Backup/我的文档/maya/

 

 

Mel Command命令插件

Mel(Maya Embeded Language)命令指的能够在命令解释器里运行的命令。所有的自定义命令要从MPxCommand类继承,

看如下代码MyCommand.h

 

 

SimpleCommand类需要改写virtual函数 doIt(const MArglist &args); static void* creator()用于生成一个类对象.

下面看一下SimpleCommand的实现代码SimpleCommand.cpp

 

可以看到SimpleCommand::doIt()只是简单地打印出字符串, 这是为观察SimpleCommand对象的行为做准备. SimpleCommand类的实例用于执行具体的任务,那么该对象由谁创建并触发doIt()呢?

 

命令对象的注册

我们需要注册该命令对象,并且在输入命令的时候(这里使用"HelloWorld"), Maya创建该对象并触发doIt(). 看如下注册代码

plugMain.cpp

 

 
Maya中的插件是一个动态链接库,只不过后缀名为mll. MLL_EXPORT MStatus initializePlugin(MObject obj) 和

MLL_EXPORT MStatus uninitializePlugin(MObject obj)是该DLL的导出函数,前者将在DLL加载时被调用;后者将在DLL

被卸载时调用.

 

/// register the command
MStatus status = plugin.registerCommand("HelloWorld", SimpleCommand::creator); 注册了命令"HelloWorld",并

告诉Maya:函数SimpleCommand::creator()将会返回命令对象.

 

/// deregister the PxCommand
MStatus status = plugin.deregisterCommand("HelloWorld"); 注销命令.

 

完整的Source Code下载URL:http://download.csdn.net/source/2700425

 

运行并观察

1. 将Build成功的插件MyCommand.mll放入Maya的安装目录下的/bin/plug-ins/;

2. 在Maya中加载插件, 菜单路径为: Window --> Settings/Preferences --> PluginManager;

3. 在脚本命令窗口输入:HelloWorld

4. 查看输入结果

 

由此看出,每执行一次HelloWorld, 都会创建一个SimpleCommand对象实例,执行完毕后销毁!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值