使用python在Maya中创建bindSkin

时间:2017-09-06 04:10:47

标签: python maya skinning

我正在尝试创建一个可以帮助我自动创建脊柱装备的脚本,但我遇到了一个问题。我正在按照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。

3 个答案:

答案 0 :(得分:2)

你应该使用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命令,甚至只使用setAttr来表示skinCluster中的各种权重(这有点困难,但并不多)

答案 1 :(得分:0)

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 module - Constrain menu - 父级,点,东方,比例,目标,极向量

答案 2 :(得分:0)

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