我需要一些关于在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.
非常感谢任何帮助:)
答案 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)