使用 Maya 2016 SP6 Python 2.0 API 使用斜坡节点的正确方法是什么?
What is the proper way to work with ramp nodes using the Maya 2016 SP6 Python 2.0 API?
我是使用 Python 2.0 API 编程的新手(使用过 Python Maya.cmds)。据我了解,我应该能够使用相应的斜坡节点功能集来操纵通过 MObject 引用的斜坡节点。不幸的是,我找不到任何关于如何正确执行此操作的示例,甚至找不到任何关于调用函数集的真正清晰的信息。在 API 文档中,有一个 "MRampAttribute" class,描述说它实际上是 "Functionset for creating and working with ramp attributes." 不幸的是,我没有运气得到它工作...
我确实找到了另一条可能相关的信息 here,它是斜坡节点兼容函数集的简短列表,包括以下内容:kBase、kNamedObject、kDependencyNode、kTexture2d 和 kRamp .不幸的是,除了它们出现在 MFn class.
下的常量列表中之外,我还没有真正找到关于这些函数集的文档。
理想情况下,最好有一个非常简单的示例来显示以下内容:
- 将场景中已经存在的渐变节点(渐变纹理节点?)正确存储在 MObject 中
- 创建适当的斜坡节点函数集的实例并将其设置为作用于斜坡节点参考
- 使用函数集做一些简单的事情,比如更改或添加颜色条目
我想最后一件事要注意的是,我正在尝试使用颜色渐变(渐变渐变),而不是曲线(?)渐变,因为它们似乎密切相关。
谢谢!
更新:看起来越来越像问题可能是 Python 2.0 API 非常不完整,特别是因为这个直接的 Maya 2016 SP6 没有扩展。正在调查其他一些问题,似乎在扩展 2 中添加了诸如 MItDag 之类的基本内容,但在基本版本中不可用...
TL;DR - 我似乎无法使用 Python 2.0 API 找到应该在 Maya 2016 SP6 中的斜坡节点上运行的功能集。非常感谢一个简单的工作示例代码片段作为开始的地方。
除了 .colorEntryList
属性 是一个复合数组属性外,Ramp 节点并没有什么特别之处;它没有特殊的功能集。而且,令人困惑的是,.colorEntryList
不是 而不是 和 MRampAttribute
,它只是一个常规的索引复合属性。
test = cmds.createNode('ramp')
node = om.MGlobal.getSelectionListByName(test).getDependNode(0)
depfn = om.MFnDependencyNode(node)
compound_plug = depfn.findPlug("colorEntryList", False)
for idx in range(compound_plug.numElements()):
index_plug = compound_plug.elementByPhysicalIndex(idx)
pos_handle = index_plug.child(0).asMDataHandle()
color_handle = index_plug.child(1).asMDataHandle()
print idx, pos_handle.asFloat(), ":", color_handle.asFloat3()
您会注意到元素的顺序 不是 您期望的顺序,您需要检查 pos_handle
中的位置值以找到您想要的那个想。节点上的其他属性只是通用属性。
如果您不是在 MPxCommand 中执行此操作,您可能只想使用 maya.cmds
执行此操作,这不会很麻烦,如果这是一个工具操作,速度差异可能无关紧要.
我是使用 Python 2.0 API 编程的新手(使用过 Python Maya.cmds)。据我了解,我应该能够使用相应的斜坡节点功能集来操纵通过 MObject 引用的斜坡节点。不幸的是,我找不到任何关于如何正确执行此操作的示例,甚至找不到任何关于调用函数集的真正清晰的信息。在 API 文档中,有一个 "MRampAttribute" class,描述说它实际上是 "Functionset for creating and working with ramp attributes." 不幸的是,我没有运气得到它工作...
我确实找到了另一条可能相关的信息 here,它是斜坡节点兼容函数集的简短列表,包括以下内容:kBase、kNamedObject、kDependencyNode、kTexture2d 和 kRamp .不幸的是,除了它们出现在 MFn class.
下的常量列表中之外,我还没有真正找到关于这些函数集的文档。理想情况下,最好有一个非常简单的示例来显示以下内容:
- 将场景中已经存在的渐变节点(渐变纹理节点?)正确存储在 MObject 中
- 创建适当的斜坡节点函数集的实例并将其设置为作用于斜坡节点参考
- 使用函数集做一些简单的事情,比如更改或添加颜色条目
我想最后一件事要注意的是,我正在尝试使用颜色渐变(渐变渐变),而不是曲线(?)渐变,因为它们似乎密切相关。
谢谢!
更新:看起来越来越像问题可能是 Python 2.0 API 非常不完整,特别是因为这个直接的 Maya 2016 SP6 没有扩展。正在调查其他一些问题,似乎在扩展 2 中添加了诸如 MItDag 之类的基本内容,但在基本版本中不可用...
TL;DR - 我似乎无法使用 Python 2.0 API 找到应该在 Maya 2016 SP6 中的斜坡节点上运行的功能集。非常感谢一个简单的工作示例代码片段作为开始的地方。
除了 .colorEntryList
属性 是一个复合数组属性外,Ramp 节点并没有什么特别之处;它没有特殊的功能集。而且,令人困惑的是,.colorEntryList
不是 而不是 和 MRampAttribute
,它只是一个常规的索引复合属性。
test = cmds.createNode('ramp')
node = om.MGlobal.getSelectionListByName(test).getDependNode(0)
depfn = om.MFnDependencyNode(node)
compound_plug = depfn.findPlug("colorEntryList", False)
for idx in range(compound_plug.numElements()):
index_plug = compound_plug.elementByPhysicalIndex(idx)
pos_handle = index_plug.child(0).asMDataHandle()
color_handle = index_plug.child(1).asMDataHandle()
print idx, pos_handle.asFloat(), ":", color_handle.asFloat3()
您会注意到元素的顺序 不是 您期望的顺序,您需要检查 pos_handle
中的位置值以找到您想要的那个想。节点上的其他属性只是通用属性。
如果您不是在 MPxCommand 中执行此操作,您可能只想使用 maya.cmds
执行此操作,这不会很麻烦,如果这是一个工具操作,速度差异可能无关紧要.