使用 python 在 Maya 中创建绑定皮肤

Using python to create a bindSkin in Maya

我正在尝试创建一个脚本来帮助我自动创建脊椎装备,但我 运行 遇到了问题。我正在按照 here 提供的教程进行操作,并且我正在处理将曲线蒙皮到 ​​IK 关节的步骤。

但是,当我尝试使用 mc.bindSkin() 时,我不断收到错误消息:

Error: RuntimeError: file[directory]/maya/2016.5/scripts\createRigSpine.py line 200: Maya command error)

现在我做很多实验已经太晚了,但我希望有人能帮助我,或者告诉我我是否使用了错误的命令。

mc.select(crvSpine, jntIkMidSpine, jntIkChest)
mc.bindSkin(crvSpine, jntIkMidSpine, jntIkChest, tsb=True)

(也尝试了 mc.bindSkin() 和 mc.bindSkin(tsb=True))

理想情况下,我希望设置为:

Bind To: Selected Joints
Bind Method: Closest Distance
Skinning Method: Classic Linear
Normalize Weights: Interactive

编辑:我想使用 skinCluster,而不是 bindSkin。

cmds.bindSkin() 用于将骨骼绑定到几何体的命令。它不适合仅绑定到 IK。所以你需要分配你需要绑定的东西joint

例如:

import maya.cmds as mc

mc.select('ikHandle1','nurbsCircle1','joint5')
mc.bindSkin('ikHandle1','nurbsCircle1','joint5')

# the order of selection is vital

要约束选定的对象,请使用如下命令:

mc.pointConstraint('ikHandle1','nurbsCircle1', weight=5.0)

要了解您可以使用哪些约束,请使用 Rigging moduleConstrain menuParent、Point、Orient、Scale、Aim、Pole Vector .

我使用了错误的命令。 mc.skinCluster 是我想要使用的,而不是 mc.bindSkin。

你应该使用 skinCluster command 将你的曲线绑定到关节 - 实际上你可以在不选择任何东西的情况下完成!

试试这个:

import maya.cmds as mc

influences = [jntIkMidSpine, jntIkChest]
scls = mc.skinCluster(influences, crvSpine, name='spine_skinCluster', toSelectedBones=True, bindMethod=0, skinMethod=0, normalizeWeights=1)[0]

# alternatively, if you don't want such a long line of code:
#
influences = [jntIkMidSpine, jntIkChest]
kwargs = {
    'name': 'spine_skinCluster',  # or whatever you want to call it...
    'toSelectedBones': True,
    'bindMethod': 0,
    'skinMethod': 0,
    'normalizeWeights': 1
}
scls = mc.skinCluster(influences, crvSpine, **kwargs)[0]

# OR just use the short names for the kwargs...
#
influences = [jntIkMidSpine, jntIkChest]
scls = mc.skinCluster(influences, crvSpine, n='spine_skinCluster', tsb=True, bm=0, sm=0, nw=1)[0]

如果需要,您还可以为曲线的每个 cv 显式设置所需的权重。您可以使用 skinPercent 命令,甚至可以对 skinCluster 中的各种权重属性使用 setAttr(这有点困难,但并不多)