Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 如何从Maya中的脚本更改变形器的权重?_Python_Maya_Mel_Pymel_Maya Api - Fatal编程技术网

Python 如何从Maya中的脚本更改变形器的权重?

Python 如何从Maya中的脚本更改变形器的权重?,python,maya,mel,pymel,maya-api,Python,Maya,Mel,Pymel,Maya Api,如何从Maya中的脚本更改变形器的权重? 此问题最适合于Maya 2013中的Pymel,但如果不可能,我仍有兴趣了解Python、MEL中的答案,或者使用变形器的C++Maya API,可以通过以下方式查询Python中的权重: VertexNb = cmds.polyEvaluate(Mesh, v=1) - 1 weight = cmds.getAttr('{0}.weightList[0].weights[0:{1}]'.format(deformerNode, VertexNb))

如何从Maya中的脚本更改变形器的权重?


此问题最适合于
Maya 2013
中的
Pymel
,但如果不可能,我仍有兴趣了解
Python
MEL
中的答案,或者使用变形器的
C++Maya API
,可以通过以下方式查询Python中的权重:

VertexNb = cmds.polyEvaluate(Mesh, v=1) - 1
weight = cmds.getAttr('{0}.weightList[0].weights[0:{1}]'.format(deformerNode, VertexNb))
对于混合形状:

VertexNb = cmds.polyEvaluate(Mesh, v=1)
weight = cmds.getAttr('{0}.inputTarget[0].baseWeights[0:{1}]'.format(blendShapeNode, VertexNb))
要设置值,请执行以下操作:

cmds.setAttr('{0}.weightList[0].weights[0:{1}]'.format(deformerNode, VertexNb), *weight, size=len(weight))

您可能会尝试使用.weightList[0].weights[:]但maya不会每次都返回所有值。我想在将答案标记为解决方案之前验证您的答案,但我对
*weight
中的
*
感到困惑。它在Python中的含义是什么?*weight是pythonic,用于解压值。例如,当您使用:def myFunc(*args)时,您会看到与*相同的用法,双星**与kwargs(字典)一起使用。目前为止,它只测试了权重查询。我想明确指出,对于不在变形集中的所有索引,attribute
.weightList[0].weights
将返回1。我们可以使用
.weightList[0].weights.getArrayIndices()在Pymel中获得变形顶点的索引