Substance Designerのチュートリアルでお勉強その1 ベースマテリアルの作成パート2中編


Substance Designer Getting Started: 01 - Creating a base material part Two

Getting Started 01: Creating a base material part Two
入門01 ベースマテリアルの作成パート2

前編はこちら

www.hildsoft.com

錆の付き方を変更する

前回までで錆のベースカラーは作成しましたが、このままではまだ錆の色がただ乗っているだけで現実味が足りませんので、 金属の凹凸を考慮した錆を作成します。


ノーマルマップの情報を使用する

f:id:hildsoft:20170810035521p:plain

ノーマルマップデータを作成しているノードを左に移動し、ノーマルノードを選択&2Dビューに表示します。


f:id:hildsoft:20170810040405p:plain

一旦アルファ透過を無効にしておきます。
(これは2Dビューの表示上だけで、実際のデータが変わるわけではありません。)


f:id:hildsoft:20170810040742p:plain

Curvature Smoothノードを追加します。


f:id:hildsoft:20170810041205p:plain

金属の凹凸を表現しているノーマルマップからCurvature Smoothノードに接続し、曲率を基にしたマスクを作成します。

このマスクで錆を金属の凹凸を考慮したより良い表現にしていきます。


マスクの調整

f:id:hildsoft:20170810041943p:plain

2Dビューを拡大すると分かるのですが、このままでは凹凸の差が少なくて使いづらい状態です。


f:id:hildsoft:20170810042244p:plain

そこで、差を調整するためにレベルノードを追加します。


f:id:hildsoft:20170810043801p:plain

凹凸の境目となる縁の形状をマスク化するために、レベルノードを調整していきます。


f:id:hildsoft:20170810043349p:plain

白と黒を入れ替えるために、レベルノードのヒストグラム下にあるバーを反転します。


f:id:hildsoft:20170810044207p:plain

凹凸の根元が白くなるようにヒストグラムの上のバーを調整します。

錆を表示させるところ(窪んでいるところが錆やすい)を白く、錆びにくい(一番出っ張っている)ところを黒にしたマスクができました。


マスクの合成

f:id:hildsoft:20170810045820p:plain

前回作った錆のマスクと、先ほど作った凹凸のマスクをブレンドします。

この時のブレンドモードはAdd(Linear Double)(加算(覆い焼き))に変更します。


f:id:hildsoft:20170810050757p:plain

このままでは少しマスクが強すぎると、BlendノードのOpacity(不透明度)を調整しますが、影響を受けるのは先ほど作成した凹凸のマスクだけで、 前回作成した錆のマスクは影響を受けません。

これでは都合が悪いので、少しノードを組み替えます。


f:id:hildsoft:20170810051957p:plain

解決策として、Histogram Scanノードを最後に来るようにします。


f:id:hildsoft:20170810051843p:plain

というのも、前回やったようにHistogram ScanノードはPosition(位置)とContrastで、マスクの影響度合いと強さを調整できるからです。


f:id:hildsoft:20170810052641p:plain

これで、凹凸を考慮したうえで、錆の影響範囲と強さを一度に調整できるようになりました。


Metalマップの修正

f:id:hildsoft:20170810053427p:plain

先ほど作成したマスクの白い部分は錆を表示させる位置です。


f:id:hildsoft:20170810053641p:plain

現在はMetalマップが白になっているので、錆の部分も含めて金属の質感に設定されてしまっています。


f:id:hildsoft:20170810054942p:plain

マスクの白い部分が錆で、Metalマップの白い部分が金属を意味するので、マスクの白と黒を入れ替えるだけで良いです。

レベルノードで白黒反転する方法を使いましたが、単純に白黒を反転させる場合にInvert Grayscaleノードがあります。


f:id:hildsoft:20170810055539p:plain

Invert Grayscaleノードを確認すると、マスクと白黒が反転しています。

これで正しいMetalマップが得られました。


f:id:hildsoft:20170810055919p:plain

白黒反転したマスクをそのままMetalマップに接続するだけで、正しいシェーディング結果が得られます。


白黒反転でレベルを使わなかった理由

f:id:hildsoft:20170810060642p:plain

レベルノードでも白黒反転はできますが、レベルノードの場合は同時にコントラスト調整も行ってしまうため、白黒反転だけを行いたいときには無駄な処理になってしまいます。

処理を最適化するためにも、無駄な処理を行わないInvert Grayscaleを使ったのです。


そしてもう一つ、このSubstanceを他のアーティストと共有する場合に問題があります。

「白黒を反転させる」という目的でレベルノードを使った場合、このレベルノードが単に白黒反転させているだけだと理解しづらい点です。


f:id:hildsoft:20170810061801p:plain

しかし、Levelノードが二つの処理をできるがゆえに何を意図しているのか読みづらくなることもあります。

そのような時は図のように処理を二つに分けることもできます。

ですが、これは少し最適化から外れる行為でもあります。

プログラムと同じく、グラフの見やすさと処理の最適化のどちらを取るべきかはケースバイケースということですね。


後編はこちら

www.hildsoft.com