1. サイトトップ
  2. ブログ
  3. アート
  4. Substance 3D Designerだけでベイク~テクスチャリングまでやってみる

Substance 3D Designerだけでベイク~テクスチャリングまでやってみる

こんにちは!

アートデザイン課の村上です。

春らしい日も増えてきましたが皆様いかがお過ごしでしょうか?

この時期は花粉も困りものですが、なんといっても温度調整が難しくて着る服に迷いますよね。

着替え不要の便利な一着があればいいのに、なんて思わずにはいられません。

そこで今回は服はもちろんのこと、ソフトの切り替えも面倒だということで、ベイクからテクスチャリングまでをSubstance 3D Designer 1本で行う手順をご紹介しようと思います。

環境

Substance 3D Designer Ver.13.1.1

なお、本記事ではSubstance 3D Designerの事をSDと表記し、Substance 3D PainterについてはSPと表記いたします。

準備するもの

使用する素材は以下の2点です。

 ①ローポリゴンモデル

 ②頂点カラー設定済みのハイポリゴンモデル

SDでテクスチャリングするメリット

  • SDはシーンファイルのサイズが小さい

SPは便利で強力なツールですが、ファイルサイズが肥大化しがちなのが難点です。

ちょっとしたものを作っただけでこんなに大きいの!?と驚くことは少なくありません。

ゲーム開発が進むにつれ、シーンファイルなどは数が膨大になりがちですが、そんな時に保存領域を圧迫しない為にも1つ1つのデータサイズはなるべく小さくしておきたいところです。

その点、SDのシーンファイルはSPに比べて小さくすみます。

ではなぜファイルサイズの違いが生まれるのでしょうか。

実はSPのシーンファイルには非破壊のワークフローを実現するために沢山のデータが含まれています。

具体的には次の物が含まれます。

  • ソースメッシュ
  • ベイクしたメッシュマップ
  • マテリアル
  • レイヤー、プリセット、ブラシストロークで使用されるビットマップなどのリソース

その点、Substance 3D Designerはノードの情報だけが含まれているので小さい容量で済むというわけです。

  • ノードベースなので誰がやっても同じ結果を得ることができる

複数人で1つの物を作る際に発生しがちな問題として、使用者の熟練度によって成果物に差が出ることが挙げられます。

SPやPhotoshopなどのソフトはブラシを使ってテクスチャを描く場面があるので、どうしても均一なクオリティを担保することが難しい場合があります。

その点SDでは同じノードを繋いで同じパラメーターに設定すれば、熟練者と同じ結果が得られますし、作成したマテリアルはプロジェクトを跨いで使いまわすことができるので、作れば作るだけ会社のリソースとして積み上げていくことができます。

ベイク機能を使いIDマップを作成

それでは早速プロジェクト作成からIDマップ作成までをやっていきましょう。

今回はMetallic Roughnessのテンプレートを使用し、blog_graphという名前でプロジェクトを作成します。

次にベイクに使用するローポリゴンモデルとハイポリゴンモデルをリンクします。

エクスプローラーからファイルをPackageにドラッグアンドドロップするとResourceというフォルダが自動で生成されます。

これでモデルのリンクができました。

 

続いてベイクの設定手順を記します。

本記事では枠で囲っている部分を使用します。

まずはローポリゴンモデルを右クリックしてコンテキストメニューを開き、Bake model Informationを選択します。

Add high definition modelのプルダウンからFrom Resourceをクリックし、先ほどリンクしたハイポリゴンモデルを選択します。

次に書き出すビットマップの指定を行います。

ウィンドウ左下にあるBaker render listにあるAdd bakerのプルダウンからColor Map from Meshを選択します。

項目がベイクリストに追加されると、リストの右側にあるBaker Parametersの内容が変化するのでColor Sourceという項目をMaterial ColorからVertex Colorに変更します。

これでベイクを実行すればVertex ColorをIDマップとして書き出すことができるようになりました。

ついでに塗足しに関して画像のように設定しておきます。

※Apply diffusionのチェックがONのままだと、頂点カラーを延長してUVの隙間を埋めてしまい、これから作成するマスクの視認性が悪くなるため今回はOFFにしています。

以上でベイク設定が完了したのでベイクを実行します。

正しく書き出しが出来ていれば、ResourceにIDマップが追加されているはずです。

これでIDマップを作成することができました。

IDマップの色ごとに複数のマテリアルを割り当てる

  • マテリアルを合成するには

今回はMulti-Material Blendというノードを使います。

このノードはベースとなるマテリアルの上に、複数のマテリアルを重ねて合成してくれるノードです。

マテリアルを重ねる範囲を指定するにはマスクが必要なので、そのマスクをIDマップから作成します。

本記事で使用するIDマップは3色含まれているので、3種類のマスクが作成でき、最大3つのマテリアルを追加で合成できます。

分かりやすくしたのが下の画像になります。

  • IDマップとMulti-Material Blendを紐づけマスクを作成する

それではノードの設定からマスク作成までを行っていきます。

まずMulti-Material Blendノードを呼び出します。

入力ピンが多いので混乱するかもしれませんが、整理すると以下のように分けられます。

  • 青色の枠→合成するマテリアル
  • 黄色の枠→ベースになるマテリアル
  • 緑色の枠→読み取るIDマップ

このままでは1つのマテリアルしか追加できないので、プロパティを表示しMaterialsの項目を2→3に変更します。

次にChannelsの項目で使用するものだけをTrueに設定し、出力するビットマップを指定します。

今回は下記のように設定しました。

これでノードの設定は完了です。

次にIDマップを画像素材としてグラフ内に読み込み、出力ピンをMulti-Material Blendの一番下にあるIDマップの入力ピンに接続します。

再びMulti-Material Blendのプロパティを開き、下の方にあるMaterial1、Material2を確認します。

デフォルトで緑色が入力されているので、スポイドを使ってIDマップから任意の色をピックします。

今回は黄色をMaterial2のマスクに使用し、赤色をマテリアル3のマスクに使用することにしました。

これでIDマップからマスクを作成することができました。

  • Multi-Material Blendノードを使ってマテリアルを合成する

最後に3つのマテリアルを合成しテクスチャリングを行います。

任意のマテリアル3種をMulti-Material Blendノードにそれぞれ接続します。

マテリアルのパラメータを調整して出力ピンをOutputノードに繋げばテクスチャリングは完成です!

SPで作成したものと見た目を比べてみましょう。

レンダリングの関係でモニタ上の見た目は全く同じではないものの、それほど遜色がないと思います。

同じものが出来るならシーンファイルの容量は軽い方が良いですよね。

それぞれのシーンファイルの容量を比較してみる

冒頭のメリット紹介でSDで作ればシーンファイルが小さい容量で済むというお話をさせていただきました。

では具体的にどれくらい差があるのか、上の画像のシーンファイル同士を比べてみようと思います。

なんと約250分の1のサイズで同じものが出来ました!

簡単なものであればSDでテクスチャリングした方が、はるかに軽い容量で済むことが分かりました。

 

  • SPのシーンファイルを小さくするテクニック

ついでに小技紹介です。

SPのシーンファイルですが、実は表示する解像度を下げて保存することでファイルサイズを節約することができます。

このサイズは後から変更できるので、最小の128にしておくと最小サイズで済みます。

下の画像は同じ内容のデータを解像度128~4096までの各サイズで保存したものになります。

このテクニックを使用しても、SPのシーンファイルは巨大であることが分かりますね。

最後に

いかがだったでしょうか。

今回はマテリアルを割り当てるというアプローチのみを抜粋してみました。

ここから発展させて、様々なノイズテクスチャを追加で合成すれば、更にしっかりとしたテクスチャリングをすることができます。

SPに比べて直感的ではないので習得が難しいと言われるSDですが、まずはプリセットを使った遊び感覚でテクスチャリングをしてみてはいかがでしょうか!

最後までご覧頂きありがとうございました!

参考サイト

BORN DIGITALサポート

Substance Designer Tutorial @ 3DCG Meetup No13


【免責事項】

本サイトでの情報を利用することによる損害等に対し、
株式会社ロジカルビートは一切の責任を負いません。