Go to: Synopsis. Return value. Related. Flags. Python examples.
skinPercent(
[object] [selectionList]
, [ignoreBelow=float], [normalize=boolean], [pruneWeights=float], [relative=boolean], [resetToDefault=boolean], [transform=string], [transformMoveWeights=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, transformMoveWeights, transformValue, value, zeroRemainingInfluences
Long name (short name) |
Argument types |
Properties |
|
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.
|
|
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.
|
|
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.
|
|
resetToDefault(rtd)
|
boolean
|
|
|
Sets the weights of the selected components to their
default values, overwriting any custom weights.
|
|
transform(t)
|
string
|
|
|
In Mel, when 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 Python, when used with None instead of the name of the transform,
the command returns an array of strings corresponding to
the names of the transforms influencing the selected object
components. If used with a transform name, the command returns the weight of the
selected object. The command will return an average weight if several
components have been selected.
In query mode, this flag can accept a value.
|
|
transformMoveWeights(tmw)
|
string
|
|
|
This flag is used to transfer weights from a source influence to one or more target influences. It acts on the selected vertices. The flag must be used at least twice to generate a valid command. The first flag usage indicates the source influence from which the weights will be copied. Subsequent flag usages indicate the target influences.
|
|
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.
|
|
value(v)
|
boolean
|
|
|
Returns an array of doubles corresponding to the
joint weights for the selected object component.
|
|
zeroRemainingInfluences(zri)
|
boolean
|
|
|
If set, the weights not assigned by the -transformValue
flag are set to 0. The default is off.
|
|
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 joint3
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[100]', transform='joint3', query=True )
# Get the names of the joints influencing vtx[100]
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[100]', transform=None, 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)] )