Substance Designerのチュートリアルでお勉強その3 マテリアルブレンディング パート1前編


Substance Designer Getting Started: 03 - Material Blending part One

Getting Started: 03 - Material Blending part One
入門03 マテリアルブレンディング パート1

前回のパートはこちら

Substance Designerのチュートリアルでお勉強その2 プロシージャルマテリアルの作成ワークフロー - hildsoft開発日誌

ワークフローのセオリーを追加

マテリアルブレンディング

f:id:hildsoft:20170927033942p:plain

チャプター2 で説明したセオリーとなるワークフローを適用していきます。

チャプター1で終了したところから作成していきます。

金属部分と錆の部分、両方とも一つのグラフに含んでいる状態です。

このチャプター3パート1では最初にマテリアルブレンディングから説明していきます。

チャプター2で説明した手法1のワークフローで、 このようなグラフの作り、2つのベーシックマテリアルに分ける方法です。

もしこのチャプターから見始める場合は、このYoutubeビデオの説明に記載されているリンク先のSubstance shareからプロジェクトファイルをダウンロードしてください。

また、プロジェクトファイルには他のチャプターの分まで含めて更新しているので、全てのチャプターごとのプロジェクトが入っています。

Substance Share « The Free Exchange Platform » | Rusty Metal Material

(と動画では説明されていましたが、DLしてみたところ、完成したプロジェクトファイルしか見つかりませんでした。)


金属マテリアルを作成

新規ファイル作成

チャプター1で作成したグラフからコピーして作成するので、空のファイルを作成します。


f:id:hildsoft:20170928081246p:plain

メニューからFile(ファイル)>New Substance...(新規 Substasnce...)

を実行してNew Substance Graphダイアログを開きます。


f:id:hildsoft:20170928081704p:plain

Graph TemplateにEmptyを選択

Graph Nameをmetal_floorを入力

Size ModeにRelative To Parentを選択

設定後、OKをクリックします。


f:id:hildsoft:20170928082317p:plain

ダイアログを閉じただけではファイルはまだ保存されていないので、最初に保存を行います。


既存のノードをコピー

f:id:hildsoft:20170928084311p:plain

チャプター1で作成したRusty_Metalからノードを全て選択してコピー(Ctrl+C)します。


f:id:hildsoft:20170928084551p:plain

先ほど作成したmetal_floorのグラフに貼り付け(Ctrl+V)ます。


f:id:hildsoft:20170928085757p:plain

何らかの理由でRusty_Metalノードもコピーされるので、これは消しておきます。


f:id:hildsoft:20170928091012p:plain

どれか一つのノードをダブルクリックすると、その他のノードも直ちに自動的に再計算されます。


f:id:hildsoft:20170928091311p:plain

グラフ上を右クリックしてメニューを表示します。

View outputs in 3D View(出力を3Dビューで表示)をクリックして、3Dビューの表示を更新します。


f:id:hildsoft:20170928092004p:plain

すぐに気づくと思いますが、錆の部分が消えています。

これは、チャプター1で作成したときに、錆の量を調整するパラメータ(Position)を外部から受け取るように設定しているためです。


f:id:hildsoft:20170928092325p:plain

今回新しくグラフを作成してノードをコピーしただけなので、グラフの設定値であるInput Parametersに定義を追加していないのが原因です。

ですが、金属部分のみのベーシックマテリアルを作成するのが目的であるため、このノードは削除するので問題ありません。


不要なノードの削除と、調整

f:id:hildsoft:20170928093556p:plain

カラーノードを単色にします。

金属用のカラーノードを出力ノードに直接接続します。

錆のマテリアルで使用していたノードと、2つのマテリアルをブレンドしていたノードを削除します。


f:id:hildsoft:20170928094034p:plain

ラフネスノードから錆マテリアルのノードを除去します。


f:id:hildsoft:20170929015651p:plain

錆のある所とそうでないところのラフネスの値を錆を表示するかの所マスクに合わせて調整していましたが、 先ほどそのノードを消したので、固定値で適度な値に調整します。(今回はおよそ0.5くらい)


f:id:hildsoft:20170929015907p:plain

メタリックノードから、不要なInverseノードを削除します。


f:id:hildsoft:20170929020134p:plain

純粋な金属なので、Uniform Color(均一カラー)ノードを作成します。


f:id:hildsoft:20170929020621p:plain

多くの金属の場合、Metallicの値は1(白)なので、白一色にします。


f:id:hildsoft:20170929021212p:plain

ここで一つ最適化を行います。

単一カラーのテクスチャサイズは初期状態ではグラフの解像度に依存して256x256になっていますが、このままでは2kの環境で使用するときは2kx2kになってしまい、無駄にリソースを消費してしまいます。

これをAbsolute(絶対)にして16x16にします。このサイズはSubstanceエンジンでGPU上の処理を行う上で最小となるサイズだからです。


f:id:hildsoft:20170929021856p:plain

しかし、連動してMetallicのアウトプットサイズも16x16に変更されてしまいます。

そして、この項目はサイズを変更することができません。

このままでは潜在的なバグになってしまうかもしれません。


f:id:hildsoft:20170929022445p:plain

Uniform Color(均一カラー)ノードとMetallicノードを繋いでいる線を選択したまま、レベルノードを追加して間に挿入します。

レベルノードはサイズが変更できるので、設定をParent(親に相対)にすることで、グラフの設定値を使うことができます。

これはUniform Color(均一カラー)からのサイズ変更でよく使う手法です。


f:id:hildsoft:20170929031407p:plain

ハイトマップを修正します。

グレースケールからノーマルマップを作成し、さらにそれをNormal to Heightノードで高さ情報に変換していました。

これをより計算量の少ない方法に変更します。


f:id:hildsoft:20170929032200p:plain

ノーマルマップを作成していたデータを、新しく作成したレベルノードに接続します。

今まで、このデータで十分なノーマルデータを作成していました。


f:id:hildsoft:20170929033718p:plain

このマップをハイトマップとして扱う際、白い部分は高さを表現できますが、黒い部分はベースとなる高さであるため、高さが無いことになります。 (黒が一番低い面になるので、これ以上凹ませることができない)


f:id:hildsoft:20170929034525p:plain

黒い部分を高さの中間くらいにするため、黒をグレーに変換します。


f:id:hildsoft:20170929035122p:plain

スライダーを手動で合わせるのは大変なので、Valuesをクリックして数値入力モードに切り替えます。

Level Out Low(出力ローライトレベル)を0.5に設定します。

これで新しいハイトマップができました。

以前のハイトマップより少し綺麗な状態になっています。


f:id:hildsoft:20170929035928p:plain

今まで使っていたハイトマップの接続先を切り替えます。


f:id:hildsoft:20170929040203p:plain

データが変わったので、Ambient OcclusionノードのSpreadingの値も調整しておきます。


f:id:hildsoft:20170929040440p:plain

Normal to Heightノードは不要なので削除します。

これでシンプルで再利用可能なベーシックマテリアルができました。


パート1中編はこちら

www.hildsoft.com