0

实际上我是 api 的新手,我正在尝试获取翻译值(x,y,z),但问题是当我只指定“translate”而不是“translateX”、“translateY”、“translateZ”时我无法获得每个单独的行。有什么办法可以得到我真正想要的吗?

这是代码:

import maya.OpenMaya as om

selected = om.MSelectionList()
om.MGlobal.getActiveSelectionList(selected)

obj = om.MObject()
selected.getDependNode(0,obj)

print(om.MFnDependencyNode(obj).findPlug("translateX").asFloat())
print(om.MFnDependencyNode(obj).findPlug("translateY").asFloat())
print(om.MFnDependencyNode(obj).findPlug("translateZ").asFloat())

谢谢你...

4

1 回答 1

2

translate 属性是一个复合属性。在 Maya API 中,您必须单独查询复合属性的每个子属性才能检索复合属性的完整值。

但是 MEL getAttr() 命令可以一次检索到 translate 属性的值。由于您使用的是 Python,因此您可以在同一脚本中混合使用 MEL 命令和对 Maya API 的调用:

import maya.OpenMaya as om
import maya.cmds as cmds

selected = om.MSelectionList()
om.MGlobal.getActiveSelectionList(selected)

obj = om.MObject()
selected.getDependNode(0,obj)

depNodeName = om.MFnDependencyNode(obj).name()

print(cmds.getAttr(depNodeName + '.translate')[0])
于 2015-04-20T10:47:45.300 回答