This was an example from an Autodesk training course I attended, so I
presume it's the "best" way to do it
blendShapeNode = OM.MObject()
selList = OM.MSelectionList()
try:
# Get the selected blendShape node
OM.MGlobal.getActiveSelectionList(selList)
if(selList.length() !=0 ):
selList.getDependNode(0,blendShapeNode)
fnDep = OM.MFnDependencyNode(blendShapeNode)
# Verify that the node is a Blend Shape
if (blendShapeNode.apiType() == OM.MFn.kBlendShape ):
attrName = "weight";
weightArrayPlug = fnDep.findPlug(attrName)
# Find out if this plug is a multi plug
if(weightArrayPlug.isArray()):
# Get the name of the plug and print it
plugName = weightArrayPlug.name()
print("Plug %s is an array plug." % plugName)
# Find how many elements are in this multi plug
numberOfElem = weightArrayPlug.numElements()
print("This plug has %i elements." % numberOfElem)
# Traverse all the element plugs
for j in range( 0, numberOfElem ):
elementPlug = weightArrayPlug.elementByPhysicalIndex(j)
# Print out the element plug's physical index and
logical index
print "Physical index: %i; Logical index: %i" % (j,
elementPlug.logicalIndex())
# Print out the value in every element plug
# NOTE: There is no script support for MPlug.getValue()
valueElem = elementPlug.asDouble()
print("The value in this element plug is %f" %
valueElem)
except:
print("Failed to get selection list")
raise
On Tue, Jan 26, 2010 at 12:13 PM, Brandon Harris <[email protected]>wrote:
> Forgot to post. I'm meaning in API. I know how to do this in Mel.
>
>
> On Jan 26, 12:13 pm, Brandon Harris <[email protected]> wrote:
> > I'm still looking, but thought I would ask here, is there a way to
> > grab blendshape weights for individual vertices.
>
> --
> http://groups.google.com/group/python_inside_maya
>
--
http://groups.google.com/group/python_inside_maya