Go to: Synopsis. Return value. Keywords.
Related. Flags.
Python examples.
copySkinWeights([destinationSkin=string],
[influenceAssociation=string],
[mirrorInverse=boolean],
[mirrorMode=string], [noBlendWeight=boolean], [noMirror=boolean], [normalize=boolean], [sampleSpace=uint], [smooth=boolean], [sourceSkin=string], [surfaceAssociation=string],
[uvSpace=[string,
string]])
Note: Strings representing object names and
arguments must be separated by commas. This is not depicted in the
synopsis.
copySkinWeights is undoable, queryable, and editable.
Command to copy or mirror the skinCluster weights accross one of
the three major axes. The command can be used to mirror weights
either from one surface to another or within the same surface.
None
In query mode, return type is based on queried flag.
skinCluster, duplicate, mirror
skinCluster, skinPercent
destinationSkin, influenceAssociation, mirrorInverse, mirrorMode, noBlendWeight, noMirror, normalize, sampleSpace, smooth, sourceSkin,
surfaceAssociation, uvSpace
Long name (short name) |
Argument types |
Properties |
sourceSkin(ss) |
string |
|
|
Specify the source skin shape |
|
destinationSkin(ds) |
string |
|
|
Specify the destination skin shape |
|
normalize(nr) |
boolean |
|
|
Normalize the skin weights. |
|
noMirror(nm) |
boolean |
|
|
When the no mirror flag is used, the weights are copied instead
of mirrored. |
|
mirrorInverse(mi) |
boolean |
|
|
Values are mirrored from the positive side to the negative. If
this flag is used then the direction is inverted. |
|
smooth(sm) |
boolean |
|
|
When the smooth flag is used, the weights are smoothly
interpolated between the closest vertices, instead of assigned from
the single closest. |
|
mirrorMode(mm) |
string |
|
|
The mirrorMode flag defines the plane of mirroring (XY, YZ, or
XZ) when the mirror flag is used. The default plane is XY. |
|
surfaceAssociation(sa) |
string |
|
|
The surfaceAssociation flag controls how the weights are
transferred between the surfaces: "closestPoint", "rayCast", or
"closestComponent". The default is closestComponent. |
|
influenceAssociation(ia) |
string |
|
|
The influenceAssociation flag controls how the influences on
the source and target skins are matched up. The flag can be
included multiple times to specify multiple association schemes
that will be invoked one after the other until all influences have
been matched up. Supported values are "closestJoint",
"closestBone", "label", "name", "oneToOne". The default is
closestJoint. |
|
sampleSpace(spa) |
uint |
|
|
Selects which space the attribute transfer is performed in. 0
is world space, 1 is model space. The default is world space. |
|
uvSpace(uv) |
[string, string] |
|
|
The uvSpace flag indicates that the weight transfer should
occur in UV space, based on the source and destination UV sets
specified. |
|
noBlendWeight(nbw) |
boolean |
|
|
When the no blend flag is used, the blend weights on the skin
cluster will not be copied across to the destination. |
|
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 plane and a skeleton. Bind the skin.
#
cmds.file( f=True,new=True )
cmds.polyPlane( ch=1, w=10, h=10, sx=5, sy=5, ax=(0,1,0) )
cmds.select( d=True )
cmds.joint( p=(0, 0, -6) )
cmds.joint( p=(0, 0, -4) )
cmds.joint( 'joint1', e=True, zso=True, oj='xyz')
cmds.joint( p=(2, 0, -4) )
cmds.joint( 'joint2', e=True, zso=True, oj='xyz')
cmds.joint( p=(5, 0, -3) )
cmds.joint( 'joint3', e=True, zso=True, oj='xyz')
cmds.select( 'joint2', r=True )
cmds.joint( p=(-2, 0, -4) )
cmds.joint( 'joint4', e=True, zso=True, oj='xyz')
cmds.joint( p=(-5, 0, -3) )
cmds.joint( 'joint5', e=True, zso=True, oj='xyz')
cmds.select( 'joint2', r=True )
cmds.joint( p=(0, 0, 3) )
cmds.joint( 'joint6', e=True, zso=True, oj='xyz')
cmds.joint( p=(5, 0, 5) )
cmds.joint( 'joint7', e=True, zso=True, oj='xyz')
cmds.select( 'joint7', r=True )
cmds.joint( p=(-5, 0, 5) )
cmds.joint( 'joint8', e=True, zso=True, oj='xyz')
cmds.select( 'pPlane1', 'joint1', r=True )
maya.mel.eval('createSkinCluster "-mi 5 -dr 4"' )
# Modify some weights on the -x side of the character
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[30]', tv=('joint2',0.200000) )
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[31]', tv=('joint2',0.200000) )
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[24]', tv=('joint5',0.550000) )
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[25]', tv=('joint5',0.550000) )
# Mirror the skin weights to the other side of the character
# Mirror inverse is chosen since we want to go from -x to +x, not +x to -x.
#
cmds.copySkinWeights( ss='skinCluster1', ds='skinCluster1', mirrorMode='YZ', mirrorInverse=True )
# Now create a second plane and bind it as skin
#
cmds.polyPlane( ch=1, w=10, h=10, sx=5, sy=5, ax=(0,1,0) )
cmds.select( 'pPlane2', r='joint1' )
maya.mel.eval('createSkinCluster "-mi 5 -dr 4"' )
# Copy the skin weights from the first plane onto the new plane.
# The -noMirror flag is used since we want to copy directly, not mirror.
#
cmds.copySkinWeights( ss='skinCluster1', ds='skinCluster2', noMirror=True )