Maya の Bifrost Graph は、Python スクリプトで一通りの基本操作を行うことができます。
本シリーズでは、MayaのScript EditorにあるPythonタブで実行できるサンプルを使い、Bifrost Graphの基本操作をまとめます。
第1回では、Bifrost Graph、コンパウンド、Backdrop、Sticky Noteの作成方法を扱います。
「コンパウンド」、「ポート」、「型」のような Bifrost における基本的な用語、および「引数」、「タプル」のような Python における基本的な用語を説明なしで用いることがあるので、分からない場合は入門サイトや公式ドキュメントなども合わせて参照してください。
動作確認環境
Maya 2027
Bifrost 3.1.0.8
※ 一部のスクリーンショットは旧バージョンのものを使用しています。
Bifrost Graph の作成
bg_shape = cmds.createNode('bifrostGraphShape', name='<BifrostGraphShape 名>')
例: sample_bgShape という名前の Bifrost Graph を作成する
import maya.cmds as cmds
bg_shape = cmds.createNode('bifrostGraphShape', name='sample_bgShape')
ノード作成のための汎用的なコマンドである createNode で、Bifrost Graph の新規作成ができます。
name に Bifrost Graph Shape の名前を渡します。
このとき名前に Shape が入っていないと、transform ノードに名前が反映されないことに注意してください。
name を使用しない場合は、 デフォルトの名前が使用されます。
コンパウンドの作成
cmds.vnnCompound(
'<Bifrost Graph シェイプ名>',
'<階層>',
addNode = 'BifrostGraph,<コンパウンドの名前空間>,<コンパウンド名>'
)
例: 新規 Bifrost Graph に array_size コンパウンドを作成
import maya.cmds as cmds
bg_shape = cmds.createNode('bifrostGraphShape') # 新規グラフの作成
cmds.vnnCompound(bg_shape, '/', addNode='BifrostGraph,Core::Array,array_size')
コンパウンドの作成には、 vnnCompound コマンドを使用します。
vnnCompound コマンド
コンパウンドの作成や編集、読み取り等ができます。
第一引数には 対象となる Bifrost Graph のシェイプノードのノード名またはフルパスを渡します。
第二引数は、対象となる Bifrost Graph の階層を指定します。
‘/’ は、ルート階層を表します。
ルート階層にある compound1 の中に入ったときの階層は、’/compound1/’ となります。
詳しくは、コマンドヘルプを参照してください。

addNode には作成したいコンパウンドのノードタイプを渡します。
ノードタイプは、以下のような構成の文字列です。
BifrostGraph,<コンパウンドの名前空間>,<コンパウンド名>
コンパウンドは、それぞれ決まった名前空間を持ちます。
例えば array_size コンパウンドは名前空間が Core::Array であるため、addNode は以下のようになります。
BifrostGraph,Core::Array,array_size
ノードタイプを調べるには
ノードタイプは、コンパウンドにマウスカーソルを合わせるとグラフ下部の表示から確認できます。

また、Tabキーで表示されるコンパウンドの一覧や、Bifrost Graph Editor のメニューの Windows > Node Library は、名前空間ごとに階層が分かれているので、コンパウンドがどの階層にあるかを確認すれば、名前空間がわかります。


add コンパウンドは、 Core > Math の中にあります。
名前空間の階層は::で区切るので、add の名前空間は Core::Math であることがわかります。

Tab キーや Node Library からコンパウンドを作成し、Windows > Script Editor の History を確認することで、実行されたコマンドから名前空間を抜き出すことも可能です。

Pythonスクリプトでノードタイプを取得する方法については、次回まとめます。
空のコンパウンドの作成
create にコンパウンド名を渡すことで、空のコンパウンドを作成できます。
comp_path = cmds.vnnCompound('<Bifrost Graph シェイプ名>', '<階層>', create='<コンパウンド名>')
例: 新規 Bifrost Graph のルート階層に sample_compound という名前の空のコンパウンドを作成
import maya.cmds as cmds
bg_shape = cmds.createNode('bifrostGraphShape') # 新規グラフの作成
comp_path = cmds.vnnCompound(bg_shape, '/', create='sample_compound')
Backdrop の作成
cmds.vnnCompound('<Bifrost Graph シェイプ名>', '<階層>', addBackdrop='<backdrop名>')
cmds.vnnCompound(
'<Bifrost Graph シェイプ名>', '<階層>',
setAnnotationMetaDataValue=('<backdrop名>', 'title', '<ラベル>')
)
例: 新規 Bifrost Graph に 「サンプル」というラベルの Backdrop を作成
import maya.cmds as cmds
bg_shape = cmds.createNode('bifrostGraphShape') # 新規グラフの作成
backdrop_name = 'sample_backdrop'
cmds.vnnCompound(bg_shape, '/', addBackdrop=backdrop_name)
cmds.vnnCompound(
bg_shape, '/', setAnnotationMetaDataValue=(backdrop_name, 'title', 'サンプル')
)
vnnCompound コマンドで addBackdrop フラグを使用することで、Backdropを作成できます。
Bifrost Graph Editor で選択中のコンパウンドを囲むように Backdrop が作成されます。
何も選択していなくても、空の Backdrop が作成できます。
addBackdrop に渡した文字列が Backdrop の名前になります。
ただし、日本語やスペースなどはアンダーバーに置き換わり、すでに同階層に同じ名前の Backdrop が存在する場合は連番が付与されます。
作成時のデフォルトでは、addBackdrop に渡した文字列がそのままラベルとして表示されます。
作成後、vnnCompound コマンドで setAnnotationMetaDataValue フラグを使用することで、任意のラベルを設定することができます。
Backdrop の背景色を設定
Backdrop の背景色を設定するには、vnnCompound コマンドを使用します。
cmds.vnnCompound(
'<Bifrost Graph シェイプ名>',
'<階層>',
setAnnotationMetaDataValue=('<Backdrop 名>', 'color', '<カラーコード(#AARRGGBB)>')
)
例: bifrostGraphShape1 のルート階層にある sample_backdrop という名前の Backdrop の背景色を半透明(Bifrost 既定)の赤色に設定する
import maya.cmds as cmds
cmds.vnnCompound(
'bifrostGraphShape1', '/',
setAnnotationMetaDataValue=('sample_backdrop', 'color', '#28ff0000')
)
setAnnotationMetaDataValue は、対象の Backdrop 名、’color’, # から始まるカラーコードをまとめたタプルを渡します。
Backdrop名は、作成時に addBackdrop へ渡した文字列をもとに自動で設定されます。
ただし、作成直後は同じ文字列が表示ラベルにも使われますが、UI や スクリプトでラベルを変更してもBackdrop 名は変わらないことに注意してください。
カラーコードは 先頭から順に ARGB の値を16進数で並べたものです。
先頭の A は不透明度で、 00の時に0パーセント、ffのときに100パーセントとなります。
例えば、不透明の赤であれば #ffff0000 または不透明度を省略して#ff0000 となります。
Sticky Note の作成
# 作成
cmds.vnnCompound('<Bifrost Graph シェイプ名>', '<階層>', addStickyNote=True)
# テキストの設定
cmds.vnnCompound(
'<Bifrost Graph 名>',
'<階層>',
setAnnotationMetaDataValue=('<Sticky Note の名前>', 'text', '<表示したい内容>')
)
例: 新規 Bifrost Graph を作成し、’たちつてラボ’と書かれた Sticky Note を作成する
import maya.cmds as cmds
bg_shape = cmds.createNode('bifrostGraphShape') # 新規グラフの作成
cmds.vnnCompound(bg_shape, '/', addStickyNote=True)
cmds.vnnCompound(
bg_shape, '/',
setAnnotationMetaDataValue=('sticky_note', 'text', 'たちつてラボ')
)
vnnCompound コマンドで addStickyNote フラグを使用することで、Sticky Note を作成できます。
作成された Sticky Note の名前は、’sticky_note’になります。
ただし、その階層にすでに その名前の Sticky Note が存在する場合は、1から始まる連番が後ろにつきます。
色/フォントサイズを設定
vnnCompound コマンド の setAnnotationMetaDataValue を使用することで、Sticky Note のフォントサイズや色を設定できます。
# フォントサイズの設定
cmds.vnnCompound(
'<Bifrost Graph 名>',
'<階層>',
setAnnotationMetaDataValue=('<Sticky Note の名前>', 'fontSize', '<フォントサイズ>')
)
# 色の設定
cmds.vnnCompound(
'<Bifrost Graph 名>', '<階層>',
setAnnotationMetaDataValue=(
'<Sticky Note の名前>', 'color', '<カラーコード(#RRGGBB)>'
)
)
例: bifrostGraphShape1 のルート階層にある sticky_note という名前の Sticky Note のフォントサイズを48、色を赤色に設定する
import maya.cmds as cmds
# フォントサイズの設定
cmds.vnnCompound(
'bifrostGraphShape1', '/', setAnnotationMetaDataValue=('sticky_note', 'fontSize', '48')
)
# 色の設定
cmds.vnnCompound(
'bifrostGraphShape1', '/', setAnnotationMetaDataValue=('sticky_note', 'color', '#ff0000')
)
setAnnotationMetaDataValue に、対象の Sticky Note 名、’fontSize’, フォントサイズをまとめたタプルを渡すことで、その Sticky Note のフォントサイズを変更できます。
フォントサイズは数値ではなく文字列で渡すことに注意してください。
Sticky Note 名は、既定では、’sticky_note’ または 作成順に ‘sticky_note1’ のように連番が付いています。
カラーコードは RGB の値を16進数で並べたもので、赤であれば #ff0000 となります。
色の設定については、Backdrop とほぼ同じです。Backdrop の背景色を設定 を参照してください。
ただし、Sticky Note の場合は不透明度を設定しても、表示に反映されません。
まとめ
今回は、Bifrost Graph やコンパウンド、Backdrop、Sticky Note を作成するコマンドをまとめました。
次回は、コンパウンドを操作する方法をまとめます。
次回:第2回(近日公開予定)



コメント