2016-02-13 2 views
0

Мне нужна была помощь в python относительно получения совместного списка в Maya. Я новичок, так что все еще учась. Вот что я пытаюсь сделать: - Для каждого сустава или суставов, существующих на сцене, я хочу создать круг NURBS для каждого сустава и сопоставить его положение с суставами в сцене. Вот что у меня есть до сих пор:Как создать круг NURBS для каждого сустава в сцене с помощью Maya Python lib?

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

ли вы пробовали простой цикл для выпуска?

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) 
+0

Большое вам спасибо за эту работу. Просто быстрый вопрос, как сказать майе, чтобы применить его только к определенному диапазону суставов. Если есть соединения 1-10, я хочу, чтобы этот код применим только к суставу 3-8. Как сохранить и применить это? –