はじめに
この記事では、Bifrostで出力したメッシュやストランドをArnoldでレンダリングする際に、Bifrost側で色を設定する手順を説明します。
同じ方法で、Bifrost から様々なデータを Arnold に渡すことも可能です。
動作確認環境
Maya: 2026.3
Bifrost: 2.15.0.0
MtoA: 5.5.4.2
手順
準備
Bifrost Graph Editor を開き、新規グラフを作成します。

Bifrost Graph 上で適当なプリミティブを作成します。
ここでは create_mesh_sphere を作成し、Radiusを100にして大きくしています。

random_value_array を作成し、offset を右クリック > Set Value Type… で、Set Value Type ウィンドウを開きます。

以下の画像の通り、offset のデータ型を math::float3 に設定します。

get_point_count ノードを作成し、create_mesh_sphere の sphere_mesh を get_point_count の geometry に、count を random_value_array の size に接続します。

get_point_count ノードは入力したジオメトリの頂点(ポイント)数を出力するノードです。
これを random_value_array のサイズに接続することで、random_value_array ノードは、0.0~1.0の範囲のランダムな3つの実数を、sphere の頂点数分だけ配列として出力します。
今回は、これをRGB値として扱い、色情報として使用します。
プロパティの設定
set_geo_property ノードを作成し、ジオメトリをつなぎます。

set_geo_property は、ポイントやフェースなどのコンポーネントごとに指定した型のデータをプロパティとして設定できるノードです。
今回は、頂点(ポイント)ごとに色を設定します。
Target が point component になっていればOKです。

プロパティの名前は自由に設定することができます。
この記事では point_color とします。

set_geo_property の data に、色情報の配列(準備で作成したrandom_value_array の random_values )をつなぎます。

これにより、set_geo_property の out_geometry は、入力ジオメトリの頂点ごとに、色情報が付与されたものを出力します。
out_geometry は Bifrost Graph の output につないでおきます。

マテリアル
Node Editor (または Hypershade)を開きます。
マテリアルを作成してBifrost Graph に割り当てます。
ここでは結果を確認しやすいaiFlatを使用しますが、aiStandardSurfaceなど、後述する aiUserDataColor ノードを接続できる色入力を持つその他の Arnold シェーダーでも構いません。
BifrostGraph1を選択し、aiFlat ノードを右クリックすると表示されるマーキングメニューの Assign Material to Selection によって BifrostGraph1 に aiFlat を割り当てることができます。

aiUserDataColor ノードを作成します。
aiUserDataColor の Attribute に、先ほど set_geo_property で作成したプロパティ名 point_color を入力します。

aiUserDataColor の out Color を aiFlat の Color に接続します。

これにより、Arnold は Bifrost メッシュの point_color を User Data として参照し、その値を aiFlat の色としてメッシュサーフェス上に反映します。

ストランドの場合
入力ジオメトリを、メッシュの代わりにストランドに置き換えても、ストランドのポイント数に合わせた float3 配列を point_color へ設定すれば、同じように Arnold から point_color を参照してレンダリングできます。


userData
UserData を取得するノードは、aiUserDataColor だけではありません。

取得したいプロパティの型に合わせて、対応するノードを使用します。
| ai ノード | Bifrost プロパティ |
|---|---|
| aiUserDataBool | bool 型 |
| aiUserDataColor | 色を表す float3 型 |
| aiUserDataFloat | float 型 |
| aiUserDataInt | int 型 |
| aiUserDataString | string 型 |
| aiUserDataVec2 | float2 型 |
| aiUserDataVector | float3 型 |
まとめ

Bifrost でポイントに設定したプロパティを Arnold で使用する手順は、次の3段階です。
- set_geo_property の target を point_component に設定し、任意の名前のプロパティを作成する
- set_geo_property のデータに、ポイント毎に割り当てるデータの配列を接続する
- aiUserData○○ の Attribute に作成したプロパティ名を指定する



コメント