【Substance Designer】メッシュベイク情報(additional maps / mesh maps)を使ったマテリアルを作成する

Substance Designerでメッシュベイク情報(additional maps / mesh maps)を使ったマテリアルを作成する方法をまとめました。

Substance Designer2019.2.3
Substance Painter 2019.2.3

メッシュベイク情報?

Substance DesignerやSubstance Painterでは、メッシュの情報をからテクスチャを作る(ベイクする)ことでそれらの情報をマテリアルに反映させることができます。
例えば、「ワールド空間の法線」をベイクして法線が上方向を向いている部分だけ白く塗ることで雪を表現できたりします。

ベイクできる情報にうち主要なものは以下の通りです。

  • Ambient Occulusion
  • Curvature
  • Thickness
  • World Space Normal
  • Normal
  • Id(頂点カラーとかを焼き込める汎用的なもの)
  • Position

本記事ではこのメッシュ情報を使ったマテリアルの作り方を解説します。

メッシュのリソースを作成する

さてさっそくベイクしていきたいところですが、メッシュ情報をベイクするにはもちろん元となるメッシュが必要です。
もちろん3Dモデルをリソースとして読み込んでもいいですが、お手軽にSubstance Designerの組み込みモデルを使うこともできます。
そこでこの節では、Substance Designerの組み込みリソースをベイク用のメッシュとして使うための下準備を行います。
3Dモデルをリソースとして読み込んでいる場合はこの節は飛ばしていただいて結構です。

さて組み込みモデルをリソース化するために、まずは3DViewで使用したいモデルを選択します。

f:id:halya_11:20191208193312p:plain

今回はMat Ballにしました。
これをリソース化するには3DViewからシーン > Create 3D Resource From Current Scene...を選択します。

f:id:halya_11:20191208192407p:plain

リソース名とロケーションを適当に選択してOKします。

f:id:halya_11:20191208192542p:plain

エクスプローラに先ほど指定した名前のリソースが追加されれば完了です。

f:id:halya_11:20191208192718p:plain

メッシュ情報をベイクする

それでは次にこのメッシュの情報をベイクします。
エクスプローラーのリソースを右クリックして「モデル情報をベイクします」をクリックします。

f:id:halya_11:20191208193448p:plain

すると次のようなウィンドウが開かれます。

f:id:halya_11:20191208193631p:plain

次にベイクしたいマップを右下のAdd Bakerドロップダウンから選択します。

f:id:halya_11:20191208193713p:plain

今回はアンビエントオクルージョンとワールド空間の法線をベイクすることにしました。

f:id:halya_11:20191208193823p:plain

ここで、アンビエントオクルージョンをベイクするためにはハイポリのメッシュが必要になるので、
Setup High Definition Meshes欄にエラーが表示されています。
今回はUse low as high definitionにチェックを入れることでハイポリを使わない設定にします。

f:id:halya_11:20191208193912p:plain

Start Renderをクリックするとベイクが開始されます。
終了するとエクスプローラに二つのマップが生成されます。

f:id:halya_11:20191208194140p:plain

これでベイクは完了です。

ベイクテクスチャをインプットするノードを作成する

次にベイクしたテクスチャをインプットとして扱うためのノードを作成します。

ワールド空間の法線をインプットとして扱うためには、Input Colorノードを作成します。
そしてこのノードのプロパティのATTRIBUTEとINTEGRATION ATTRIBUTEを以下のように設定します。

f:id:halya_11:20191208194704p:plain

...というのがちゃんとした方法ではありますが、いちいち設定するのも面倒なのでもう少し簡単な方法を取ります。
まずテンプレートをPainter Generator w/ additional mapsに設定した新規Substanceを作成します。

f:id:halya_11:20191208194847p:plain

するとデフォルトでいろんなインプットノードが作成されたグラフが出来上がります。

f:id:halya_11:20191208195019p:plain

これらのインプットノードはすでにプロパティが設定済みなので、これを先ほどのグラフにコピペして使えばOKです。
Ambient OcculusionとWorld Space Normalをコピペしました。

f:id:halya_11:20191208195232p:plain

後はこれらのノードにベイクしたテクスチャをドラッグすることでグラフ上で使えるようにします。

f:id:halya_11:20191208195355p:plain

ベイクテクスチャを使ったグラフを組む

さてそれでは実際にこれらのノードを使っていきます。

まずDustノードを作成し、そのインプットにアンビエントオクルージョンとワールド空間法線を接続します。
Dustノードはアンビエントオクルージョンとワールド空間の法線を使って、埃がたまりやすい部分を抽出できるノードです。
遮蔽された部分や上を向いている部分には埃がたまりやすいので、それを計算してくれます。

f:id:halya_11:20191208195811p:plain

今回はわかりやすく、Dustで抽出された部分に赤色を付けてみます。

f:id:halya_11:20191208200142p:plain

埃がたまりやすい部分が赤く表示されるマテリアルができました。

f:id:halya_11:20191208200222p:plain

Substance Painterで使う

最後にこのマテリアルをSubstance Painterで使用してみます。
マテリアルのエクスポートとSubstance Painterへのインポートは以下の記事にまとめていますのでこちらを参照してください。

light11.hatenadiary.com

Substance Painterにマテリアルがインポートできたら、つぎにSubstance Painter側でMesh mapsをベイクします。
これについては以下の記事にまとめていますのでこちらを参照してください。

light11.hatenadiary.com

Mesh mapsがベイク出来たらすべての準備が完了したので、あとはマテリアルを使ってペイントするだけです。
試しにサンプルモデルを塗りつぶすと以下のようになります。

f:id:halya_11:20191208200822p:plain

モデルの情報に基づいて、埃のたまりそうな部分が赤くなっていることを確認できました。

関連

light11.hatenadiary.com

light11.hatenadiary.com