如何使用带元组的itertool将关节移动到不同的位置?

2024-05-07 03:47:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习一些Python的索具和我的大学并没有真正专注于这一点,我有点困惑的几个代码组合,我试图使用。你知道吗

我想为每个关节移动很多关节到不同的位置,而不是命令移动()连续20次,我想使用带元组的iteritems使我的行更干净。你知道吗

这是我用Python编写的一段小代码:

# import commands from maya package
from maya import cmds

moveTailJoints = {
    'tail_001_jnt': {(0, 2.607, -20.579)},
}

for driver, driven in moveTailJoints.iteritems():
    cmds.move(
        driver.format(),
        driven.format()
    )

这是最好的方法吗?你知道吗


Tags: 代码fromimport命令formatdriver大学元组
1条回答
网友
1楼 · 发布于 2024-05-07 03:47:51

欢迎来到SO!你知道吗

有几件事: 您不需要在位置值{(0, 2.607, -20.579)}周围嵌套字典,因为它没有任何用途。你知道吗

您可以使用dict的内置.items()方法在对象和位置之间循环。你知道吗

你不是很清楚,但我假设这些位置值是世界坐标?如果是这样,那么您需要在cmds.move方法中包含绝对标志。或者,也可以使用cmds.xform将对象移动到世界空间位置。你知道吗

import maya.cmds as cmds

moveTailJoints = {
    'tail_001_jnt':(0, 1, 0),
    'tail_002_jnt':(0, 2, 0),
    'tail_003_jnt':(0, 3, 0),
    'tail_004_jnt':(0, 4, 0)   
}

for obj, pos in moveTailJoints.items():
    tx, ty, tz = pos
    cmds.move(tx, ty, tz, obj, a=True)

有关命令用法的更多示例,请查看Maya文档:

http://help.autodesk.com/view/MAYAUL/2018/ENU/?guid=__CommandsPython_index_html

相关问题 更多 >