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

概要

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

注意: オブジェクト名や引数を表す文字列はカンマで区切ります。これは概要には示されていません。

skinPercent は 「元に戻す」が可能、「照会」が可能、「編集」が不可能 です。

このコマンドは、1 番目の引数として指定された skinCluster ノードのメンバのウェイト値を編集、照会します。コマンド ラインでオブジェクトのコンポーネントが明示的に 指定されていない場合、カレントのセレクション リストが使用されます。 このコマンドの 1 回の使用で複数のウェイトを設定する方が、 ウェイトをかけた頂点 1 つについて 1 回コールするより、 はるかに効率的です。

戻り値

なし

戻り値の型は照会モードでは照会フラグが基になります。

関連項目

copySkinWeights, skinCluster

フラグ

ignoreBelow, normalize, pruneWeights, relative, resetToDefault, transform, transformValue, value, zeroRemainingInfluences
ロング ネーム(ショート ネーム) 引数型 プロパティ
value(v) boolean query
選択したオブジェクト コンポーネントのジョイントの ウェイトに対応する double の配列を返します。
transform(t) string query
(引数を指定せずに) -query フラグの後ろで使用する場合、コマンドは、 選択したオブジェクト コンポーネントに作用する トランスフォームの名前に対応する文字配列を返します。(トランスフォームの名前を指定して) -query フラグの前で使用する場合、コマンドは、 指定したトランスフォームに対応する 選択したオブジェクト コンポーネントのウェイトを返します。 複数コンポーネントが選択されている場合は、平均ウェイトが戻されます。

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

transformValue(tv) [string, float] createmultiuse
トランスフォーム名と値からなるペアを受け取り、 指定したトランスフォームに対応する選択したオブジェクト コンポーネントの ウェイトとしてその値を割り当てます。
relative(r) boolean create
-transformValue と一緒に使用して、値の相対設定を指定します。 -relative が true の場合、-tv に渡された値は前の値に追加されます。false の場合は、渡された値が前の値と置き換えられます。
ignoreBelow(ib) float query
-value と -transform による照会で、 指定した限度以上のウェイト値を持つエントリだけが 出力されるようにします。このフラグは、-query フラグの前に使用する必要があります。

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

normalize(nrm) boolean create
設定されている場合、-transformValue フラグによって値が割り当てられていないウェイトを正規化して、選択したオブジェクト コンポーネントのすべてのウェイトの合計が 1 になるようにします。デフォルトはオンです。注: skinCluster には normalizeWeights アトリビュートがあり、これをオフにするとアトリビュートがオーバーライドされます。skinCluster.normalizeWeights アトリビュートがオフの場合、skinPercent コマンドでウェイトを正規化するには、このアトリビュートをインタラクティブ(Interactive)に設定する必要があります。
zeroRemainingInfluences( zri) boolean create
設定すると、-transformValue フラグによって割り当てられていないウェイトは 0 に設定されます。デフォルトはオフです。
resetToDefault(rtd) boolean create
選択したコンポーネントのウェイトをデフォルト値に設定し、カスタム ウェイトを上書きします。
pruneWeights(prw) float create
選択したすべてのコンポーネントのうち、指定した値より小さいウェイトを持つコンポーネントのウェイトを 0 に設定します。このコマンドを使用してすべてのウェイトを 0 に設定するには、-normalize フラグを「オフ」にする必要があります。そうでないと、すべてのウェイトを 0 にした後で、ウェイトの合計が 1 になるように skinCluster ノードによってウェイトが正規化されます。ウェイトを保持(Hold Weights)アトリビュートに true が設定されているウェイトは 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 joint1
#
cmds.skinPercent( 'skinCluster1', 'pPlane1.vtx[100]', transform='joint1', 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)] )