Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用带元组的itertool将关节移动到不同的位置?_Python_Maya - Fatal编程技术网

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

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

我刚开始学习一些用于装配的Python,我的大学并没有真正关注这一点,我对尝试使用的几个代码组合感到有点困惑

我想为每个关节将许多关节移动到不同的位置,而不是连续20次使用cmds.move(),我想使用带元组的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()
    )
这是最好的方法吗?

欢迎来到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()并更改转换值