Go to: Synopsis. Return value. Related.
Flags. Python
examples.
skinCluster( objects , [addInfluence=string], [addToSelection=boolean], [after=boolean], [afterReference=boolean], [baseShape=string], [before=boolean], [deformerTools=boolean], [dropoffRate=float], [exclusive=string], [forceNormalizeWeights=boolean],
[frontOfChain=boolean],
[geometry=string], [geometryIndices=boolean],
[ignoreBindPose=boolean],
[ignoreHierarchy=boolean],
[ignoreSelected=boolean],
[influence=string], [lockWeights=boolean], [maximumInfluences=int],
[moveJointsMode=boolean],
[name=string], [normalizeWeights=int], [nurbsSamples=int], [obeyMaxInfluences=boolean],
[parallel=boolean], [polySmoothness=float], [prune=boolean], [remove=boolean], [removeFromSelection=boolean],
[removeInfluence=string],
[removeUnusedInfluence=boolean],
[selectInfluenceVerts=string],
[skinMethod=int], [smoothWeights=float], [smoothWeightsMaxIterations=
int], [split=boolean],
[toSelectedBones=boolean],
[toSkeletonAndTransforms=boolean],
[unbind=boolean], [unbindKeepHistory=boolean],
[useGeometry=boolean],
[volumeBind=float], [volumeType=int], [weight=float], [weightedInfluence=boolean])
Note: Strings representing object names and
arguments must be separated by commas. This is not depicted in the
synopsis.
skinCluster is undoable, queryable, and editable.
The skinCluster command is used for smooth skinning in maya. It
binds the selected geometry to the selected joints or skeleton by
means of a skinCluster node. Each point of the bound geometry can
be affected by any number of joints. The extent to which each joint
affects the motion of each point is regulated by a corresponding
weight factor. Weight factors can be modified using the skinPercent
command. The command returns the name of the new skinCluster.
The skinCluster binds only a single geometry at a time. Thus, to
bind multiple geometries, multiple skinCluster commands must be
issued.
Upon creation of a new skinCluster, the command can be used to add
and remove transforms (not necessarily joints) that influence the
motion of the bound skin points.
The skinCluster command can also be used to adjust parameters such
as the dropoff, nurbs samples, polygon smoothness on a particular
influence object. Note: Any custom weights on a skin point that the
influence object affects will be lost after adjusting these
parameters.
string |
(the skinCluster node name) |
In query mode, return type is based on queried flag.
bindSkin, blendShape, boneLattice, copyFlexor, copySkinWeights, dagPose, flexor,
skinPercent, wire, wrinkle
addInfluence, addToSelection, after, afterReference, baseShape, before,
deformerTools, dropoffRate, exclusive, forceNormalizeWeights, frontOfChain, geometry, geometryIndices, ignoreBindPose, ignoreHierarchy, ignoreSelected, influence, lockWeights, maximumInfluences, moveJointsMode, name, normalizeWeights, nurbsSamples, obeyMaxInfluences, parallel, polySmoothness, prune, remove, removeFromSelection, removeInfluence, removeUnusedInfluence, selectInfluenceVerts, skinMethod, smoothWeights, smoothWeightsMaxIterations,
split, toSelectedBones, toSkeletonAndTransforms,
unbind, unbindKeepHistory, useGeometry, volumeBind, volumeType, weight,
weightedInfluence
Long name (short name) |
Argument types |
Properties |
name(n) |
string |
![create create](../gfx/create.gif) |
|
Used to specify the name of the node being created |
|
geometry(g) |
string |
![query query](../gfx/query.gif) ![edit edit](../gfx/edit.gif) ![multiuse multiuse](../gfx/multiuse.gif) |
|
The specified object will be added to the list of objects being
deformed by this deformer object, unless the -rm flag is also
specified. When queried, this flag returns string string string
... |
|
geometryIndices(gi) |
boolean |
![query query](../gfx/query.gif) |
|
Complements the -geometry flag in query mode. Returns the multi
index of each geometry. |
|
remove(rm) |
boolean |
![edit edit](../gfx/edit.gif) ![multiuse multiuse](../gfx/multiuse.gif) |
|
Specifies that objects listed after the -g flag should be
removed from this deformer. |
|
before(bf) |
boolean |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
If the default behavior for insertion/appending into/onto the
existing chain is not what you want then you can use this flag to
force the command to stick the deformer node before the selected
node in the chain even if a new geometry shape has to be created in
order to do so. Works in create mode (and edit mode if the deformer
has no geometry added yet). |
|
after(af) |
boolean |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
If the default behavior for insertion/appending into/onto the
existing chain is not what you want then you can use this flag to
force the command to stick the deformer node after the selected
node in the chain even if a new geometry shape has to be created in
order to do so. Works in create mode (and edit mode if the deformer
has no geometry added yet). |
|
afterReference(ar) |
boolean |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
The -afterReference flag is used to specify deformer ordering
in a hybrid way that choses between -before and -after
automatically. If the geometry being deformed is referenced then
-after mode is used in adding the new deformer otherwise -before
mode is used. The net effect when using -afterReference to build
deformer chains is that internal shape nodes in the deformer chain
will only appear at reference file boundaries, leading to
lightweight deformer networks that may be more amicable to
reference swapping. |
|
split(sp) |
boolean |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
Branches off a new chain in the dependency graph instead of
inserting/appending the deformer into/onto an existing chain. Works
in create mode (and edit mode if the deformer has no geometry added
yet). |
|
frontOfChain(foc) |
boolean |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
This command is used to specify that the new deformer node
should be placed ahead (upstream) of existing deformer and skin
nodes in the shape's history (but not ahead of existing tweak
nodes). The input to the deformer will be the upstream shape rather
than the visible downstream shape, so the behavior of this flag is
the most intuitive if the downstream deformers are in their reset
(hasNoEffect) position when the new deformer is added. Works in
create mode (and edit mode if the deformer has no geometry added
yet). |
|
parallel(par) |
boolean |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
Inserts the new deformer in a parallel chain to any existing
deformers in the history of the object. A blendShape is inserted to
blend the parallel results together. Works in create mode (and edit
mode if the deformer has no geometry added yet). |
|
ignoreSelected(ignoreSelected) |
boolean |
![create create](../gfx/create.gif) |
|
Tells the command to not deform objects on the current
selection list |
|
deformerTools(dt) |
boolean |
![query query](../gfx/query.gif) |
|
Returns the name of the deformer tool objects (if any) as
string string ... |
|
prune(pr) |
boolean |
![edit edit](../gfx/edit.gif) |
|
Removes any points not being deformed by the deformer in its
current configuration from the deformer set. |
|
exclusive(ex) |
string |
![create create](../gfx/create.gif) ![query query](../gfx/query.gif) |
|
Puts the deformation set in a deform partition. |
|
addInfluence(ai) |
string |
![edit edit](../gfx/edit.gif) ![multiuse multiuse](../gfx/multiuse.gif) |
|
The specified transform or joint will be added to the list of
transforms that influence the bound geometry. The maximum number of
influences will be observed and only the weights of the cv's that
the specified transform effects will change. This flag is
multi-use. |
|
removeInfluence(ri) |
string |
![edit edit](../gfx/edit.gif) ![multiuse multiuse](../gfx/multiuse.gif) |
|
Remove the specified transform or joint from the list of
transforms that influence the bound geometry The weights for the
affected points are renormalized. This flag is multi-use. |
|
maximumInfluences(mi) |
int |
![create create](../gfx/create.gif) ![query query](../gfx/query.gif) ![edit edit](../gfx/edit.gif) |
|
Sets the maximum number of transforms that can influence a
point (have non-zero weight for the point) when the skinCluster is
first created or a new influence is added. Note: When this flag is
used in Edit mode any custom weights will be lost and new weights
will be reassigned to the whole skin. |
|
obeyMaxInfluences(omi) |
boolean |
![create create](../gfx/create.gif) ![query query](../gfx/query.gif) ![edit edit](../gfx/edit.gif) |
|
When true, the skinCluster will continue to enforce the maximum
influences each time the user modifies the weight, so that any
given point is only weighted by the number of influences in the
skinCluster's maximumInfluences attribute. |
|
dropoffRate(dr) |
float |
![create create](../gfx/create.gif) ![query query](../gfx/query.gif) ![edit edit](../gfx/edit.gif) |
|
Sets the rate at which the influence of a transform drops as
the distance from that transform increases. The valid range is
between 0.1 and 10.0. In Create mode it sets the dropoff rate for
all the bound joints. In Edit mode the flag is used together with
the inf/influence flag to set the dropoff rate of a particular
influence. Note: When the flag is used in Edit mode, any custom
weights on the skin points the given transform influences will be
lost. |
|
nurbsSamples(ns) |
int |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
Sets the number of sample points that will be used along an
influence curve or in each direction on an influence NURBS surface
to influence the bound skin. The more the sample points the more
closely the skin follows the influence NURBS curve/surface. |
|
polySmoothness(ps) |
float |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
This flag controls how accurately the skin control points
follow a given polygon influence object. The higher the value of
polySmoothnmess the more rounded the deformation resulting from a
polygonal influence object will be. |
|
influence(inf) |
string |
![query query](../gfx/query.gif) ![edit edit](../gfx/edit.gif) |
|
This flag specifies the influence object that will be used for
the current edit operation. In query mode, returns a string array
of the influence objects (joints and transform).
In query mode, this flag can accept a value.
|
|
weightedInfluence(wi) |
boolean |
![query query](../gfx/query.gif) |
|
This flag returns a string array of the influence objects
(joints and transform) that have non-zero weighting. |
|
toSelectedBones(tsb) |
boolean |
![create create](../gfx/create.gif) |
|
geometry will be bound to the selected bones only. |
|
toSkeletonAndTransforms(
tst) |
boolean |
![create create](../gfx/create.gif) |
|
geometry will be bound to the skeleton and any transforms in
the hierarchy |
|
ignoreHierarchy(ih) |
boolean |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
Disregard the place of the joints in the skeleton hierarchy
when computing the closest joints that influence a point of the
geometry. |
|
moveJointsMode(mjm) |
boolean |
![edit edit](../gfx/edit.gif) |
|
If set to true, puts the skin into a mode where joints can be
moved without modifying the skinning. If set to false, takes the
skin out of move joints mode. |
|
unbind(ub) |
boolean |
![edit edit](../gfx/edit.gif) |
|
Unbinds the geometry from the skinCluster and deletes the
skinCluster node |
|
unbindKeepHistory(ubk) |
boolean |
![edit edit](../gfx/edit.gif) |
|
Unbinds the geometry from the skinCluster, but keeps the
skinCluster node so that its weights can be used when the skin is
rebound. To rebind, use the skinCluster command. |
|
useGeometry(ug) |
boolean |
![edit edit](../gfx/edit.gif) |
|
When adding an influence to a skinCluster, use the geometry
parented under the influence transform to determine the weight
dropoff of that influence. |
|
baseShape(bsh) |
string |
![edit edit](../gfx/edit.gif) ![multiuse multiuse](../gfx/multiuse.gif) |
|
This flag can be used in conjunction with the -addInfluence
flag to specify the shape that will be used as the base shape when
an influence object with geometry is added to the skinCluster. If
the flag is not used then the command will make a copy of the
influence object's shape and use that as a base shape. |
|
ignoreBindPose(ibp) |
boolean |
![create create](../gfx/create.gif) ![edit edit](../gfx/edit.gif) |
|
This flag is deprecated and no longer used. It will be ignored
if used. |
|
lockWeights(lw) |
boolean |
![query query](../gfx/query.gif) ![edit edit](../gfx/edit.gif) |
|
Lock the weights of the specified influence object to their
current value or to the value specified by the -weight flag. |
|
weight(wt) |
float |
![edit edit](../gfx/edit.gif) |
|
This flag is only valid in conjunction with the -addInfluence
flag. It sets the weight for the influence object that is being
added. |
|
removeUnusedInfluence(rui) |
boolean |
![create create](../gfx/create.gif) |
|
If this flag is set to true then transform or joint whose
weights are all zero (they have no effect) will not be bound to the
geometry. Having this option set will help speed-up the playback of
animation. |
|
smoothWeights(sw) |
float |
![edit edit](../gfx/edit.gif) |
|
This flag is used to detect sudden jumps in skin weight values,
which often indicates bad weighting, and then smooth out those
jaggies in skin weights. The argument is the error tolerance
ranging from 0 to 1. A value of 1 means that the algorithm will
smooth a vertex only if there is a 100% change in weight values
from its neighbors. The recommended default to use is 0.5 (50%
change in weight value from the neighbors). |
|
smoothWeightsMaxIterations(
swi) |
int |
![edit edit](../gfx/edit.gif) |
|
This flag is valid only with the smooth weights flag. It is
possible that not all the vertices detected as needing smoothing
can be smoothed in 1 iteration (because all of their neighbors also
have bad weighting and need to be smoothed). With more iterations,
more vertices can be smoothed. This flag controls the maximum
number of iterations the algorithm will attempt to smooth weights.
The default is 2 for this flag. |
|
skinMethod(sm) |
int |
![create create](../gfx/create.gif) ![query query](../gfx/query.gif) ![edit edit](../gfx/edit.gif) |
|
This flag set the skinning method. 0 - classical linear
skinning (default). 1 - dual quaternion (volume preserving), 2 - a
weighted blend between the two. |
|
normalizeWeights(nw) |
int |
![create create](../gfx/create.gif) ![query query](../gfx/query.gif) ![edit edit](../gfx/edit.gif) |
|
This flag sets the normalization mode. 0 - none, 1 -
interactive, 2 - post (default) Interactive normalization makes
sure the weights on the influences add up to 1.0, always. Everytime
a weight is changed, the weights are automatically normalized. This
may make it difficult to perform weighting operations, as the
normalization may interfere with the weights the user has set. Post
normalization leaves the weights the user has set as is, and only
normalizes the weights at the moment it is needed (by dividing by
the sum of the weights). This makes it easier for users to weight
their skins. |
|
forceNormalizeWeights(fnw) |
boolean |
![edit edit](../gfx/edit.gif) |
|
If the normalization mode is none or post, it is possible
(indeed likely) for the weights in the skin cluster to no longer
add up to 1. This flag forces all weights to add back to 1
again. |
|
selectInfluenceVerts(siv) |
string |
![edit edit](../gfx/edit.gif) |
|
Given the name of a transform, this will select the verts or
control points being influenced by this transform, so users may
visualize which vertices are being influenced by the
transform. |
|
addToSelection(ats) |
boolean |
![edit edit](../gfx/edit.gif) |
|
When used in conjunction with the selectInfluenceVerts flag,
causes the vertices afftected by the influence to be added to the
current selection, without first de-selecting other vertices. |
|
removeFromSelection(rfs) |
boolean |
![edit edit](../gfx/edit.gif) |
|
When used in conjunction with the selectInfluenceVerts flag,
causes the vertices afftected by the influence to be removed from
the current selection. |
|
volumeBind(vb) |
float |
![create create](../gfx/create.gif) |
|
Creates a volume bind node and attaches it to the new skin
cluster node. This node holds hull geometry parameters for a volume
based weighting system. This system is used in interactive
skinning. The value passed will determine the minimum weight value
when initializing the volume. The volume in be increase to enclose
all the vertices that are above this value. |
|
volumeType(vt) |
int |
![create create](../gfx/create.gif) |
|
Defines the initial shape of the binding volume (see
volumeBind). 0 - Default (currently set to a capsule) 1 - Capsule,
2 - Cylinder. |
|
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.
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)
# Bind the joint chain that contains joint1 to pPlane1
# and assign a dropoff of 4.5 to all the joints
#
cmds.skinCluster( 'joint1', 'pPlane1', dr=4.5)
# Undo the previous command and bind only joint1 and joint3 to pPlane1
#
cmds.undo();
cmds.skinCluster('joint1', 'joint3', 'pPlane1',tsb=True)
# Set the maximum number of transforms influencing each
# point to 3
cmds.skinCluster('skinCluster1',e=True,mi=3)
# Add transform joint2 to the list of transforms
# that influence the bound skin
#
cmds.select('pPlane1')
cmds.skinCluster(edit=True,ai='joint2')
# Query the influences for the skinCluster
#
cmds.skinCluster('skinCluster1',query=True,inf=True)
# Add a curve influence object
#
cmds.curve(d=3,p=[(2.0, 0.0, -7.0),(5.0, 0.0, -4.0),(6.0, 0.0, 1.0),(6.0, 0.0, 4.0),(5.0, 0.0, 6.0)],k=[0,0,0,1,2,2,2])
# Get the number of nurbsSamples taken along curve1
#
cmds.skinCluster('skinCluster1',edit=True,ai='curve1')
cmds.skinCluster('skinCluster1',inf='curve1',query=True,ns=True)
# Set the dropoff for joint3 to 5.0
#
cmds.skinCluster('skinCluster1',e=True,inf='joint3',dr=5.0)
# Query for the dropoff for joint3
#
cmds.skinCluster('skinCluster1',inf='joint3',q=True,dr=True)