Go to: Synopsis. Return value. Related. Flags. Python examples.
skinCluster(
objects
, [addInfluence=string], [after=boolean], [baseShape=string], [before=boolean], [deformerTools=boolean], [dropoffRate=float], [exclusive=string], [frontOfChain=boolean], [geometry=string], [ignoreBindPose=boolean], [ignoreHierarchy=boolean], [ignoreSelected=boolean], [influence=string], [lockWeights=boolean], [maximumInfluences=int], [moveJointsMode=boolean], [name=string], [nurbsSamples=int], [obeyMaxInfluences=boolean], [parallel=boolean], [polySmoothness=float], [prune=boolean], [remove=boolean], [removeInfluence=string], [removeUnusedInfluence=boolean], [smoothWeights=float], [smoothWeightsMaxIterations=int], [split=boolean], [toSelectedBones=boolean], [toSkeletonAndTransforms=boolean], [unbind=boolean], [unbindKeepHistory=boolean], [useGeometry=boolean], [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, after, baseShape, before, deformerTools, dropoffRate, exclusive, frontOfChain, geometry, ignoreBindPose, ignoreHierarchy, ignoreSelected, influence, lockWeights, maximumInfluences, moveJointsMode, name, nurbsSamples, obeyMaxInfluences, parallel, polySmoothness, prune, remove, removeInfluence, removeUnusedInfluence, smoothWeights, smoothWeightsMaxIterations, split, toSelectedBones, toSkeletonAndTransforms, unbind, unbindKeepHistory, useGeometry, weight, weightedInfluence
Long name (short name) |
Argument types |
Properties |
name(n)
|
string
|
|
|
Used to specify the name of the node being created
|
|
geometry(g)
|
string
|
|
|
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 ...
|
|
remove(rm)
|
boolean
|
|
|
Specifies that objects listed after the -g flag should
be removed from this deformer.
|
|
before(bf)
|
boolean
|
|
|
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
|
|
after(af)
|
boolean
|
|
|
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
|
|
split(sp)
|
boolean
|
|
|
Branches off a new chain in the dependency graph instead
of inserting/appending the deformer into/onto an
existing chain.
|
|
frontOfChain(foc)
|
boolean
|
|
|
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.
|
|
parallel(par)
|
boolean
|
|
|
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.
|
|
ignoreSelected(ignoreSelected)
|
boolean
|
|
|
Tells the command to not deform objects on the
current selection list
|
|
deformerTools(dt)
|
boolean
|
|
|
Returns the name of the deformer tool objects (if any)
as string string ...
|
|
prune(pr)
|
boolean
|
|
|
Removes any points not being deformed by the deformer in
its current configuration from the deformer set.
|
|
exclusive(ex)
|
string
|
|
|
Puts the deformation set in a deform partition.
|
|
addInfluence(ai)
|
string
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
This flag returns a string array of the influence objects
(joints and transform) that have non-zero weighting.
|
|
toSelectedBones(tsb)
|
boolean
|
|
|
geometry will be bound to the selected bones only.
|
|
toSkeletonAndTransforms(tst)
|
boolean
|
|
|
geometry will be bound to the skeleton and any transforms in the hierarchy
|
|
ignoreHierarchy(ih)
|
boolean
|
|
|
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
|
|
|
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
|
|
|
Unbinds the geometry from the skinCluster and deletes
the skinCluster node
|
|
unbindKeepHistory(ubk)
|
boolean
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
This flag is deprecated and no longer used. It will be ignored
if used.
|
|
lockWeights(lw)
|
boolean
|
|
|
Lock the weights of the specified influence object
to their current value or to the value specified by
the -weight flag.
|
|
weight(wt)
|
float
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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.
|
|
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)