ジャンプ先: 概要. 戻り値. キーワード. 関連. フラグ. Python 例.
editMetadata([channelType=string], [delete=boolean], [memberName=string], [metadataIndex=int], [streamName=string], [stringValue=string], [value=float])
注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。
editMetadata は、取り消し可能、照会不可能、および 編集不可能 です。
このコマンドは、ノードにメタデータ要素を設定するために、またはノードからメタデータ要素を除去するために使用します。このコマンドを使用する前に、addMetadata コマンドまたは API でこのコマンドに相当するものを使用して、最初にメタデータ ストリーム タイプをアタッチする必要があります。コマンドには次の 4 つの基本的なバリエーションがあります。
- メッシュにコンポーネント単位のメタデータを設定
- メッシュからコンポーネント単位のメタデータを除去
- 任意のノードに一般的なメタデータを設定
- 任意のノードから一般的なメタデータを除去
set と remove の違い(1、3 対 2、4)は、set には設定対象となるメンバ名と設定対象となる新しい値の両方が必要になる点です(除去時にメンバ名が使用されない理由は、メタデータの構造要素全体を除去できても、そこから 1 つのメンバのみを除去することができないためです)。
メタデータ値が設定または除去されると、選択された各コンポーネントまたは各インデックス上でアクションが実行されます。これにより、一連のメタデータを一斉に設定または除去できます。
一般的な使用法(3、4)では、特定のメタデータを channelType および metadataIndex フラグを使用して選択します。metadataIndex は多目的フラグのため、同じチャネルから複数の異なる要素を選択し、1 つのコマンドを使用して、それらすべての要素でメタデータを設定または除去することができます。
メッシュ上のメタデータは、「vertex」、「edge」、「face」、「vertexFace」のチャネル タイプが同じ名前のコンポーネントに直接接続している点で特殊です。これらのメタデータ チャネルは、channelType および metadataIndex フラグを使用せずに、コマンド ライン上で対応するコンポーネントを単に選択または指定することで、より簡単に設定することができます。たとえば、「myMesh.vtx[8:10]」は、channelType = vertex および metadataIndex = 8, 9, 10 に対応します(多目的フラグとして)。
メタデータはノードに割り当てられ、メッシュ ジオメトリの特殊なケースを除き、ディペンデンシー グラフでフローしないことに注意してください。メッシュでは、メタデータはジオメトリが接続されていればノードから別のノードへ移動しますが、トポロジの変更に伴って自動調整されることはありません。内部データは、接続しているその他のノードの数に関係なく、コピー量を最小化するように調整されます。
1 回のコマンドで許可されるノード、コンポーネント タイプ、チャネル タイプ、値タイプはそれぞれ 1 つだけです。複数の構造体メンバの値を設定するにはコマンドを複数回コールする必要がありますが、この方法によってデータをシンプルに保つことができます。
boolean | 割り当てまたは除去に成功した場合は True |
metadata, component, stream, channel, association
addMetadata, applyMetadata, dataStructure, getMetadata
channelType, delete, memberName, metadataIndex, streamName, stringValue, value
ロング ネーム(ショート ネーム) |
引数タイプ |
プロパティ |
channelType(cht)
|
string
|
|
|
メタデータを編集するチャネル タイプを指定します。これは、コンポーネントではなくコマンド ラインでノードを選択または指定するという一般的な形式でこのコマンドを使用する場合のみ必要となります。チャネル タイプは、作成されるメタデータの関連付けを参照します。チャネルの名前はユーザが決定するため、文字列は通常任意のものになります。メッシュ コンポーネントの特定のケースでは、予約済みのチャネル名「vertex」、「face」、「edge」、「vertexFace」を使用して、メタデータと同様の名前のコンポーネントを照合します。
|
|
delete(delete)
|
boolean
|
|
|
削除フラグが設定されると、メタデータは値が設定されることなく削除されます。このモードでは、「memberName」、「value」、「stringValue」の各フラグは無視されます。メタデータを削除すると、構造のすべてのメンバがグループとして削除されるため、「memberName」は無視されます。削除する場合は値を設定する必要がないため、その他すべてが無視されます。
|
|
memberName(mn)
|
string
|
|
|
編集される構造体メンバの名前。メンバの名前は、「dataStructure」コマンドで渡された説明に基づいて、または、構造の作成に使用された API を介してその構造の定義で設定されます。
|
|
metadataIndex(mdi)
|
int
|
|
|
メタデータは、インデックス リストであるストリームに保存されます。メッシュ コンポーネントが選択されている場合、メタデータのインデックスは、選択されたコンポーネントのリストで暗黙的となります。ノードのみを選択した場合、このフラグはメタデータが存在するインデックスを指定するために使用されます。複数のインデックスが指定されている場合は、すべてのインデックスに値が割り当てられます。未使用のインデックス状態は構造で定義されるため(既定値を割り当てるか割り当てなしとして扱う)、使用されているすべてのインデックスを指定する必要はありません。そのため、インデックス 0、1、2 に既に値があるかどうかに関係なく、インデックス 3 に値を設定することができます。
|
|
streamName(stn)
|
string
|
|
|
編集されているメタデータ ストリームの名前。ストリームは、このコマンドの使用時に既に作成済みである必要があります。ストリームの作成方法については、「addMetadata」コマンド、「applyMetadata」コマンド、またはメタデータ API を参照してください。
|
|
value(v)
|
float
|
|
|
指定のメタデータ配置場所に設定される数値。このフラグは、データ メンバが数値型の場合のみ使用されます。メンバが N 寸法の場合(例: float[3])、このフラグは N 回(例: 3 回)表示される必要があります。影響を受けるすべてのコンポーネントまたはメタデータ インデックスで指定されたメタデータ メンバには、同じ値が適用されます。すべての数値型のメンバは、この型の値指定(string 型と matrix 型以外のすべて)を使用する必要があります。値の 1 つと stringValue フラグのみを一度に指定することが可能であり、その型は、「member」フラグによって命名された構造体メンバの型と一致する必要があります。
|
|
stringValue(sv)
|
string
|
|
|
指定のメタデータ配置場所に設定される文字列値。このフラグは、データ メンバが数値型の場合のみ使用されます。メンバが N 寸法の場合(例: string[2])、このフラグは N 回(例: 2 回)表示される必要があります。影響を受けるすべてのコンポーネントまたはメタデータ インデックスで指定されたメタデータ メンバには、同じ値が適用されます。値の 1 つと stringValue フラグのみを一度に指定することが可能であり、その型は、「member」フラグによって命名された構造体メンバの型と一致する必要があります。
|
|
フラグはコマンドの作成モードで表示できます
|
フラグはコマンドの編集モードで表示できます
|
フラグはコマンドの照会モードで表示できます
|
フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。
|
import maya.cmds as cmds
import maya.cmds as cmds
cmds.polyPlane( name='smcPlane', constructionHistory=False )
# Result: smcPlane #
# Create structure
cmds.dataStructure( format='raw', asString='name=idStructure:int32=ID' )
# Result: idStructure #
# Apply structure to plane
cmds.addMetadata( structure='idStructure', streamName='idStream', channelType='vertex' )
# Attach a metadata value to three of the components by selection
cmds.select( 'smcPlaneShape.vtx[8:10]', replace=True )
cmds.editMetadata( streamName='idStream', memberName='ID', value=7 )
# Result: 1 #
# Attach a metadata value to another component by manual indexing
cmds.select( 'smcPlaneShape', replace=True )
cmds.editMetadata( streamName='idStream', memberName='ID', channelType='vertex', value=8, metadataIndex=14 )
# Result: 1 #
# Remove metadata from the middle of the three vertexes set earlier
cmds.select( 'smcPlaneShape.vtx[9]', replace=True )
cmds.editMetadata( streamName='idStream', delete=True )
# Result: 1 #