PyMel Maya Python - 设置关节位置

PyMel Maya Python - Set Joint location

我是 PyMel 的新手(之前完成 Python),我发现可用的文档非常复杂,有时仍然只是 MEL 而不是 Python。在这里做任何事情都非常令人沮丧。

我正在寻找一种方法来设置我的一个关节的绝对位置及其骨骼的方向。

我要操纵的关节是这样找到的:

theJoint = ls("LeftArm")[0]

正在使用

theJoint.setAngleX(45)

我可以设置它相对于父级的旋转。但是我需要做的是设置世界中的位置 space 绝对坐标,以及旋转。

没有任何 setPositionX()setTransform(X) 方法可供我使用,所以我想知道我是否来对地方了。

我该如何完成这项任务,更重要的是:我实际上应该从哪里开始寻找正确且有用的命令库?如果没有工作示例或小演示总是依赖于上下文选择的对象,这样做是非常令人沮丧的,这是我做不到的。

当您使用 pymels 属性对象设置属性时(类似于 mynode.rotate.set() 的语法,您是将数字直接插入属性;但数字只是数字,在下游会被解释为就好像您已将它们输入到通道盒.

您可以使用 Pymel 版本的 xformmoverotate 命令来设置绝对值。这些命令的工作方式与常规 Maya 文档中的命令相同。这个。例如,将在世界 space 中将 Joint2 旋转到 0,0,10,而不管它的父级在做什么:

import pymel.core as pm
example = pm.PyNode('joint2')
pm.rotate(example, [0,0,10], a=True, ws=True) 

a 标志是 'absolute',ws 是 'worldspace'(文档 here 用于旋转)。 movexform 也有绝对值和世界值 space 选项。所以要在 worldspace 中放置一个关节,它会是

 pm.move(example, [1,2,3], a=True, ws=True)

xform 有点复杂,有更多选项,但做同样的事情以及允许您设置枢轴。