Created on | Updated on

Substance Painter用カスタムダイナミックストロークの作成

原文 https://academy.substance3d.com/courses/Creating-a-custom-Dynamic-Stroke-for-Substance-Painter

※サンプルデータは上記リンクより入手可能

このガイドでは、Substance Painterでダイナミックストロークとして使用できるカスタムグラフを作成する方法について説明します。

mceclip0.png

(このチュートリアルでは、Substance Painter 2019.1の機能を使用します)

ダイナミックストローク?

このガイドでは、カスタムSubstanceグラフを使用して新しいダイナミックストロークブラシを作成する方法を説明します。 ダイナミックストロークは、通常のブラシストロークですが、特定のブラシストローク内のスタンプごとに変更できるSubstanceファイルを使用しています。

ダイナミックストロークとその機能について詳しく知りたい場合は、Substance Painterのドキュメントをご覧ください。

こちらがゴールになります。

c3f0f619-8a6a-4b24-b86f-e66b76831ed2.gif

SUBSTANCE DESIGNERでの新しいパッケージの作成

Substance Designerで新しい空のグラフを作成することから始めましょう:

mceclip1.png

最終的には非常にシンプルなエフェクトを作成するので、完全なPBRマテリアルの場合のようにすべてのOutputノードを作成する必要はありません。 代わりに、1つの新しいOutputノードを追加するだけです:

mceclip2.png

勾配の作成

グラデーションを作成するには、少なくとも2色をブレンドする必要があります。 デフォルトでは、Uniform Colorノードの解像度は「Relative to Parent」に設定されていますが、これは少し過剰です。 良好なパフォーマンスを確保するには、「Absolute」に切り替えて、代わりに16x16ピクセルの解像度を使用するのが最適です。

mceclip3.png

mceclip4.png

ここで、色をブレンドするために、BlendノードとGradientノードをマスク入力として使用します。 Uniform Colorノードはカスタム解像度に設定されているため、BlendノードとGradient入力についても同じようにする必要があります。 これが、両方が256x16ピクセルに設定されている理由です(上記の方法と同じです)。

mceclip5.png

(注:左から右への勾配を得るために、Gradient Linear 1ノードの設定「Rotation」は「90°」に設定されています)

(gradient map ノードを使用する代わりに)この方法でグラデーションを作成する利点は、後でSubstanec Painterで微調整できるように、パラメータとして色を公開できることです。

STAMP INDEX パラメーター

さらに先に進む前に、Substance Painterによって後で制御されるDynamic Strokeパラメーターを追加する必要があります。 必要なのは、次の構成でグラフに新しい入力を追加することです。

mceclip6.png

Substance Painterでは、スタンプインデックスはブラシストローク内の個々のスタンプの識別番号です。 これにより、ブラシストロークのどこにいるかを追跡し、値が増加するにつれて効果を変化させることができます。

Substance Painterはこのパラメータ自体を制御するため、手動で調整する必要はありません。

ピクセルプロセッサで色を分離する

グラデーションがあり、そこから1色を抽出する必要があります(そうしないと、ブラシストロークの各スタンプに対して完全なグラデーションをペイントするため)。 そのためには、ピクセルプロセッサノードを使用する必要があります(16x16ピクセルの絶対解像度でも設定されます)。

mceclip7.png

次に、デフォルト出力としてfloat4ベクトルを持つピクセルプロセッサ関数を編集しましょう。 次のものに置き換えます:

mceclip8.png

Samplerノードは、入力画像(グラデーション)のピクセルを読み取るために使用されます。 画像座標を供給する代わりに、それらを手動で作成します。 これが、ピクセル位置の2つのコンポーネントを作成するために2つのFloatードとVector Float 2ノードがある理由です。 グラデーションには1つの軸に関連する情報しかないため、2番目のフロートノードは常に0に設定できます。

「ダイナミック」になる場所

現状では、Pixel processorはまだ動的ではありません。 最初のFloatノード(0.5)はプレースホルダーであり、これを変更します。 必要なのは、スタンプインデックス値を統合して、グラデーションを左から右に読み取って、グラデーション内を移動できるようにすることです。

次のノードのネットワークを構築しましょう。

mceclip9.png

Floatノード0.5は、除算操作に置き換えられました。 スタンプインデックス値を取得し、16で除算します。スタンプインデックス入力プロパティで以前に定義した最大値です。 アイデアは、Samplerノードがピクセル座標として予期する値である0〜1の値を結果として取得することです。

Substance Painterでのテスト

Substanceグラフとパッケージをクックして、「procedural」としてSubstance Painterにインポートしましょう。

mceclip10.png

mceclip11.png

ダイナミックストローク機能を有効にするには、リソースを現在のペイントツールのBaseColorまたはDiffuseスロットにドラッグアンドドロップするだけです(プロジェクトを開いておく必要があります)。

mceclip12.png

メッシュにペイントしようとすると、次のような結果が得られます。

mceclip13.png

ただし、Stamp Cycle Count パラメータを変更すると、エフェクトが壊れます。

 mceclip0.png

動作しない理由は、Stamp Cycle Countパラメーターを介して5つのSubstanceバリエーションのみを計算するように指示しています。しかし、グラフのピクセルプロセッサ内では、16個のスタンプに基づいて計算を行い、ステップを作成しました。したがって、ダイナミックストロークはグラデーションの描画を開始しますが、すぐにカットされます。

STAMP CYCLE COUNTの利点を活用する

幸いなことに、Stamp Cycle Count番号をSubstanceグラフに伝える方法があります。 デフォルトでは、Substance Painterは、Substanceグラフで定義されていない限り、独自に作成します。 グラフにパラメータを追加します。

mceclip0.png

Pixel Processor内で、次のように機能を調整します。

mceclip1.png

新しいGet Integerノードは、作成したStamp Cycle Countパラメーターを取得します。

Substanceパッケージを再作成した後に新しくテストを行うと、次の結果が得られます(Stamp Cycle Countパラメーターを変更する場合)。mceclip2.png

(上から下、Stamp Cycle Countの数:16、4、32)

カラーサイクルを適切に作成する

最後に編集する部分は、グラデーションを作成して、色が視覚的に壊れることなく互いに追従するようにする方法です。 そのためにはGradient Linear 1をGradient Linear 3に切り替えるだけです。

mceclip3.png

Substance Painterで新しいバージョンを使用すると、次の結果が得られます。

c3f0f619-8a6a-4b24-b86f-e66b76831ed2.gif

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

サポート問い合わせ