Maya Bifrost の色を Arnold でレンダリングする方法|aiUserDataColor

Tech

はじめに

この記事では、Bifrostで出力したメッシュやストランドをArnoldでレンダリングする際に、Bifrost側で色を設定する手順を説明します。

同じ方法で、Bifrost から様々なデータを Arnold に渡すことも可能です。

動作確認環境
Maya: 2026.3
Bifrost: 2.15.0.0
MtoA: 5.5.4.2

手順

準備

Bifrost Graph Editor を開き、新規グラフを作成します。

MayaのBifrost Graph Editorで作成した新規グラフ

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

create_mesh_sphereノードのRadiusを100に設定したBifrost Graph

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

random_value_arrayのoffsetからSet Value Typeを開く操作

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

offsetのデータ型をmath::float3に設定したSet Value Type画面

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

create_mesh_sphereとget_point_countとrandom_value_arrayの接続

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

プロパティの設定

set_geo_property ノードを作成し、ジオメトリをつなぎます。

set_geo_propertyへメッシュジオメトリを接続した状態

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

set_geo_propertyでポイント単位のプロパティを設定する画面

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

set_geo_propertyのプロパティ名にpoint_colorを指定した状態

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

random_valuesをset_geo_propertyのdataへ接続した状態

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

set_geo_propertyのout_geometryをBifrost Graphのoutputへ接続した状態

マテリアル

Node Editor (または Hypershade)を開きます。

マテリアルを作成してBifrost Graph に割り当てます。
ここでは結果を確認しやすいaiFlatを使用しますが、aiStandardSurfaceなど、後述する aiUserDataColor ノードを接続できる色入力を持つその他の Arnold シェーダーでも構いません。

BifrostGraph1を選択し、aiFlat ノードを右クリックすると表示されるマーキングメニューの Assign Material to Selection によって BifrostGraph1 に aiFlat を割り当てることができます。

BifrostGraph1へaiFlatを割り当てるマーキングメニュー

aiUserDataColor ノードを作成します。

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

aiUserDataColorのAttributeにpoint_colorを入力した設定

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

aiUserDataColorのoutColorをaiFlatのColorへ接続したマテリアル

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

point_colorを使用してArnoldで色分けしたBifrostメッシュ

ストランドの場合

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

point_colorを設定したBifrostストランドのグラフ
point_colorを使用してArnoldで色分けしたBifrostストランド

userData

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

Node Editorで表示したArnoldのUser Dataノード一覧
Node Editor で Tab キーを押してノードを作成する画面

取得したいプロパティの型に合わせて、対応するノードを使用します。

ai ノードBifrost プロパティ
aiUserDataBoolbool 型
aiUserDataColor色を表す float3 型
aiUserDataFloatfloat 型
aiUserDataIntint 型
aiUserDataStringstring 型
aiUserDataVec2float2 型
aiUserDataVectorfloat3 型

まとめ

Bifrost Graph 全体

Bifrost でポイントに設定したプロパティを Arnold で使用する手順は、次の3段階です。

  1. set_geo_property の target を point_component に設定し、任意の名前のプロパティを作成する
  2. set_geo_property のデータに、ポイント毎に割り当てるデータの配列を接続する
  3. aiUserData○○ の Attribute に作成したプロパティ名を指定する

コメント

タイトルとURLをコピーしました