【逆引き】Python で操作する Bifrost ④ ~エディタ操作編~

Tech

Maya の Bifrost Graph は、Python スクリプトで一通りの基本操作を行うことができます。

本シリーズでは、 Script Editor の Python タブで実行できるサンプルを使い、Bifrost Graph の基本操作をまとめます。

第一回: 作成編

第二回: コンパウンド編

第三回: ポートとワイヤー編

第四回: 本記事

第4回は、Bifrost Graph Editor を Python で操作する方法をまとめます。

「コンパウンド」、「ポート」、「型」のような Bifrost における基本的な用語、および「引数」、「タプル」のような Python における基本的な用語を説明なしで用いることがあるので、分からない場合は入門サイトや公式ドキュメントなども合わせて参照してください。

動作確認環境

Maya 2027
Bifrost 3.1.0.8

Bifrost Graph Editor を表示

import maya.cmds as cmds

cmds.vnnCompoundEditor()

Bifrost Graph Editor を開きます。

このコマンドで開いた Bifrost Graph Editor は、タイトルラベルが Compound Editor となっており、Maya の Windows > Bifrost Graph Editor メニューから開くものと区別されます。

そのためこのコマンドにより、Bifrost Graph Editor を同時に2つ開いた状態にできます。

name で明示的に Bifrost Graph Editor の名前を指定することもできます。

cmds.vnnCompoundEditor(name='<Bifrost Graph Editor 名>')

名前が同じ Bifrost Graph Editor がすでに開いている場合、新たな Bifrost Graph Editor は開きません。

Windows > Bifrost Graph Editor メニューから開いた場合に Bifrost Graph Editor が複数開かれた状態にならないようにするには、name に ‘bifrostGraphEditorControl’ を指定します。

Bifrost Graph Editor を閉じる

# 閉じる
cmds.workspaceControl('<Bifrost Graph Editor 名>', e=True, close=True)
# 削除
cmds.deleteUI('<Bifrost Graph Editor 名>')

例: Windows > Bifrost Graph Editor メニューから開いた Bifrost Graph Editor を閉じる

import maya.cmds as cmds

cmds.workspaceControl('bifrostGraphEditorControl', e=True, close=True)

単に閉じたいだけなら cmds.workspaceControl、不具合や整理のために完全に破棄したいなら cmds.deleteUI が適しています。

いずれも、第一引数は、Bifrost Graph Editor の名前を渡します。

Bifrost Graph Editor の名前

通常、Maya の Windows > Bifrost Graph Editor メニューから開いた Bifrost Graph Editor の名前は bifrostGraphEditorControl です。

vnnCompoundEditor コマンドで Bifrost Graph Editor を新たに作成する場合、明示的に指定しなければ既定の名前は vnnCompoundEditorControl になります。

以下のコマンドで、現在開いている Bifrost Graph Editor をリストアップすることもできます。

import maya.cmds as cmds

editors = cmds.vnnCompoundEditor(q=1, listEditors=True)
print(editors)

Bifrost Graph Editor で Bifrost Graph を開く

cmds.vnnCompoundEditor(
    name='<Bifrost Graph Editor 名>',
    edit='<Bifrost Graph Shape 名>'
)

例: Windows > Bifrost Graph Editor メニューから開いた Bifrost Graph Editor で bifrostGraphShape1 を開く

import maya.cmds as cmds

cmds.vnnCompoundEditor(
    name='bifrostGraphEditorControl', edit='bifrostGraphShape1'
)

vnnCompoundEditor コマンドを使用することで、Bifrost Graph Editor で Bifrost Graph を開くことができます。

name には、Bifrost Graph Editor の名前を渡します。

edit には、開きたい Bifrost Graph のシェイプノードのノード名またはフルパスを渡します。

すでに別の Bifrost Graph が開いている場合は、タブが追加されます。

シーン内の Bifrost Graph を一覧する

import maya.cmds as cmds

graphs = cmds.ls(type='bifrostGraphShape') or []

print(graphs)

Maya シーンにある、ノードタイプが bifrostGraphShape であるノードを ls コマンドで取得します。

or [] とすることで、シーン内に Bifrost Graph Shape が存在しない場合に、結果が None ではなく、空のリストになります。

コンパウンドの選択状態を取得

selected = cmds.vnnCompoundEditor(
    name='<Bifrost Graph Editor 名>', q=True, nodeSelection=True
)

例: Windows > Bifrost Graph Editor メニューから開いた Bifrost Graph Editor で現在選択しているノードを一覧する

import maya.cmds as cmds

selected = cmds.vnnCompoundEditor(
    q=True, name='bifrostGraphEditorControl', nodeSelection=True
)

print(selected)

vnnCompoundEditor コマンドの照会モードで nodeSelection フラグを使用することで、Bifrost Graph Editor で現在選択しているノードの一覧を取得できます。

name には、Bifrost Graph Editor の名前を渡します。

Bifrost Graph Editor で何も選択していない場合は、空のリストではなく None が返ります。

Bifrost Graph Editor でコンパウンドを選択

cmds.vnnCompoundEditor(name='<Bifrost Graph Editor 名>', nodeSelection='<ノード名>')

例: 現在 Bifrost Graph Editor で開いている階層のコンパウンド、comp1 を選択する

import maya.cmds as cmds

cmds.vnnCompoundEditor(name='bifrostGraphEditorControl', nodeSelection='comp1')

nodeSelection に、選択したいコンパウンドの名前を指定します。
これは、Bifrost Graph Editor で現在開いている階層に存在している必要があります。

また、以下のように中カッコで囲うことで複数のコンパウンドを指定できます。
これは Python の集合(Set)ではなく、文字列であることに注意してください。

nodeSelection='{comp1, comp2, comp3}'

name には、Bifrost Graph Editor の名前を渡します。

現在の選択状態から追加で選択したい場合は、一旦選択状態を取得してから、その内容に、追加したいコンパウンドを加えて選択し直します。

import maya.cmds as cmds

selected = cmds.vnnCompoundEditor(
    q=True, name='bifrostGraphEditorControl', nodeSelection=True,
) or []

selected.append('sequence_array1')
node_selection = '{' + ','.join(selected) + '}'
print(node_selection)
cmds.vnnCompoundEditor(
    name='bifrostGraphEditorControl',
    nodeSelection=node_selection,
)

vnnCompoundEditor コマンドによって取得した選択ノードの一覧は Python のリスト形式ですが、nodeSelection に渡す選択したいノードは独自の文字列形式であることに注意してください。

Bifrost Graph Editor の表示階層を移動

cmds.vnnCompoundEditor(
    name='<Bifrost Graph Editor 名>', currentCompound='<移動先のパス>',
)

例: ルート階層にあるコンパウンド compound1 の中に入る

import maya.cmds as cmds

cmds.vnnCompoundEditor(
    name='bifrostGraphEditorControl', currentCompound='/compound1',
)

name には、Bifrost Graph Editor の名前を渡します。

currentCompound に指定した階層を Bifrost Graph Editor で表示します。

まとめ

今回は、Python で Bifrost Graph Editor を操作するコマンドをまとめました。

次回は、値やコンポーネントの作成についてまとめます。

前回:第3回 ポートとワイヤー編
次回:第5回(近日公開予定)

コメント

タイトルとURLをコピーしました