筆者環境
・Bifrost2.5.0.0
・Maya2020.2

前回はBifrostの紹介と使用手順について簡単に紹介しました。今回からは基本機能を順に見ていこうと思います。
私自身がリギングやプロシージャルモデリングでBifrostを使用している関係上、シミュレーション系のデータの取り扱いについては情報が欠如していますので予めご了承ください。

では今回はMayaからBifrostへのデータの受け渡し方法を詳しく見ていきたいと思います。
(当ブログで[]でくくっているものはBifrostGraphEditor内のノード名です)

Inputノード

Mayaからのデータ入力はBifrostGraphEditor上の[input]で行います。使い方は4種類あります。

1: inputノードにポートを作り、Mayaにポートを公開する

[input]に作成したポートはBifrostGraphノードの入力アトリビュートとしてMayaに公開されます。キーイングしたりエクスプレッションを設定するなどMayaの基本操作と組み合わせることが出来ますね。
bifrost


.

2: ドラッグ&ドロップ

ジオメトリタイプ(Mesh/Curve)に限り、アウトライナーからBifrostGraphEditorへ中ボタンのドラッグ&ドロップによる入力をサポートしています。
bifrost

.

3: パス入力

Mayaのシーン上のデータパスを指定してデータの入力を行うことが出来ます。
[input]のpath入力欄にデータパスを入力することで、該当するデータがBifrostGraphノードに自動的に接続されます。こちらの入力方法も対象となるのはジオメトリタイプ(Mesh/Curve)だけですので注意してください。
bifrost

パス入力の大きな特徴として、*や?といったワイルドカードがサポートされています。
例えば、
-「//*」で階層以下の全ての対象ジオメトリが入力されます。
-「/*/*」で階層直下の対象ジオメトリが入力されます
-「文字*」で文字が名前に含まれる対象ジオメトリが入力されます。
bifrost

パス入力による自動接続の処理はパス入力欄の評価時(更新時)にのみ実行される点に注意してください。
例えばパス入力に沿うようにオブジェクトをリネームしても接続はされません。この場合、[input]のパス入力欄を再評価することで該当するデータの自動接続が実行されます。


.

4:入力データを選択した状態でnew graphを行う

ジオメトリタイプ(Mesh/Curve)のデータを選択した状態でnew graphを行うと、ジオメトリの入力設定が済んだ状態で新しいグラフが作成されます。手早くテストデータを作りたいときに役立ちますね。
bifrost

Inputオプション

BifrostはMayaAPIとは全く異なる専用のライブラリで構築されています。Mayaから外部のBifrostエンジンにデータを渡して計算結果を再びMayaに返すという流れです。そのためinput/outputでデータのコンバート処理が発生します。
データ容量の大きなジオメトリデータではコンバートのコストも大きくなるため、最適化オプションが用意されています。

・Mesh


Normals per point


bifrost

ONにするとコンバート時に頂点の平均法線が計算されます。その結果はメッシュのpoint_normalプロパティーにセットされます。

Normals per face-vertex


bifrost

ONにするとコンバート時にバーテックスの平均法線が計算されます。その結果はメッシュのface_vertex_normalプロパティーにセットされます。
ハードエッジを入力したい場合はONにしてください。

.

・Curve

BifrostにはCurveは存在せず、直線の集合体であるStrandsというデータ型が用意されています。Strandsで滑らかな曲線を作りたい場合は頂点数を増やして密度を上げる必要があります。

bifrost

InputオプションではStrandsの頂点数や頂点の挿入位置の調整が行えます。

Tangents

ONにするとコンバート時に頂点のタンジェントが計算されます。その結果はpoint_tangentプロパティーにセットされます。

Lengths

ONにするとコンバート時に頂点間の距離が計算されます。その結果はpoint_lengthプロパティーにセットされます。

Linear Sampling

頂点の生成方法を下記の3種類から選択。

CVs

CurveのCVを頂点にする。

bifrost

bifrost

頂点数 CV数
頂点位置 CVの位置

 

Segment multiplication

CurveのCVの数をベースに頂点数を決める。

bifrost

bifrost

頂点数 CV数とSegment Multiplierを掛けた数
頂点位置 カーブの曲率から算出
EvenlySpaced=ONの場合は各頂点間が均等になるように配置

 

Length

各頂点間の距離が指定した長さになります。
MatchEnds=ONの場合はカーブ終点の位置が一致するようにTarget Segment Lengthの値が内部で微調整されます。

bifrost

bifrost

頂点数 Curveの全長をTarget Segment Lengthで分割した数 + 1
頂点位置 始点からTargetSegmentLengthの距離ごとに配置

 

最後に

Inputだけでも盛沢山でしたね。やはりドラッグ&ドロップによる入力が一番直感的な操作なので、ジオメトリタイプ以外のデータもこの方法で扱えるようになってほしいですね。
次回は「ノードグラフの操作とウォッチポイント」です。ノードの取得とデバッグ方法を取り上げます。

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

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