初回ですので、まずはBifrsotの紹介と操作の大まかな流れを確認しましょう。

Bifröst 2について

Bifrostは流体やエアロのシミュレーションツールとしてMaya2015で実装されましたが、2019年にリリースされたバージョン2.0ではノードベースのビジュアルプログラミングツールとして大きく生まれ変わりました。(当ブログの”Bifrost”は2.0系を指します)
2.0以降は約3ヵ月毎にアップデートがリリースされています。現在開発のメインターゲットはシミュレーション系やPixar:USDとなっていて今後も当面の間はこの傾向が続きそうです。とはいえMayaにモダンなノードエディタが実装されたことの意義は大きいと考えています。
例えば、

  • ツールのプロト開発が手早く行える
  • カスタマイズやデバッグがその場で容易に行える
  • ノードグラフをリファレンス化して再利用できる

といったノードエディタの定番のメリットをMayaの標準環境で享受することが可能になりました。

インストール

BifrostはMayaの基本機能ではなく、外部プラグインとして提供されています。
Mayaのインストールオプションにも含まれているため知らぬ間に入っている方も多くいると思いますが、アップデートタイミングはMayaとは異なるので専用のページから最新版を取得することをお勧めします。
https://area.autodesk.com/bifrost/downloads/
Mayaユーザーであれば無料で使用できるので費用面での導入コストは掛からないのはありがたいですね。ちなみに当ブログではBifrost2.5.0.0 / Maya2020.2をベースに話を進めていきます。

ロード

インストールしたら、プラグインマネージャーでロード設定を確認しましょう。

Bifrsot2.0系を使用する場合は、”bifrsotGraph.mll”をロードしてください。
ロード時間はバージョン2.2.1.0で劇的に改善されましたが、Mayaの起動を少しでも早くしたい場合はオートロードはOFFにしておくことをお勧めします。

使い方

Mayaのメニューから Windows > Bifrost Graph Editorで起動します。

エディタのスタート画面からCreateGraphボタン、もしくはメニューからCreate>new graphで始めましょう。

Maya上にBifrostGraphShapeノードが作成されます。

このBifrostGraphShapeノードにMayaのデータを渡して計算結果を取得するといったデータフローになります。

BifrostGraphエディタ上でのノードの取得は、Tabキーで起動するTabメニューで行います。ノードツリーを辿って目的のノードを見つけるか、検索ボックスにノード名を入力して取得します。

グラフエディタでのデータの流れは左から右です。

ちなみにBifrostGraphEditor上のノード間のデータの受け渡し方法(参照渡しか値渡しか)は各ノードで最適化されているので、ユーザーは気にする必要はありません。

軽く使ってみる

今回は「キューブメッシュの頂点位置にロケータをコンストレイントする」という簡単なノードグラフを作ってみましょう。
Mayaでキューブメッシュを作成し、アウトライナーからBifrostGraphEditorへ中ボタンでドラッグ&ドロップします。

紫色のポートが付いた新しいinputノードが作成されます。このポートにはMayaから渡されたキューブメッシュのトポロジー、頂点位置、頂点法線、UVマップ、バーテックスカラーなどのデータが含まれています。

ではこのポートから頂点位置だけを取得しましょう。
get_point_positionノードを取得し紫色のポートを繋げると、メッシュの全頂点の位置情報が黄緑色のポートから出力されます。

次にこの全頂点の位置データから1つピックアップするためにget_from_arrayノードを使用します。

get_from_arrayノードの出力をoutputノードの”+”に接続すると、BifrostからMayaへの出力となります。
ここからはMayaのノードエディタを見ていきます。
(BifrostGraphShapeノードがMayaノードエディタに表示されていない場合は、アウトライナーからノードをMayaノードエディタに中ボタンでドラッグ&ドロップしてください)

outputノードに生成されたポートと同じ名前の出力ポートがBifrostGraphShapeノードに出来ているのが確認できると思います。

Mayaでロケータを作成して、Translateを繋いでみましょう。

キューブメッシュの0番の頂点位置にロケータが配置されたと思います。
キューブメッシュの編集を行っても、ロケータは常に0番の頂点位置に追従します。

再びBifrostGraphEditorに戻りましょう。
get_from_arrayノードにはindexというパラメータがあります。これは配列データからピックアップするデータの番号を指定するためのもので、今回の場合はindex=頂点番号となります。
試しに3と入れると、3番の頂点位置にロケータがジャンプするのが確認できます。

ではこのindexポートの値をMayaから操作出来るようにしてみましょう。
方法は簡単で、indexポートをinputノードの”+”に接続するだけです。(メッシュをインプットしているノードの”+”でもOKです)

これによってindexプロパティーがBifrostGraphShapeノードのアトリビュートとしてMayaに公開されます。

大まかなノードグラフの構築手順がお分かり頂けたでしょうか?
次回は「Mayaからデータを受け取る! Inputノードの使い方」です。

順に各機能を詳しく見ていきたいと思います。
ではまた~。

高島 正規
テクニカルアーティスト

長年シネマティックアーティストとしてフェイスリグやフェイシャルモーションの制作を担当。現在は技術戦略グループに所属し、DCCツールのプラグイン開発のための内製C++ライブラリの構築と、Bifrostを用いたツール開発を行っている。