Created on | Updated on

マテリアルバリエーションを生成する ー単一ジオメトリの場合ー

mceclip0.png

 

For eachを使用し、各ポイントにモデルを割り当てる場合は多々あるが、その各モデルに異なるマテリアルを割り当てたい場合の方法になります。

 

始める前はこのようになっています。

mceclip1.pngmceclip2.png

 

まずは、Material Networkを作成します。

mceclip4.png

 

mceclip3.png

この中にバリエーションに使用するマテリアルを全てまとめて作成します。

mceclip6.png

Shaderは何でも大丈夫です。

同じ場所に決められた法則で名前が付けられている必要があります。

ここでは、下記の場所に

mceclip7.png

mat_"番号"という形でShaderを作成しています。

ここから各モデルに対してマテリアルを割り当てていくため、For each Connected Pieceを作成しました。

 

mceclip9.png

mceclip8.png

For each BeginノードにてCreate Meta Import Nodeをクリック。

mceclip10.png

mceclip11.png

 

このMetadataノードのDetailアトリビュートで下記を取得することができます。

mceclip12.png

numiterations

反復の予想合計数で、Block Endの Max Iterations と Single Pass パラメータを考慮します。

iteration

現行の反復数で、常に0から始まり、各ループで1ずつ増加します。

 

mceclip13.png

ここでiterationを使用し、ループ内で何回目のループなのか取得することができます。

Attribute Wrangleを追加し、下記のように接続。

mceclip14.png

 

Run overを追加し、下記のように記述。

mceclip15.png

//detailアトリビュートのiterationを取得(現在のループ回数を取得)
int iter = detail(1, "iteration", 0);
//パラメータを作成 string matnet = chs("Material_Network"); string name = chs("Material_Name");
//variationsパラメータを作成し、現行のループ数を元に乱数を生成して整数化、それを文字列へ int rd = int(ceil(rand(iter)*chi("variations"))); string version = itoa(rd);
//生成した番号をマテリアル名の追加して、shop_materialpathアトリビュートを設定 s@shop_materialpath = matnet + "/" + name + "_" + version;

 

記述したら、横のパラメータボタンをクリック

mceclip16.png

 

パラメータが作成されるので、必要な情報を設定する

mceclip17.png

 

Variationsには、Material Networkで作成したマテリアルの数を入力。
Material Networkには、割り当てるマテリアルがまとめられたネットワークを指定

Matnetをパラメータに左マウスボタンでドラッグすればOK。

mceclip18.png

 

Material Nameにはマテリアル名の共通部分を入力

mceclip19.png

 

For each entにフラグを設定すると、マテリアルバリエーションのモデルを配置することができる。

mceclip20.png

正し、1モデルが複数のデータから成り立っている場合、接続されているプリミティブかどうかで割り当てるマテリアルをきめているため下記のようになってしまう。

mceclip0.png

この場合の設定は「マテリアルバリエーションを生成する ー複数ジオメトリで1モデルを構成している場合ー」を参照してください。

 

 

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

※ 問い合わせ対応はBorn Digitalより製品をご購入頂きましたお客様のみのサービスとなります。ご了承下さい。
サポート問い合わせ