用maya的api创建自定义的节点Creating Custom Locator

原文地址 http://www.fevrierdorian.com/blog/post/2010/02/12/Creating-custom-locator-with-Maya-s-Python-API

这个帖子是这个帖子的中文翻译。 希望这个教程对你有帮助。

正如 我之前提到的,我开始使用Maya API Python绑定。所以我看了一下Rob Bateman的的源码(一年前我觉得很难理解),然后把它们 "翻译 "成了Python…所以我创建了一个带有自定义定位器的小脚本。这显然不是世界上最简单的东西,多亏了其他教程,已经集成到Maya中的Python "插件 "和我做的OpenGL教程,我确实有了一些基础),但一旦代码运行起来,修改它来制作自己的定位器是相当有趣的。

所以,在菜单上我们有:

  • OpenGL (那么,你还怎么画你的定位器呢? )
  • 颜色的变化作为定位器选择状态的函数。

虽然不多,但你会发现这已经够用了!

脚本是没有意义的,是给新手看的!

不!如果你这么想,那你就什么都没看懂。这两者是密切相关的。如果我选择了定位器这个例子,不仅仅是因为它的 “酷”,还因为它是一个只有用API才能做的事情的例子…

但API并不是万能的!

毫无疑问,你已经知道,Maya界面完全是用MEL编写的,它允许脚本作者为自己的脚本快速创建一个GUI。不是所有的软件包都提供这种功能(有人说过XSI吗),而Maya是为数不多的几个拥有这种功能的软件包之一。

大多数的Maya函数调用也是脚本化的。这意味着你可以 "批处理 "你的操作(当你有50个场景要打开来改变一个属性的值时,你就不会笑得那么厉害了!

我只能请大家阅读我的导师的帖子关于这个问题的帖子(显示C++相当于MEL的代码)。

最后说一句话。Python是一门脚本语言! 即使它可以被解释器 “预编译”,但它仍然是脚本。

话虽如此,但我认为这个论点有点无济于事,因为即使你用Maya API Python绑定的脚本,一旦了解了基础知识,你就会意识到,一段C++代码和Python中的等效代码在语法上的差异是十分小的。

下面是一个变量声明的小例子。

C++

MFnPlugin fnPlugin(obj)

Python

fnPlugin = OpenMayaMPx.MFnPlugin(obj)

我认为C++仍然是最容易使用的,我认为(我不是因为这个例子而这么说的,而是从更广泛的角度来说),这似乎是符合逻辑的,因为它是历史上使用的实现,再加上它仍然是一种相当接近机器的语言。

那么,这一切都取决于你是否想要快速发展。编译后的代码(C++)显然会更快(约10次),但我猜想,如果你想快的话,要么你不擅长,你写的代码很烂,这让你除了求助于低级语言来提速之外,没有其他的解决办法,要么你是一个 "真正的 "开发者…如果是这样的话,我不明白你在周日的博客上做什么,你是在做什么?我!!)。

管他呢,总有一天我要在MEL、pythonForMel、C++和pythonForMayaApi之间做一个桥梁!

代码基础知识

在我们开始写定位器之前,我们需要基础代码。我们开始吧!

import sys
import maya.OpenMaya as OpenMaya
import maya.OpenMayaMPx as OpenMayaMPx
import maya.OpenMayaRender as OpenMayaRender
 
nodeTypeName = "myCustomLocator"
nodeTypeId = OpenMaya.MTypeId(
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值