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

概要

deformerWeights([attribute=string], [defaultValue=float], [deformer=string], [export=boolean], [format=string], [ignoreName=boolean], [im=boolean], [method=string], [path=string], [positionTolerance=float], [remap=string], [shape=string], [skip=string], [vertexConnections=boolean], [weightPrecision=uint], [weightTolerance=float], [worldSpace=boolean])

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

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

XML ファイルとのデフォーマ ウェイトの読み込みと書き出しを行うコマンド。ウェイトのデータは、ジオメトリ入力からデフォーマへの頂点に該当する「ポイント クラウド」と一緒に、頂点単位で格納されます。たとえば、クラスタ デフォーマは次の情報を保有します。 読み込む時、ウェイトは、指定したデフォーマに指定したマッピング手法でマッピングして戻されます。マッピング関連の実行に使用するジオメトリは表示されるシェイプではなく、デフォーマへの受信ジオメトリであることに注意してください。たとえば、スキン クラスタの場合、バインド ポーズ ジオメトリになります。

戻り値

STRINGファイルの読み込み/書き出しに成功した場合は、そのファイルのパスです。

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

キーワード

deformer, export

関連

blendShape, skinCluster, skinPercent

フラグ

attribute, defaultValue, deformer, export, format, ignoreName, im, method, path, positionTolerance, remap, shape, skip, vertexConnections, weightPrecision, weightTolerance, worldSpace
ロング ネーム(ショート ネーム) 引数タイプ プロパティ
attribute(at) string createqueryeditmultiuse
deformerWeights と一緒に読み込み/書き出しする必要のあるデフォーマ アトリビュートのロング ネームを指定します。つまり、-at "envelope" -at "skinningMethod" のようになります。指定したアトリビュートが特定のデフォーマに存在しない場合は、警告またはエラーが表示されません。そのため、複数のデフォーマでこのコマンドを使用しても、読み込み/書き出しプロセスが中止されたり、速度が低下することがありません。現在は数値アトリビュートおよび行列アトリビュートをサポートしています。
defaultValue(dv) float createqueryedit
手動で既定値を設定します。既定値はファイルに書き込まれません。たとえば、blendShapes の既定値は自動的に 1.0 に設定され、ディスクに書き込まれません。skinClusters の値は 0.0 です。すべてのウェイトをディスクに書き込むように強制する必要がある場合は、defaultValue = -1.0 に設定します。
deformer(df) string createqueryeditmultiuse
ウェイトを書き出し/読み込みするデフォーマを指定します。デフォーマ名のパターン(つまり cluster*)を指定した場合は、-skip オプションと組み合わせて使用した場合を除き、パターンと一致する最初のデフォーマの読み込み/書き出しのみが行われます。
export(ex) boolean createqueryedit
指定デフォーマの書き出し
format(fm) string createqueryedit
名前を付けて保存する場合のファイル拡張子として「XML」または「JSON」を指定します。
ignoreName(ig) boolean createqueryedit
読み込む時にレイヤ名を無視し、代わりにレイヤの順序を使用します。これは、ジョイント名を変更した場合にも使用できます。読み込む時に一致した名前のみをそのままデフォーマに書き込みます。
im(im) boolean createqueryedit
指定したデフォーマにウェイトを読み込みます。対象のデフォーマにウェイトがどのようにマッピングされるかについては、method フラグを参照してください。
method(m) string createqueryedit
読み込み時のウェイトのマッピングに使用する手法を指定します。有効な値は、「index」、「nearest」、「barycentric」、「bilinear」、「over」です。「index」法は、頂点インデックスを使用してウェイトをオブジェクトにマッピングします。マッピング先のオブジェクトと書き出し後のデータのトポロジが同じ場合、これが最も便利な手法です。「nearest」法は、読み込んだデータのニアレスト頂点を検索し、ウェイト値をその値に設定します。これは、高解像度メッシュを低解像度メッシュにマッピングする場合に最適です。「barycentric」および「bilinear」法は、-vc/vertexConnections フラグを使用して書き出されたポリゴン メッシュでのみサポートされています。「barycentric」法は、入力したジオメトリのニアレスト三角形を検索し、ニアレスト三角形の各頂点の重心ウェイトに応じてウェイトを三角形の頂点に再スケールします。「bilinear」法は、入力したジオメトリのニアレスト凸型四角を検索し、ニアレスト凸型四角の各頂点の重心ウェイトに応じてウェイトを四角の頂点に再スケールします。四角以外のポリゴンでは、「bilinear」メソッドは「barycentric」法にフォールバックします。「over」法は「index」法に似ていますが、マッピング前に対象メッシュのウェイトがクリアされないため、一致していないインデックスのウェイトがそのまま維持されます。
path(p) string createqueryedit
指定ファイルへのパス。既定は現在のプロジェクトです。
positionTolerance(pt) float createqueryedit
nearest のメソッドの検索では、位置の許容値を使用して検索の半径を決定します。このフラグは読み込みのみに使用できます。既定は大きな数値です。
remap(r) string createqueryeditmultiuse
リマップは、 ソースの正規表現を宛先の形式にマップします。これにより、正規表現(セミコロンの前)に一致する名前が、この式の形式(セミコロンの後)にマップされます。たとえば、-remap "test:(.*);$1" の場合、test 名前空間内のすべての項目がグローバル ネームスペースに名前変更されます。この式の形式では、パターン ホルダとして $1、$2、..、$9 を使用できます。remap フラグは読み込みまたは書き出しとともに使用する必要があります。読み込みとともに使用すると、正規表現と一致する xlm ファイル内のオブジェクトの名前が、シーン内のオブジェクトにリマップされます。書き出しとともに使用すると、正規表現と一致するシーン内のオブジェクトの名前が、xlm ファイル内のオブジェクトにリマップされます。
shape(sh) string createqueryeditmultiuse
ソースのシェイプを指定します。書き出すと、シェイプ ノードのすべてのデフォーマが単一のファイルに書き出されます。シェイプ名のパターン(pCylinder* など)を指定した場合は、-skip オプションと組み合わせて使用した場合を除き、パターンと一致する最初のシェイプの読み込み/書き出しのみが行われます。
skip(sk) string createqueryeditmultiuse
指定した正規表現の文字列と名前が一致するすべてのデフォーマ、シェイプ、またはレイヤをスキップします。
vertexConnections(vc) boolean createqueryedit
-m/-method "barycentric" および "bilinear" で必要な頂点接続情報を書き出します。このフラグを一緒に使用する必要があるのは -ex/-export フラグのみです。xml ファイルで有効になっている場合は、読み込み中に頂点接続情報が自動的にロードされます。
weightPrecision(wp) uint createqueryedit
書き出されたウェイトの出力の小数精度を設定します。既定値は 3 です。
weightTolerance(wt) float createqueryedit
ウェイトの許容値は、指定したウェイト値が既定値に近いため含める必要がないかどうかを判断するのに使用します。このフラグは書き出しのみに使用できます。既定値は .001 です。
worldSpace(ws) boolean createqueryedit
空間ベースの関連メソッド(nearest)の場合、ローカル オブジェクト空間ではなく、ワールド空間の位置をベースにする必要があります。

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

Python 例

import maya.cmds as cmds


import maya.cmds as cmds

def createRig(nsp='nsp1', res=5):
    # Create a plane with two clusters in a namespace.
    #
    cmds.polyPlane( ch=1, w=10, h=10, sx=res, sy=res, ax=(0,1,0), name='%s:myShape'%nsp )
    cmds.cluster('%s:myShape'%nsp, name='%s:clusterA'%nsp)
    cmds.cluster('%s:myShape'%nsp, name='%s:clusterB'%nsp)

#--------------------------------------------------------------------
# Create the setup
#--------------------------------------------------------------------

# Clear file.
cmds.file( f=True,new=True )

# Create plane and two clusters.
createRig(nsp='nsp1')

# Modify some weights on clusterA.
cmds.select( ['nsp1:myShape.vtx[6:11]'])
cmds.percent( 'nsp1:clusterA', v=0.5 )

# Modify some weights on clusterB.
#
cmds.select( ['nsp1:myShape.vtx[0:2]','nsp1:myShape.vtx[6:8]','nsp1:myShape.vtx[12:14]'])
cmds.percent( 'nsp1:clusterB', v=0.3 )


#--------------------------------------------------------------------
# Export the weights in a variety of different ways
#--------------------------------------------------------------------

# Write cluster A weights.
#
cmds.deformerWeights ('clusterA.xml', ex=True, deformer='nsp1:clusterA')

# Write cluster B weights, but do not write values of 1.0.
#
cmds.deformerWeights ('clusterB.xml', ex=True, deformer='nsp1:clusterB', dv=1.0)

# Write cluster A and B weights at the same time.
#
cmds.deformerWeights ('clusterAB.xml', ex=True, deformer=['nsp1:clusterA', 'nsp1:clusterB'])

# Export weights for all deformers on the shape, including vertex connections.
#
cmds.deformerWeights ('shape_all.xml', ex=True, sh='nsp1:myShape', vc=True)

# Same as above skipping deformers matching '*B'.
#
cmds.deformerWeights ('shape_NotB.xml', ex=True, sh='nsp1:myShape', vc=True, sk='*B')

# Export weights and attributes.
#
attributes = ['envelope', 'percentResolution', 'usePartialResolution']
cmds.deformerWeights ('shape_all_attr.xml',ex=True, sh='nsp1:myShape', vc=True, at=attributes)

# Export name space nsp1: in scene to nsp2: in xml.
cmds.deformerWeights ('shape_all_nsp2.xml', ex=True, sh='nsp1:myShape', vc=True, remap='nsp1:(.*);nsp2:$1')


#--------------------------------------------------------------------
# Import the weights
#--------------------------------------------------------------------

# Read both cluster's weight files separately.
cmds.deformerWeights('clusterA.xml', im=True, sh='nsp1:myShape', deformer='nsp1:clusterA')
cmds.deformerWeights('clusterB.xml', im=True, sh='nsp1:myShape', deformer='nsp1:clusterB')

# Read both deformers from the single file.
cmds.deformerWeights('shape_all.xml', im=True, sh='nsp1:myShape', deformer=['nsp1:clusterA', 'nsp1:clusterB'])

# Alternative way of reading both deformers.
cmds.deformerWeights('shape_all.xml', im=True, deformer=['nsp1:clusterA', 'nsp1:clusterB'])

# Read clusterA from the file containing both clusters.
cmds.deformerWeights('shape_all.xml', im=True, deformer='nsp1:clusterA')

#
# Create the same rig in a different namespace.
#
createRig(nsp='nsp2')

# Import weights from file that remapped the namespace on export.
cmds.deformerWeights('shape_all_nsp2.xml', im=True, sh='nsp2:myShape', deformer=['nsp2:clusterA', 'nsp2:clusterB'])

# Import weights from file containing a different namespace, and remap the namespace on import.
cmds.deformerWeights('shape_all.xml', im=True, sh='nsp2:myShape', deformer=['nsp2:clusterA', 'nsp2:clusterB'], remap='nsp1:(.*);nsp2:$1')

#
# Create similar rig with different resolution (topology) in a different namespace.
#
createRig(nsp='nsp3', res=8)

# Import weights from file, remap the namespace on import, and use the barycentric method to remap the weight values.
cmds.deformerWeights('shape_all.xml', im=True, sh='nsp3:myShape', deformer=['nsp3:clusterA', 'nsp3:clusterB'], remap='nsp1:(.*);nsp3:$1', method='barycentric')