【发布时间】:2019-04-17 21:41:52
【问题描述】:
使用 Maya Python API 2.0,我正在尝试进行回调以更改插头的值。但是,我尝试过的方法都不起作用。
我尝试过使用 MPlug.setFloat() 方法,但这并没有产生预期的结果;我发现插头的价值没有变化。我认为这不起作用,因为我需要在更改其值后清洁插头。因此,我尝试使用 MPlug.asDataHandle() 方法获取插头的数据句柄,然后使用数据句柄的 datablock() 方法,以便使用数据句柄和数据块来设置插头的值并清理它。但是,我在使用 MDataHandle.datablock() 时收到错误消息“RuntimeError: (kFailure): Unexpected Internal Failure”。
现在我正在尝试以下操作,它使用数据句柄来设置插头的值并清理它:
def setPlugFloatValue(node, plugName, val):
fnSet = OpenMaya.MFnDependencyNode(node)
plug = fnSet.findPlug(plugName,True)
handle = plug.asMDataHandle()
handle.setFloat(val)
handle.setClean()
上述函数的目的是找到某个节点中的某个插件,然后使用它的数据句柄来设置它的值并清理它。在我的程序中,回调使用此函数来更改节点子节点的 translateX、translateY 和 translateZ 插件。当它应用到的节点的翻译值发生变化时,回调运行。在我用来测试此回调的场景中,我将回调应用于多边形网格对象,其中一个子对象也是多边形网格对象。因此,当我翻译父对象时,我希望其子对象的翻译值会发生变化。但是当我在翻译它的父对象后选择子对象时,它的翻译值没有改变。
【问题讨论】: