Maya可以通过三种语言进行插件开发,分别是Python, C++, C#,我准备用几篇文章分别做个入门介绍,抛砖引玉。这里的插件是指使用API开发的结果,所以没有提到MEL。如果是写脚本的话建议直接使用Python好了,MEL可以看一下语法,看得懂就行。
这篇文章将包含三小部分:
1. 开发环境准备与项目模板
2. 写一个最简单的插件HiMaya
3. 正常包含多条命令的插件HelloMaya
首先是开发环境。要用C++开发肯定得装Visual Studio了。可是官方的说法几乎是一个Maya版本要装一个VS,有一点点坑人。就只有一条路,按它指定的VS版本通过向导一步步做。对于要跨多个版本支持的就有点烦了,谁都不想装一堆VS。
不想搞那么多没用的,直接装Visual Studio Community 2017吧,在这:https://visualstudio.microsoft.com/zh-hans/downloads/
组件的话建议你大多数都装上,最少需要装上这二个(因为后面还要用到C#):
Maya肯定也是需要都装好的,我机器上现在的版本是2014。没安装的当然先把Maya装上。
一般会再去安装Maya的SDK,不过不是必须的,有的版本Maya安装时就已经装上了。没有的话直接跑到Autodesk官网搜索maya devkit。
https://www.autodesk.com/developer-network/platform-technologies/maya
接下来创建C++空项目:
创建源文件hi_maya.cpp后修改项目属性:(扩展名改为.mll, 类型为动态库)
接着修改包含目录:
加入预处理器指令:WIN32; NDEBUG; _DEBUG; _WINDOWS; NT_PLUGIN; REQUIRE_IOSTREAM; _USRDLL; MAYAPLUGIN1_EXPORTS;
链接器附加库目录:
添加以下附加依赖项: Foundation.lib; OpenMaya.lib; OpenMayaUI.lib; OpenMayaAnim.lib; OpenMayaFX.lib; OpenMayaRender.lib; Image.lib; opengl32.lib;
命令行加入其它选项: /export:initializePlugin /export:uninitializePlugin
来写个最简单的插件:
输入以下代码后编译生成插件文件HiMaya.mll(源代码会放到git上, 先看截图):
打开Maya, 通过Window/Settings Preferences/Plugin Manager/Browser到生成目录加载HiMaya.mll插件:
可以看到插件特性里有一条命令叫HiMaya,我们可以在脚本中通过MEL或Python来调用,测试:
到这里,已经成功写出了一个插件,给Maya添加了一条新的命令。只不过用了10行代码而已,简单吧。真的简单,不过正如代码中的DeclareSimpleCommand所言,这种方式只适合一条命令的插件。用于激励自己还是不错的^_^,可以随便看看其它插件:
那么类似普遍情况的、包含众多命令的插件怎么写呢?先不急,先把这个HiMaya项目导出成模板,免得后面每个项目要设置半天。
从VS项目/导出模板:
再创建或是添加新项目时就会发现惊喜:
创建HelloMaya项目。
实际上这种插件的结构大致是这样:
首先规范有二个函数是固定存在的,分别是initializePlugin和uninitializePlugin,它们用来加载与卸载插件。在加载与卸载的过程中分别注册、取消注册对应类(class),通过该类(class)的creator创建函数。
每个类(class)也有规范,首先它继承自MPxCommand, 至少有二个方法需要实现,一个creator返回一个新对象指针,另一个最重要的doIt方法用于实现你的命令具体做什么。
接下来写个含有二条命令的插件,分别包含在FirstClass与SecondClass里。可以写在一个HelloMaya.cpp文件里,也可以做得正式一点切分到头文件及多个实现中。
编译生成HelloMaya.dll后到Maya中加载插件,然后测试:
详细代码可以到这看,包括VS项目模板等:
https://github.com/WendyAndAndy/MayaDev
你如果有git的话也可以直接克隆项目到本地:
git clone https://github.com/WendyAndAndy/MayaDev.git
举报/反馈

WendyAndAndy技术美术

1887获赞 15粉丝
TA(技术美术)的备忘录, 关注游戏开发相关
关注
0
0
收藏
分享