0004 Maya插件开发之C#篇

C#,号称C++++,微软的亲儿子。名字起得霸气,初心想超越C++,现在排行榜前四五名左右徘徊。原因是同类语言Java先出生了好多年,加上微软一直抵抗开源... 直到最近印度人上台才彻底转变态度,未来可期。

 

就语言本身来说,C#搭配天下第一IDE Virtual Studio,使用上应该是最舒服的那个了,至少Windows平台上是吧。

 

Max, Maya很早就整合了.Net,提供.Net SDK, 理论上可以使用任何支持.Net的语言开发(Autodesk的亲儿子CAD更早支持.Net)。所以如果熟悉C#, 也可以很快上手Maya的插件开发。

好处有几个:

1. 使用WPF/XAML来写UI,这样可以充分利用强大的VS快速生成UI

2. 整合其它工具链中已有.Net库或工具

3. 语法舒服,写起来省心省力

 

其实C#在UE4中也有用到。另外Unity直接放弃Javascript了,以后都是用C#开发。加上Unity与微软是同一战线伙伴,搞的IL2CPP指不定那天性能反超C++呢。我刚接触Unity时对于选JS还是C#也是花了点时间。对比了官方一些案例后,发现稍复杂点的都是用C#写的,所以也就不搞JS了。可气的是还有些软件拿JS做脚本语言...

 

我曾经给广东三维家开发Max工具时,创造性的发明了通过VS + C#直接写Windows窗体,用作Max工具UI的方法。包括注册所有控件的事件都是C#写的,效果又快又好。至今也没看到其它人有这种搞法,后面会单独写一篇文章来介绍这个发明^_^

 

闲话了一大段,正式开始来写个C#的Maya小插件。

开发环境准备。在前面用C++开发时VS就装好了。也就是安装Virtual Studio 2017 Community版本,勾上这个组件即可:

0004 Maya插件开发之C#篇

 

VS中创建项目, 框架选.Net Framework4.0:

0004 Maya插件开发之C#篇

 

添加引用openmayacs.dll注意复制本地改为False(如果是Maya2014还需要openmayacpp.dll):

0004 Maya插件开发之C#篇

 

修改项目属性,一般注意三个地方:1.输出类型为类库, 2.生成平台目标为x64, 3.Maya .Net插件的文件扩展名为.nll.dll,默认编译输出是.dll,在后期生成事件中复制重命名:

0004 Maya插件开发之C#篇

 

基本框架:

添加Autodesk.Maya.OpenMaya名称空间;

通过.Net程序集属性注册插件与命令;

写二个或更多类,1.插件类必须实现IExtensionPlugin接口, 基本上就是意思一下, 根本不需要操心;

2.另一个类继承自MPxCommand, 实现IMPxCommand接口(直接覆盖基类的doIt方法);

0004 Maya插件开发之C#篇

 

编译后在Maya中加载插件测试:

0004 Maya插件开发之C#篇

 

是不是超级简单?由于使用了程序集属性注册插件与命令,看起来比Python代码量还少。如果你有漂亮的WPF,也可以直接嵌入Maya里。不过我还是更多使用QtDesigner + PySide, 毕竟方便多种软件复用,后面会写。

 

代码页面:

https://github.com/WendyAndAndy/MayaDev/tree/master/MayaCSPlugin/HiMaya2017

克隆整个项目(包插C++, Python, C# for Maya2014, 2017):

git clone https://github.com/WendyAndAndy/MayaDev.git   

你也可以关注我的微信公众号:

0004 Maya插件开发之C#篇