筆者環境
・Bifrost2.5.0.0
・Maya2020.2
今回は使用頻度の高いグラフをコンパウンド化し、それをチームで共有する方法を見ていきます。
(当ブログで[]で括っているものはBifrostGraphEditor内のノード名です)
サンプルとして前回作成した最も近い位置を取得するグラフを[get_closest_position]という名前でコンパウンド化していこうと思います。
これがあれば「GeoLocationデータが~~propertyが~~」といった内部処理の手続きを考えることなく、一発でポジションを取得できるようになりますよ。
コンパウンド
コンパウンドの作成
一纏めにしたいノードを選択してメニューのCreate>Compoundを実行、あるいはショートカット[CTRL]+[G]でコンパウンド化します。
コンパウンドをダブルクリックすると内部のグラフが開きます。グラフの編集方法はこれまでと同じですが、[input]/[output]のポートはMayaへ公開されるものではなくコンパウンドのポートに該当する点に注意してください。
現在どの階層を表示しているかはBifrostEditor上部のタブで確認することが出来ます。階層の移動もこのタブで行えます。
ポート整理
ポートを整理して使い勝手の良いコンパウンドにしていきましょう。
まずポート名は右クリックメニュー>Rename Portで変更できます。また配置の変更は右クリックメニュー>Move ***で行えます。
右クリックメニュー>Add to Groupでポートをグループ管理することも可能です。(残念ながら執筆時点のver2.5.0.0ではグループ化の機能はinputポート側しかサポートしていません)
グループは表示を畳めるので、ハイレベルプリセットでありがちなポートの壁を整理して見た目をすっきりとさせることが出来ます。
コンパウンドの外部保存
コンパウンドはメニューからCreate>Publish Compaundで外部保存ができます。
ここで注意すべき点はCompound namespaceです。
ネームスペースはコンパウンドを一意の物として識別するための仕組みです。例えばネームスペースが異なれば同名のコンパウンドを作成することも可能です。一方でネームスペースを後から変更した場合は別のノードとして認識されるので、チームで運用する場合は事前にルール作りをしておくことをお勧めします。
またTabメニューのノードのツリー階層はここで決めたネームスペースに準じます。
保存先はBifrostに設定されている特定のディレクトリにする必要があります。
例えば
C:\ Users \ <your_user_name> \ Autodesk \ Bifrost \ Compounds
は標準で設定されている外部ファイルのロードパスです。(任意のディレクトリをロードパスに設定する方法はこの後で説明します)
では[get_closest_position]を出力してみてください。
保存できたらTabメニューに[get_closest_position]が含まれているのを確認してください。
これでいつでもすぐにカスタムコンパウンドを呼び出すことが可能になりました。
Tips
執筆時点のver2.5.0.0では下記のコンパウンドのオプションはツール上から設定できません。外部保存したjsonファイルを直接編集してください。
■ドキュメント
compounds > metadata に documentation を追記し、metaValueにはドキュメントファイルへの相対パスを記入します。
ドキュメントファイルはマークダウン形式で準備してください。
■ノードアイコン
compounds > metadata に icon を追記し、metaValueにはアイコンファイルへの相対パスを記入します。
コンパウンドの使用
リファレンスで使用する
先ほど外部保存した[get_closest_position]を取得してみましょう。
ノード名に青い◆が付いていますね。これはコンパウンドがリファレンス状態で使用されていることを表します。Mayaでリファレンス機能を使用したことがある方にはお馴染みの印だと思います。
インライン化
リファレンス状態のコンパウンドは内部を閲覧することは出来ますが、グラフやポートの編集は不可能です。編集を行いたい場合、あるいはリファレンスを解除して使用したい場合はコンパウンドの右クリックメニュー>Make Editableを実行します。
チームで共有する
外部保存したjsonファイルは、以下のディレクトリに配置することでBifrostで使用可能になります。
Bifrostの標準パス
C:\ Users \ <your_user_name> \ Autodesk \ Bifrost \ Compounds
任意のパス
任意のパスを追加する場合、事前に以下のようなlib_config.jsonファイルの準備が必要です。”path”にはlib_config.jsonからコンパウンドファイルを保存しているフォルダまでの相対パスを記述します。
{ "AminoConfigurations": [ { "vendorName": "PlatinumGames", "libraryVersion": "0.2.3", "libraryName": "PlatinumGamesPack", "jsonLibs": [ { "path": "TeamW/compounds", "files": [ ] } ] } ] }
次に環境変数”BIFROST_LIB_CONFIG_FILES”にlib_config.jsonファイルのパスを登録して完了です。
フリーコンパウンド
最後にフリーで公開されているお勧めのコンパウンドパックを紹介ます。他にもBifrostの公式フォーラムではユーザーが作ったものが共有されていますので、チェックしてみてください。
・Rebel Pack
Bifrostの開発チームがリリースしているコンパウンドパックです。
標準実装に向けた評価段階のノード群ですので、今後の開発方針を伺い知ることもできます。
・MJCG-Compounds 2.0
Bifrostがまだ本格的に開発のターゲットとしていないモデリングやリギングで有用なコンパウンドが多数提供されています。同僚のMaxime Jeanmouginさんのプライベートプロジェクトです。
・bifrost-dl-core
こちらもリギングやデフォームに関するコンパウンドパックです。
・PRINT_PACK
グラフ上を流れる様々な数値をビューポートに表示するコンパウンドパックです。
ジオメトリプロパティーのような大量のデータをデバッグ表示する際に重宝しています。
・Bifrost Editor +2.0
コンパウンドパックでは無いのですが、エディタに不足している様々便利機能を実装するプラグインです。
次は「最適化」です。
高島 正規
テクニカルアーティスト
長年シネマティックアーティストとしてフェイスリグやフェイシャルモーションの制作を担当。現在は技術戦略グループに所属し、DCCツールのプラグイン開発のための内製C++ライブラリの構築と、Bifrostを用いたツール開発を行っている。