Go to: Synopsis. Return value. Related.
Flags. Python
examples.
skinPercent( [object] [selectionList] ,
[ignoreBelow=float],
[normalize=boolean], [pruneWeights=float], [relative=boolean], [resetToDefault=boolean], [transform=string], [transformValue=[string, float]],
[value=boolean], [zeroRemainingInfluences=boolean])
Note: Strings representing object names and
arguments must be separated by commas. This is not depicted in the
synopsis.
skinPercent is undoable, queryable, and NOT editable.
This command edits and queries the weight values on members of a
skinCluster node, given as the first argument. If no object
components are explicitly mentioned in the command line, the
current selection list is used. Note that setting multiple weights
in a single invocation of this command is far more efficient than
calling it once per weighted vertex.
None
In query mode, return type is based on queried flag.
copySkinWeights, skinCluster
ignoreBelow, normalize, pruneWeights, relative, resetToDefault, transform, transformValue, value, zeroRemainingInfluences
Long name (short name) |
Argument types |
Properties |
value(v) |
boolean |
|
|
Returns an array of doubles corresponding to the joint weights
for the selected object component. |
|
transform(t) |
string |
|
|
If used after the -query flag (without an argument) the command
returns an array of strings corresponding to the names of the
transforms influencing the selected object components. If used
before the -query flag (with a transform name), the command returns
the weight of the selected object component corresponding to the
given transform. The command will return an average weight if
several components have been selected.
In query mode, this flag can accept a value.
|
|
transformValue(tv) |
[string, float] |
|
|
Accepts a pair consisting of a transform name and a value and
assigns that value as the weight of the selected object components
corresponding to the given transform. |
|
relative(r) |
boolean |
|
|
Used with -transformValue to specify a relative setting of
values. If -relative is true, the value passed to -tv is added to
the previous value. Otherwise, it replaces the previous value. |
|
ignoreBelow(ib) |
float |
|
|
Limits the output of the -value and -transform queries to the
entries whose weight values are over the specified limit. This flag
has to be used before the -query flag.
In query mode, this flag needs a value.
|
|
normalize(nrm) |
boolean |
|
|
If set, the weights not assigned by the -transformValue flag
are normalized so that the sum of the all weights for the selected
object component add up to 1. The default is on. NOTE: The
skinCluster has a normalizeWeights attribute which when set to OFF
overrides this attribute! If the skinCluster.normalizeWeights
attribute is OFF, you must set it to Interactive in order to
normalize weights using the skinPercent command. |
|
zeroRemainingInfluences(
zri) |
boolean |
|
|
If set, the weights not assigned by the -transformValue flag
are set to 0. The default is off. |
|
resetToDefault(rtd) |
boolean |
|
|
Sets the weights of the selected components to their default
values, overwriting any custom weights. |
|
pruneWeights(prw) |
float |
|
|
Sets to zero any weight smaller than the given value for all
the selected components. To use this command to set all the weights
to zero, you must turn the -normalize flag "off" or the skinCluster
node will normalize the weights to sum to one after pruning them.
Weights for influences with a true value on their "Hold Weights"
attribute will not be pruned. |
|
Flag can appear in Create mode of
command |
Flag can appear in Edit mode of command |
Flag can appear in Query mode of command |
Flag can have multiple arguments, passed
either as a tuple or a list. |
import maya.cmds as cmds
# Create a joint chain and a polygonal plane and bind them as skin
cmds.select(d=True)
cmds.joint(p=(-3.0, 0.0,-12.0))
cmds.joint(p=(-3.0, 0.0, -5.0))
cmds.joint(p=(1.0, 0.0, 5.5))
cmds.joint(p=(6.0, 0.0, 10.0))
cmds.polyPlane(w=20.0,h=20.0,sx=25,sy=25)
cmds.skinCluster( 'joint1', 'pPlane1' )
# For vtx[100], set the weight wrt joint1 to 0.2, the weight
# wrt joint3 to 0.8 and adjust the remaining weights to keep
# the overall weight normalized (i.e. set all other joints to zero,
# since the weights we are setting sum to 1.0)
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[100]', transformValue=[('joint1', 0.2), ('joint3', 0.8)])
# Get the weight values corresponding to all of the influences
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[100]', query=True, value=True )
# Get the weight values that are above 0.5
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[100]', ignoreBelow=0.5, query=True, value=True )
# Get the weight of vtx[100] corresponding to joint1
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[100]', transform='joint1', query=True )
# Normalize the existing weights for vtx[100]
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[100]', normalize=True )
# Reset the weights for vtx[100] to their default values
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[100]', resetToDefault=True )
# Zero all the weights that are below 0.1
#
cmds.skinPercent( 'skinCluster1', 'pPlane1', pruneWeights=0.1 )
# Zero all the weights
#
cmds.skinPercent( 'skinCluster1', 'pPlane1', pruneWeights=100, normalize=False )
# Assign weights to a large number of vertices,
# several at a time to reduce the number of calls
# to the skinPercent command.
#
for i in range(0,675,10):
cmds.select('pPlane1.vtx[%i]' % i,'pPlane1.vtx[%i]' % (i+1), 'pPlane1.vtx[%i]' % (i+2), 'pPlane1.vtx[%i]' % (i+3), 'pPlane1.vtx[%i]' % (i+4), 'pPlane1.vtx[%i]' % (i+5), 'pPlane1.vtx[%i]' % (i+6), 'pPlane1.vtx[%i]' % (i+7), 'pPlane1.vtx[%i]' % (i+8), 'pPlane1.vtx[%i]' % (i+9))
cmds.skinPercent( 'skinCluster1',transformValue=[('joint1', 0.5),('joint2', 0.5)] )