谢谢你花点时间来读这篇文章!所以,我的第一个问题是,我试图创建一个函数“selectionData()”,以获取对象的translate、rotate和scale值,然后将它们作为字典返回,但我发现自己有点困难。使用下面列出的代码,我只得到对象的名称。我可以把它的值转换成旋转的,怎样才能得到它的值呢?在
我的第二个问题是,我试图创建一个函数“setData(data)”,它将前面提到的用selectionData()构建的字典作为输入,并将字典中的数据还原为选定的对象。我该怎么做?在
如果这两个问题中有一个是愚蠢的,我很抱歉,但是谢谢你抽出时间,不管怎样!干杯!在
当前代码如下:
from maya import cmds
sel = cmds.ls(sl = 1)
meshes =[]
for s in sel :
shape = cmds.listRelatives(s , shapes = 1 )
if shape :
if cmds.nodeType(shape[0]) == "mesh" :
meshes.append(s )
meshData = {}
for m in meshes :
pos = cmds.xform ( m , q =1 , ws = 1 , t = 1)
rot = cmds.xform( m , q =1 , ws = 1 , rotation = 1 )
scl = cmds.getAttr ( m + '.s' )[0]
currentDict = {
"pos" : pos ,
"rot" : rot ,
"scl" : scl ,
}
meshData[m] = currentDict
def selectionData( selectionDict):
for k in selectionDict :
print k
selectionData(meshData)
你真的只想反过来做你所拥有的 设置
q=1
将命令设置为query mode
。 删除此标志默认命令为edit mode
getAttr
和setAttr
是它们各自的命令,但是您需要知道您正在设置的数据。即使您获取了上面的s
属性,您也使得它只获取x
值,所以当您设置它时,您需要指定sx
首先,要列出包含变换的所有对象,可以使用以下命令:
如果要读/写变换,则不需要分别获取平移、旋转和缩放。可以这样读取复合变换矩阵:
^{pr2}$您将得到一个16个浮点数的列表,这些浮点数可以应用于其他对象:
我不确定您希望如何将变换从一组选定对象映射到另一组对象。如果你描述一下,我可以把完整的代码贴出来。在
以下脚本将收集字典中所有选定对象的复合变换矩阵,其中长对象名作为键:
然后,如果在Maya中移动/旋转/缩放对象,则可以这样还原:
相关问题 更多 >
编程相关推荐