頂点を選択してlsコマンドで受け取った時にvtx[0:3]のように各頂点番号で受け取れない問題があります。
このようなときに各頂点を受け取れるように展開することが出来るコマンドが[filterExpand]です。
filterExpandコマンド自体は展開以外にフィルタをかけることもできます。
今回は展開を中心にフィルタの使い方も少し紹介したいと思います。
コマンドもMELとPython両方の書き方を記したいと思います。
このようなときに各頂点を受け取れるように展開することが出来るコマンドが[filterExpand]です。
filterExpandコマンド自体は展開以外にフィルタをかけることもできます。
今回は展開を中心にフィルタの使い方も少し紹介したいと思います。
コマンドもMELとPython両方の書き方を記したいと思います。
|
filterExpandコマンド
コマンドの使い方は
filterExpandコマンドと頂点やエッジ、UVなどに対応したセレクションマスク番号を組み合わせて使います。
セレクションマスク番号はコンポーネントに基づいていて
ポリゴン頂点なら31
ポリゴンエッジは32
ポリゴン頂点フェースは70
の様に番号が対応しています。
この番号とfilterExpand コマンドを組み合わせます。
の様に番号が対応しています。
この番号とfilterExpand コマンドを組み合わせます。
例えばMELでポリゴンの頂点を取得して、まとまって出力された値を展開する場合は、
セレクションマスク番号 31 を使って
filterExpand -selectionMask 31
と記述します。
|
ポリゴン頂点を展開
ポリキューブの頂点を選択します。
Mel:
string $vtxName[] = `ls -sl `;
// Result: pCube1.vtx[0:7] //
Python:
import maya.cmds as cmds
vtxName = cmds.ls(sl=True)
[u’pCube1.vtx[0:7]’]
pCube1.vtx[0:7]となって0番から7番まで取得できましたが、
[0:7]とまとまってます。
これを展開したいと思います。
[0:7]とまとまってます。
これを展開したいと思います。
展開
Mel:
string $vtxName[] = `ls -sl `;
string $vtxNo[] = `filterExpand -selectionMask 31 $vtxName`;
print($vtxNo);
pCube1.vtx[0]
pCube1.vtx[1]
pCube1.vtx[2]
pCube1.vtx[3]
pCube1.vtx[4]
pCube1.vtx[5]
pCube1.vtx[6]
pCube1.vtx[7]
Python:
import maya.cmds as cmds
vtxName = cmds.ls(sl=True)
vtxNo = cmds.filterExpand(vtxName , selectionMask= 31)
print(vtxNo)
[u’pCube1.vtx[0]’, u’pCube1.vtx[1]’, u’pCube1.vtx[2]’, u’pCube1.vtx[3]’, u’pCube1.vtx[4]’, u’pCube1.vtx[5]’, u’pCube1.vtx[6]’, u’pCube1.vtx[7]’]
filterExpandコマンドにセレクションマスクの31番[selectionMask 31]を使って展開しました。
31番はポリゴン頂点の番号です。
[0:7]と纏まっていたのが
pCube1.vtx[0]
pCube1.vtx[1]
pCube1.vtx[2]
…..
と展開されました。
|
ポリゴン頂点フェースを展開
今度はポリゴン頂点フェースを展開してみます。
ポリゴン頂点を選択します。
Mel:
string $vtxName[] = `ls -sl `;
string $vtxface[] = `polyListComponentConversion -tvf $vtxName`;
print($vtxface);
// Result: pCube1.vtxFace[4][1:2] pCube1.vtxFace[4][5] //
Python:
import maya.cmds as cmds
vtxName = cmds.ls(sl=True)
vtxface = cmds.polyListComponentConversion(vtxName, tvf=True)
print(vtxface)
[u’pCube1.vtxFace[4][1:2]’, u’pCube1.vtxFace[4][5]’]
[polyListComponentConversion -tvf]でポリゴン頂点フェースを取得しました。
結果は
pCube1.vtxFace[4][1:2]
pCube1.vtxFace[4][5]
と纏まって返されました。
これも展開します。
展開
Mel:
string $vtxName[] = `ls -sl `;
string $vtxface[] = `polyListComponentConversion -tvf $vtxName`;
string $vtxfaceNo[] = `filterExpand-selectionMask 70 $vtxface`;
print($vtxfaceNo);
// Result: pCube1.vtxFace[4][1] pCube1.vtxFace[4][2] pCube1.vtxFace[4][5] //
Python:
import maya.cmds as cmds
vtxName = cmds.ls(sl=True)
vtxface = cmds.polyListComponentConversion(vtxName, tvf=True)
vtxfaceNo = cmds.filterExpand(vtxface selectionMask = 70 )
print(vtxfaceNo)
[u’pCube1.vtxFace[4][1]’, u’pCube1.vtxFace[4][2]’, u’pCube1.vtxFace[4][5]’]
[filterExpand -selectionMask 70]
ポリゴン頂点フェースのセレクションマスク 70番を使って展開します。
結果は
pCube1.vtxFace[4][1]
pCube1.vtxFace[4][2]
pCube1.vtxFace[4][5]
と綺麗に展開されました。
|
セレクションマスクでフィルターする
頂点とエッジ両方を選択しました。
複数のコンポーネントが選択された状態で指定した情報のみを取得します。
vtxName = cmds.ls(sl=True)
vtxNo = cmds.filterExpand(vtxName , selectionMask= 31)
print(vtxNo)
[u’pCube1.vtx[4]’]
頂点のみが返されました。
vtxName = cmds.ls(sl=True)
vtxNo = cmds.filterExpand(vtxName , selectionMask= 32)
print(vtxNo)
[u’pCube1.e[2]’, u’pCube1.e[6]’, u’pCube1.e[8]’]
エッジのみが返されました。
この様に複数のタイプのコンポーネントが選択された状態から
特定のコンポーネントのみを取得したい場合にフィルターをかけることが出来ます。
|
セレクションマスク一覧
filterExpandのセレクションマスクは他にも多数あります。
ハンドル | 0 |
Nurbs カーブ | 9 |
Nurbs サーフェス | 10 |
Nurbs カーブ オンサーフェス | 11 |
ポリゴン | 12 |
ロケータ XYZ | 22 |
方向ロケータ | 23 |
ロケータ UV | 24 |
Control Vertex (CV) | 28 |
エディット ポイント | 30 |
ポリゴン頂点 | 31 |
ポリゴンエッジ | 32 |
ポリゴン フェース | 34 |
ポリゴン UV | 35 |
サブディビジョン メッシュ ポイント | 36 |
サブディビジョン メッシュ エッジ | 37 |
サブディビジョン メッシュ フェース | 38 |
カーブ パラメータ ポイント | 39 |
カーブ ノット | 40 |
サーフェス パラメータ ポイント | 41 |
サーフェス ノット | 42 |
サーフェス範囲 | 43 |
トリム サーフェス エッジ | 44 |
サーフェス アイソパラム | 45 |
ラティス ポイント | 46 |
パーティクル | 47 |
スケール ピボット | 49 |
回転ピボット | 50 |
セレクション ハンドル | 51 |
サブディビジョン サーフェス | 68 |
ポリゴン頂点フェース | 70 |
NURBS サーフェスのフェース | 72 |
サブディビジョン メッシュ UV | 73 |
|
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
おすすめの関連記事
|
|
|
|
|
あわせてよく読まれている記事