Python 如何使用带元组的itertool将关节移动到不同的位置?
我刚开始学习一些用于装配的Python,我的大学并没有真正关注这一点,我对尝试使用的几个代码组合感到有点困惑 我想为每个关节将许多关节移动到不同的位置,而不是连续20次使用cmds.move(),我想使用带元组的iteritems使我的线条更清晰 这是我用Python编写的一小段代码:Python 如何使用带元组的itertool将关节移动到不同的位置?,python,maya,Python,Maya,我刚开始学习一些用于装配的Python,我的大学并没有真正关注这一点,我对尝试使用的几个代码组合感到有点困惑 我想为每个关节将许多关节移动到不同的位置,而不是连续20次使用cmds.move(),我想使用带元组的iteritems使我的线条更清晰 这是我用Python编写的一小段代码: # import commands from maya package from maya import cmds moveTailJoints = { 'tail_001_jnt': {(0, 2.6
# 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()
)
这是最好的方法吗?欢迎来到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文档:
我不确定
cmds.move正在做什么。您是否试图在tail\u 001\u jnt
处操纵元组
,以便所有组件都可以切换?我正在尝试将tail\u 001\u jnt移动到这些特定坐标和cmds。move是Maya Python执行此操作的命令。您能否向我们演示如何调用cmds.move
一次?我的意思是,在您的示例中,您将如何移动项目?是否是cmds.move(0,2.607,-20.579)
?您的tail_001和tail_002在定位中是否相关,如果不是,您可以使用cmds.setAttr()并更改转换值