2017-09-06 136 views
2

我正在尝试创建一个脚本,该脚本可以帮助我自动创建脊柱装备,但我遇到了问题。我正在按照提供here提供的教程进行操作,并且正在研究将曲线蒙上IK关节的步骤。在Maya中使用python创建bindSkin

然而,当我尝试使用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。

回答

1

您应该使用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中的各种权重attrs(这有点难度,但不是很多)

+0

嗯....看起来我开始回答这个问题,并且在你发布关于skinCluster命令的同一时间开始回答这个问题并校对我的代码 - 没有注意到你已经找到它了,但是很高兴你做到了! –

+0

谢谢。这比我提供的解决方案要完整得多。 – Peter

+0

很高兴我能帮忙! –

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 - 家长,点,东方,鳞,目的,杆矢量

+0

对不起,ikwhatevers是关节。我会编辑这个。 – Peter

0

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