ジャンプ先: 概要. 戻り値. 関連. フラグ. Python 例.

概要

skinPercent( [object] [selectionList] , [ignoreBelow=float], [normalize=boolean], [pruneWeights=float], [relative=boolean], [resetToDefault=boolean], [transform=string], [transformMoveWeights=string], [transformValue=[string, float]], [value=boolean], [zeroRemainingInfluences=boolean])

注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。

skinPercent は、取り消し可能、照会可能、および編集不可能です。

このコマンドは、1 番目の引数として指定された skinCluster ノードのメンバーのウェイト値を編集、照会します。コマンド ラインでオブジェクトのコンポーネントが明示的に指定されていない場合、現在のセレクション リストが使用されます。

このコマンドの 1 回の使用で複数のウェイトを設定する方が、ウェイトをかけた頂点 1 つについて 1 回コールするより、はるかに効率的です。

戻り値

なし

照会モードでは、戻り値のタイプは照会されたフラグに基づきます。

関連

copySkinWeights, skinCluster

フラグ

ignoreBelow, normalize, pruneWeights, relative, resetToDefault, transform, transformMoveWeights, transformValue, value, zeroRemainingInfluences
ロング ネーム(ショート ネーム) 引数タイプ プロパティ
ignoreBelow(ib) float query
-value と -transform による照会で、指定した限度以上のウェイト値を持つエントリだけが出力されるようにします。このフラグは、-query フラグの前に使用する必要があります。

照会モードでは、このフラグに値が必要になります。

normalize(nrm) boolean create
設定されている場合、-transformValue フラグによって値が割り当てられていないウェイトを正規化して、選択したオブジェクト コンポーネントのすべてのウェイトの合計が 1 になるようにします。既定はオンです。注: skinCluster には normalizeWeights アトリビュートがあり、これをオフにするとアトリビュートがオーバーライドされます。skinCluster.normalizeWeights アトリビュートがオフの場合、skinPercent コマンドでウェイトを正規化するには、このアトリビュートをインタラクティブ(Interactive)に設定する必要があります。
pruneWeights(prw) float create
選択したすべてのコンポーネントのうち、指定した値より小さいウェイトを持つコンポーネントのウェイトを 0 に設定します。このコマンドを使用してすべてのウェイトを 0 に設定するには、-normalize フラグを「オフ」にする必要があります。そうでないと、すべてのウェイトを 0 にした後で、ウェイトの合計が 1 になるように skinCluster ノードによってウェイトが正規化されます。ウェイトを保持(Hold Weights)アトリビュートに true が設定されているウェイトは 0 になりません。
relative(r) boolean create
-transformValue と一緒に使用して、値の相対設定を指定します。-relative が true の場合、-tv に渡された値は前の値に追加されます。false の場合は、渡された値が前の値と置き換えられます。
resetToDefault(rtd) boolean create
選択したコンポーネントのウェイトを既定値に設定し、カスタム ウェイトを上書きします。
transform(t) string query
MEL で(引数を指定せずに) -query フラグの後ろで使用する場合、コマンドは、選択したオブジェクト コンポーネントに作用するトランスフォームの名前に対応する文字列の配列を返します。 (トランスフォームの名前を指定して) -query フラグの前で使用する場合、コマンドは、指定したトランスフォームに対応する選択したオブジェクト コンポーネントのウェイトを返します。複数コンポーネントが選択されている場合は、平均ウェイトが戻されます。 Python で、トランスフォームの名前でなく、なし(None)と組み合わせて使用した場合、このコマンドは、選択したオブジェクト コンポーネントに影響するトランスフォームの名前に対応する文字列の配列を返します。トランスフォームの名前と組み合わせて使用した場合は、選択したオブジェクトのウェイトを返します。複数コンポーネントが選択されている場合は、平均ウェイトが戻されます。

照会モードでは、このフラグは値を受け入れることができます。

transformMoveWeights(tmw) string createmultiuse
このフラグを使用して、ウェイトをソース インフルエンスから 1 つ以上のターゲット インフルエンスへ転送します。このフラグは選択された頂点で作用します。有効なコマンドを生成するには、このフラグを 2 回以上使用する必要があります。最初のフラグはウェイトのコピー元となるソース インフルエンスを示すために使用します。後続のフラグはターゲット インフルエンスを示すために使用します。
transformValue(tv) [string, float] createmultiuse
トランスフォーム名と値からなるペアを受け取り、指定したトランスフォームに対応する選択したオブジェクト コンポーネントのウェイトとしてその値を割り当てます。
value(v) boolean query
選択したオブジェクト コンポーネントのジョイントのウェイトに対応する double の配列を返します。
zeroRemainingInfluences(zri) boolean create
設定すると、-transformValue フラグによって割り当てられていないウェイトは 0 に設定されます。既定はオフです。

フラグはコマンドの作成モードで表示できます フラグはコマンドの編集モードで表示できます
フラグはコマンドの照会モードで表示できます フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。

Python 例

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)] )