如何使用Maya Python lib为场景中的每个关节创建NURBS圆?

时间:2016-02-13 01:30:34

标签: python maya

我需要一些关于在Maya获取联合列表的python帮助。我是新手,所以还在学习。这是我想要做的: - 对于场景中存在的每个关节或关节,我想为每个关节创建一个NURBS圆,并将其位置与场景中的关节匹配。以下是我到目前为止的情况:

selected = cmds.ls(sl=True) #First joint selected)
joint_translate = cmds.xform(selected[1], query=True, translation=True, worldSpace=True) #first joint translation value. 
joint_rotate = cmds.xform(selected[1], query=True, rotation=True, worldSpace=True) #first joint rotation value. 
cmds.xform(selected[0], translation=joint_translate, worldSpace=True) #matching whatever is selected to the first joint. 
cmds.xform(selected[0], rotation=joint_rotate, worldSpace=True)

但是我想存储所有的平移和旋转值而不选择它们。如何存储每个关节变换值以及如何存储每个关节的名称。然后创建圆并将其与每个关节匹配。我知道我必须为此使用for循环。我这样做了:

joints = cmds.ls(type='joint')
selected = cmds.ls(sl=True)
joint_translate = cmds.xform(selected[0], query=True, translation=True, worldSpace=True)
joint_rotate = cmds.xform(selected[0], query=True, rotation=True, worldSpace=True)
cmds.circle(nr=(1,0,0), c=(0, 0, 0), r=1.5, n='Circle1')
cmds.xform('Circle1', translation=joint_translate, worldSpace=True)
cmds.xform('Circle1', rotation=joint_rotate, worldSpace=True)

但它只适用于第一个关节(我知道),但我使用确切的名称来匹配它(这就是它起作用的原因)。我想这样做而不使用圆圈的名称。

重点是为场景中的每个关节创建NURBS圆。关节可以是3或5或20.

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:1)

你为你的问题试过一个简单的for循环吗?

joints = cmds.ls(type='joint')
for eachJoint in joints:
    joint_translate = cmds.xform(eachJoint, query=True, translation=True, worldSpace=True)
    joint_rotate = cmds.xform(eachJoint, query=True, rotation=True, worldSpace=True)
    newCircl = cmds.circle(nr=(1,0,0), c=(0, 0, 0), r=1.5, n='Circle1_%s' % eachJoint)
    cmds.xform(newCircl[0], translation=joint_translate, worldSpace=True)
    cmds.xform(newCircl[0], rotation=joint_rotate, worldSpace=True)