【Unity】BlenderのMix Shaderを使ったマテリアルを再現する

投稿者: | 2023-11-05

UnityのLayered Litシェーダーを使って、BlenderでMix Shaderノードを使ったマテリアルと同じ見た目を作ってみました。

Blenderでマテリアルを作る

まず床のオブジェクトに新規マテリアルを付けて、テクスチャを追加します。

別のマテリアルから、マテリアルアウトプット以外を上のマテリアルにコピペします。元のマテリアルに新しくPrincipled BSDFノードを作ることもできます。

2つのPrincipled BSDFノードをミックスシェーダーで合成します。

Node Wrangler

Mix Shaderノードの「Fac」の値が0だと上、1だと下のソケットに入力したPrincipled BSDFが使われ、Facが中間の値だとそれに応じて合成されます。

Fac : 0
Fac : 1
Fac : 0.5

Facに「Musgrave Texture」ノードなどでノイズを入力すると、2つ目のシェーダーを部分的に表示できます。

「Musgrave Texture」ノードの値を変えたり、「Color Ramp」ノードを使って見た目を調節しました。

さらにもう一つPrincipled BSDFノードと各種テクスチャを追加してみます。

このPrincipled BSDFノードと、上のMix Shaderノードの出力を新規Mix Shaderノードで合成します。

ノイズも追加して新規Mix Shaderノードの「Fac」に入力します。

マテリアルが完成しました。

レイヤーマスクを作る

UnityのLayered Litシェーダーで使うためのレイヤーマスクを作ります。そのために、各Mix Shaderノードの「Fac」の入力を一つずつベイクします。

「Fac」と接続しているソケットをマテリアルアウトプットに直接入力します。

新規「Image Texture」ノードにテクスチャを作成して、Emitタイプでベイクします。

ベイクした2つのテクスチャをGIMPなどで一つのテクスチャにします。GIMPで2つのテクスチャを読み込んで、グレースケールモードにします。

チャンネル合成で2つのレイヤーをそれぞれ赤、緑チャンネルに割り当てます。

2つ目のコンクリートのマテリアルを合成するテクスチャを赤チャンネル、瓦礫のマスクを緑に設定しました。

できた画像をpng形式などで保存します。

Layered Litのマテリアルを作成

Blenderで作ったモデルと、GIMPで合成したレイヤーマスクをUnityにインポートし、Blenderで作った3つのマテリアルを作成します。

さらにもう一つマテリアルを作成し、シェーダーをLayered Litにします。

Layer Maskに、GIMPで作成したレイヤーマスクを割り当て、レイヤー数を3にして、各マテリアルをアタッチします。

マテリアルを割り当てると、その下で各マテリアルのプロパティを変更できるので、タイリング等をBlenderで設定した値にします。

Blender

これでBlenderと同じ見た目になりました。

Blender
Unity

コメントを残す

メールアドレスが公開されることはありません。