使用Python开发Maya导出插件的一些辅助
2011-08-18 03:03
671 查看
Maya导出插件的开发一定程度上说比Max的导出要方便,自己可以少做很多事。
这里说的是Python写的插件,基本可以适用于C++的。
先了解一下maya的环境变量设置
在我的文档下面的maya\玛雅版本\Maya.env;例如 C:\Users\SITT\Documents\maya\2011-x64\Maya.env
这个文件可以用记事本打开,增加一行
MAYA_PLUG_IN_PATH = 你自己的插件路径。
例如:
MAYA_PLUG_IN_PATH = d:\mayaPlugin\
这样Maya就会将该路径加入到插件的目录当中。可以从该目录载入插件。
然后很爽的一点是Maya的mel有卸载和载入插件的函数,max有第三方插件实现类似功能,不过,终究不如软件自带,Max的以后有时间再开贴。
Mel卸载和载入插件的代码是:
既然是导出,自然还需要导出一个文件来看看工作是否正常,Mel代码:
此处"ModelTranslator"是自己写的导出插件类,Maya中导出插件需要继承MPxFileTranslator。具体怎么写导出,也要另开贴了。
也可以到 oak3d.com下载MAYA的导出插件做参考,代码是公开的。:)这个导出也是我写的。
可以将以上三句一起执行,结果就是卸载,重新载入插件,导出文件。是不是很方便?
还可以更进一步。Maya可以监听一个端口,将发送过来的字符串当作脚本执行。这里是开启端口用的mel,python的话参考一下Maya的文档里的同名函数即可。
这是查询本地的7457端口是否已经注册,如未注册,则开启。
这个可以在Maya启动时自动运行,方法是,写在 My Documents\maya\<Version>\scripts\userSetup.mel里面
例如 C:\Users\SITT\Documents\maya\2011-x64\scripts\userSetup.mel
默认没有这个文件,新建个文本文件改名即可。
然后可以自己写一个接受命令行参数的程序去发送字符串。像我这种懒人就用C#了,安逸啊
C# Socket
如果是美术或技术美术,也可以下载我写的这个 http://files.cnblogs.com/sitt/SockCMD.zip ,需要安装.net frameWork,当然一般都已经安装了。
这个的用法是 “SockCMD ip地址 端口 字符”。
例如 : SockCMD 127.0.0.1 7457 polyCube
如果前面注册了 7457 端口,这个参数执行SockCMD的结果是在Maya中建立一个立方体
怎么样?是不是知道该怎么做了?
只要在自己用的编辑器里设定一个和按键绑定的命令行去发送重新载入插件并导出文件的mel脚本即可。
可以自己配置一个很方便的开发环境。
这里说的是Python写的插件,基本可以适用于C++的。
先了解一下maya的环境变量设置
在我的文档下面的maya\玛雅版本\Maya.env;例如 C:\Users\SITT\Documents\maya\2011-x64\Maya.env
这个文件可以用记事本打开,增加一行
MAYA_PLUG_IN_PATH = 你自己的插件路径。
例如:
MAYA_PLUG_IN_PATH = d:\mayaPlugin\
这样Maya就会将该路径加入到插件的目录当中。可以从该目录载入插件。
然后很爽的一点是Maya的mel有卸载和载入插件的函数,max有第三方插件实现类似功能,不过,终究不如软件自带,Max的以后有时间再开贴。
Mel卸载和载入插件的代码是:
unloadPlugin "ModelTranslator.py"; loadPlugin "ModelTranslator.py";
既然是导出,自然还需要导出一个文件来看看工作是否正常,Mel代码:
file -op ""-typ "ModelTranslator"-pr -ea "C://testmodel.xxx";
此处"ModelTranslator"是自己写的导出插件类,Maya中导出插件需要继承MPxFileTranslator。具体怎么写导出,也要另开贴了。
也可以到 oak3d.com下载MAYA的导出插件做参考,代码是公开的。:)这个导出也是我写的。
可以将以上三句一起执行,结果就是卸载,重新载入插件,导出文件。是不是很方便?
还可以更进一步。Maya可以监听一个端口,将发送过来的字符串当作脚本执行。这里是开启端口用的mel,python的话参考一下Maya的文档里的同名函数即可。
if(! `commandPort -q ":7457"`) commandPort -rnc -n ":7457"
这是查询本地的7457端口是否已经注册,如未注册,则开启。
这个可以在Maya启动时自动运行,方法是,写在 My Documents\maya\<Version>\scripts\userSetup.mel里面
例如 C:\Users\SITT\Documents\maya\2011-x64\scripts\userSetup.mel
默认没有这个文件,新建个文本文件改名即可。
然后可以自己写一个接受命令行参数的程序去发送字符串。像我这种懒人就用C#了,安逸啊
C# Socket
using System; using System.Net; using System.Net.Sockets; using System.Text; namespace SockCMD { staticclass Program { [STAThread] staticvoid Main(string[] args) { if (args.Length <3) return; string ipText = args[0]; string protText = args[1]; string message = args[2]; TcpClient theTcpClient =new TcpClient(); try { IPAddress theIP = IPAddress.Parse(ipText); int prot = Int32.Parse(protText); theTcpClient.Connect(theIP, prot); NetworkStream theNetStream = theTcpClient.GetStream(); if (theNetStream.CanWrite) { byte[] theMessageBuffer = Encoding.ASCII.GetBytes(message); theNetStream.Write(theMessageBuffer, 0, theMessageBuffer.Length); } } catch { } theTcpClient.Close(); } } }
如果是美术或技术美术,也可以下载我写的这个 http://files.cnblogs.com/sitt/SockCMD.zip ,需要安装.net frameWork,当然一般都已经安装了。
这个的用法是 “SockCMD ip地址 端口 字符”。
例如 : SockCMD 127.0.0.1 7457 polyCube
如果前面注册了 7457 端口,这个参数执行SockCMD的结果是在Maya中建立一个立方体
怎么样?是不是知道该怎么做了?
只要在自己用的编辑器里设定一个和按键绑定的命令行去发送重新载入插件并导出文件的mel脚本即可。
可以自己配置一个很方便的开发环境。
相关文章推荐
- 使用python开发vim插件及心得分享
- 开发使用mysql的一些必备知识点整理(四)与python交互
- 使用pathogen管理Vim插件并托管到Github 参照文章【1】【2】的办法,将vim打造成一个Python开发环境。文章中使用的是 pathogen + git 来管理 Vim 插件的。对这种
- 使用Python开发chrome插件
- 使用python开发桌面应用程序的框架选择及一些可能出现的问题记录
- 【Maya插件开发】开发自定义模型导出器和渲染视口
- Java开发中一些必备经典Eclipse插件以及使用集萃
- Eclipse 和 Vim 协同使用---使用Eclim插件开发Python程序
- Python在Eclipse下的的开发插件PyDev使用教程
- Ubuntu下使用Eclipse和PyDev搭建完美Python开发环境 (eclipse中不显示pydev插件解决方法)
- Windows服务器Pyton辅助运维--03.安装Visual Studio 的 Python 开发插件 PTVS
- 在Linux下使用VSCode开发python3.6的环境配置及一些坑
- Win7下使用Sublime Text 3开发及调试Maya Mel和Python
- iOS开发辅助工具-插件集成管理工具-Alcatraz的安装和使用
- 使用Eclipse与Pydev开发Python的一些设置
- 使用Python开发chrome插件
- Eclipse 和 Vim 协同使用---使用Eclim插件开发Python程序
- 开发android程序时使用eclipse的svn插件时的一些设置
- Eclipse 和 Vim 协同使用---使用Eclim插件开发Python程序
- 深度学习Caffe平台开发环境准备——2.使用Eclipse的插件PyDev配置Python开发环境