赞
踩
原文地址 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教程,我确实有了一些基础),但一旦代码运行起来,修改它来制作自己的定位器是相当有趣的。
所以,在菜单上我们有:
虽然不多,但你会发现这已经够用了!
不!如果你这么想,那你就什么都没看懂。这两者是密切相关的。如果我选择了定位器这个例子,不仅仅是因为它的 “酷”,还因为它是一个只有用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(
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。