0006 Maya模块文件与插件分发

0006 Maya模块文件与插件分发

0006 Maya模块文件与插件分发

今天先来熟悉一下Maya插件的分发、部署。从美术制作人员易用的角度,开发的插件、脚本工具需要很容易被安装使用。 理想的状态最好还是非破坏性插入,动态按需加载。

 

对于单文件的插件,怎么安装部署都容易,一个文件可以随便复制安装。但多数时候插件不可能只有一个文件,尤其对于公司来说,文件会越来越多。不可能一个脚本、一个插件的去考虑怎么弄。那么怎么完美的分发这些插件工具呢?

 

经过研究测试,Maya的模块文件给出了近乎完美的解决方案。加上运用前一篇提到的环境变量,还可以实现非破坏性安装。这里所谓非破坏性安装,我的意思是尽可能不去Maya安装目录写东西。对公司多人使用时最理想的状态是:直接部署在服务器上,写bat或通过程序按需动态挂载各种插件、脚本等等。

 

Maya的模块文件实际上就是一个简单的文本,通常扩展名为.mod。它按一定的格式规范,定义了满足哪些条件的Maya可以加载哪些插件,从哪里加载等:

0006 Maya模块文件与插件分发

像上面Substance这个,就分别定义了三个不同平台windows, linux, mac上Maya怎么加载插件。

 

模块文件一般放在modules文件夹里,可以是Maya安装目录下的,也可以是这里的:我的文档\maya\maya版本\modules

关于模块文件的详细定义可以参考这里:

http://help.autodesk.com/view/MAYAUL/2018/ENU/?guid=__files_GUID_130A3F57_2A5D_4E56_B066_6B86F68EEA22_htm#SECTION_0654C32B7B504E339A6CBD3061F13F76

 

通过模块定义加载插件的另一个好处是,它能自动加载模块子目录中的icon, scripts, 以及在模块文件中定义一些环境变量等。

 

我通常会参考Maya自身的插件或者其它商业插件,创建类似这样的目录结构:

0006 Maya模块文件与插件分发

 

MyMayaPlugins是插件根目录

下面modules用来放*.mod模块定义文件,比如MyMayaPlugin.mod。指定从哪加载插件。模块定义中的路径即可以是绝对路径,又可以是相对路径。

0006 Maya模块文件与插件分发

上面这个算是稍复杂的,前面红框里定义了一些条件。对于这个mod文件的定义来说,Windows64位平台的中英文版Maya2014,能加载名为myPlugin的插件,加载路径位于这个mod文件上一级目录中的myPlugin文件夹。

 

当然也可以很简单的不写那些条件,最简单的可能是这样(这里用的绝对路径):

+ myPlugin 1.0.0 D:/git/MyMayaPlugins/myPlugin

一句就行, 这样任意版本的Maya都可以从插件管理器中看到myPlugin插件。

 

真正的插件内容目录中可能会有这些目录:

bin目录中存放exe,dll等文件

docs目录中可以存放帮助文件等

icons很显然是存放你插件用到的图标文件

plug-ins目录存放的就是前面三种语言写的.mll, .py或是.nll.dll插件文件了

scripts目录可以存放mel或python脚本文件

 

简单的情况可以只有plug-ins,scripts,icon目录

 

如果你的插件是上面这样的目录结构,那么对于有许多美术制作人员的公司或工作室,我所说的理想部署方式是:

 

把整个MyMayaPlugin目录拷到服务器的共享目录,

比如:\\server\MyMayaPlugin

然后就部署完了^_^

 

没错,这样就够了,接下来写段bat来启动Maya, 把插件插进去

0006 Maya模块文件与插件分发

rem 临时加载服务器上的插件

set MAYA_MODULE_PATH=\\server\MyMayaPlugin\modules;%MAYA_MODULE_PATH%

"C:\Program Files\Autodesk\Maya2017\bin\maya.exe"

 

这样就实现了完美的即插即用。

下一篇会综合前面的内容,演示从开发到部署,完整的Maya插件开发流程;

并且当你加载插件时会生成菜单入口,卸载插件时也会自动移除菜单入口。

0006 Maya模块文件与插件分发

参考:

http://around-the-corner.typepad.com/adn/2012/07/distributing-files-on-maya-maya-modules.html