3DCGのお仕事に戻ってきたので、Substance Painterを使いたい!
でも、あまりよくわからないから、とっつきにくいなと思っていました。
実は、ちゃんと理解すればSubstance Painterはとても使いやすいツールだという事が分かってきたので、
分かってきたことを少しづつまとめていこうと思います。
目次
Substance Painterとは何か?
UV展開されているFBXモデルにテクスチャを付けるソフトになります。
例えば上のようにUV展開されているモデルがあるとします。
それに金属テクスチャをリアリスティックにのせたい!みたいなときに使います。
Substance Painter側で用意されているマテリアルが沢山あります。
例えば金属のメッキが剥げているテクスチャを貼ったり、といったことが簡単にできるソフトです。
それでは、どのようにテクスチャをペイントしていくのか見ていきましょう。
Substance Painterでのモデルの取り込み方
まずはMayaでもHoudiniでも3dsmaxでもなんでもいいので、UV展開されているFBXモデルを準備します。
これはHoudiniのサンプルプリミティブですね。
これを例にとって実際に、Substance Painterに取り込んでいきましょう。
新規ファイル作成:FBXモデルの取り込み
ファイル>新規プロジェクトを選びます。
適当なテンプレートを選び(今回はノーマル等の思いテクスチャを使いたくないので、PBRMetalic Roughnessにしてあります)Unityにもっていくことを考えます。
選択ボタンで、FBXモデルを選択し、ドキュメントの解像度はケースバイケースですが2048あれば十分でしょう。
法線マップはUnityの場合OpenGLです。
UVタイル設定は上のようにチェックを入れておきます。
複数のUVを使用している場合は今回は考慮しません。
以上で、OKを押します。
モデルが、Substance Painter内に取り込まれました。
この時点で綺麗にモデルが見えない場合、法線がおかしい可能性があるのでWeighted Normal等を見直しましょう。
それからUV展開がきちんとできてない可能性も疑いましょう。
メッシュマップをベイク
次に、メッシュマップをベイクします。
テクスチャを載せるための下準備といったところでしょうか。
メッシュのどの部分が凹んでいて、、、というようなことを計算で求めておくことで、その後のテクスチャが正しく表示されるようにします。
テクスチャセットの設定>メッシュマップをベイクボタンで、設定をします。
共通パラメーターは上記のように設定します。
アンチエイリアスはオクルージョンなどを綺麗に出したい場合、数値高めに設定しても良いでしょう。
8x8にすると結構時間がかかります。
Ambient Occlusionのセカンダリーレイは大きくすればするほど時間がかかりますが綺麗な結果が得られます。
オクルージョンとは平たく言ってしまえば、遮蔽されている場所に影を付ける効果です。
テクスチャをベイクボタンを押します。
テクスチャが焼けました。
影になっている所が黒くなっているのが分かります。
これでマテリアルを付ける下準備が整いました。
Substance Painterでのマテリアルのつけ方
初めてSubstance Painterでマテリアルを付けるなら必見の動画があります。英語ですが上の二つのシリーズは外せないと思っています。
とりあえず、動画で見たい時は上の2つが分かり易いのでご参考まで。
スマートマテリアルを乗せる
Substance Painterにはデフォルトで沢山のスマートマテリアルが準備されています。
スマートマテリアルとは、予め色々なレイヤーの情報が詰まった出来合いのマテリアルの事です。
自分で作ることもできますが、近いものを選んで、それを編集していった方が早いかもしれません。
例えばブロンズアーマーというスマートマテリアルをしてドラッグアンドドロップすると、上のようになります。
既にそれっぽいですよね。レイヤーフォルダがレイヤーに追加されているので、開いて見ると、様々なレイヤが追加されていてそこに設定がある事が分かります。
その設定によって、汚れのレベルや、金属のハゲ具合等がいじれるようになっているので、そのパラメーターをいじって、お好みの状態に持っていくことができます。
恐らく、これが一番基本的なマテリアルの乗せ方だと思います。
これは一つのマテリアルだけを使用する分には良いですが、オブジェクトによっては複数マテリアルを使い分けたい時もあると思います。
それでは、次に、複数のマテリアルに塗り分けたい時はどうするかを考えます。
メッシュにマスクをしてマテリアルを非表示にする
例えば、ひれのマテリアルを違うマテリアルにしたいというときには、いくつかのオプションでそれを達成できます。
まずはレイヤーのブロンズアーマーにアルファマスクを掛けます、白のマスクだと全部不透明で、黒のマスクだと全部透明です。
どちらがいいかは塗る面積の割合で決めましょう。
マスクを追加したら、全部ブロンズアーマー(白のマスク)か、ブロンズアーマー非表示(黒のマスク)になると思います。
部分的にいじりたいので、アルファで抜く場所を決める必要があります。
そんな時に便利なのが、ポリゴン塗りつぶしツールです。
塗りつぶしモードに、三角形ポリゴン、ポリゴン、メッシュ単位、UVアイランドの4つがあります。
メッシュの別れ方に応じて効率の良いものを使うと良いと思います。
カラーは黒が透明で、白が不透明です。Xボタンを押すとひっくり返ります。
メッシュで別れていない分割の仕方をしたい時もあると思います。
そんな時は塗りつぶしを加えます。そして、塗りつぶしのGrayscaleにアルファのテクスチャをドラッグアンドドロップします。
今回はこんな形のマークを付けたいと思います。
レイヤーの種類をSubtractにすることで白い部分に透明な三角形の穴をあける事にします。
無事模様がみえるようになりました。このやり方を駆使すればポリゴンの形に無関係でもアルファを抜くことができます。
複数マテリアルに塗り分ける
マテリアルを複数ドラッグアンドドロップすると、フォトショっプのようにレイヤーが詰みあがっていきます。
もちろん、下のレイヤーは上のレイヤーによって上書きされていくのですが、先ほどの非表示を使う事で、塗り分けが可能になります。
これを応用して、いくつもの複数マテリアルを管理することが可能になります。
例えばこの場合であれば、ブロンズアーマーマテリアルがマスクによって非表示になっている部分は下地の青が見えているという状況です。
画像を貼る
部分的に何か画像を貼り込みたい時もあると思います。
そんな時には投影法を使います。
好きなテクスチャをマテリアルテクスチャ欄にドラッグアンドドロップしておきます。
そして、そのテクスチャを画面上に置くと、メッシュの法線方向に沿ってテクスチャが張られます。
もちろん、回転、拡大縮小、移動等色々できます。投影法によって投影の仕方も変えられます。
マテリアルの塗り分けと、テクスチャの張り込みだけでも相当色々な表現が可能だと思います。
Substance Painterにおけるファイル出力
ファイルを出力する時には、Unityのリソースを最小限にするための独自の設定を使います。
まずは+ボタンで新しい設定を作成し、RGBとR+G+Bを追加します。
RGBにはBaseColorを。RにはMetalic、GにはGlossiness、BにはAmbientOcclusionをドラッグアンドドロップします。
これで、各チャンネルに必要な情報の入った2枚のテクスチャに全ての情報が乗るようになります。
Unity側ではAmplifyShaderを使って、RGBを分解してそれぞれのテクスチャを使用する事で、2枚のTARGAだけで低負荷のリソースでマテリアルの表現ができるようになります。
おわりに
Substance Painterの使い方の基本を今日は備忘録として残しておきます。
マテリアルを自分で作ったり、ペイントしたりと、紹介しきれていない機能もありますが、
これからもっとたくさん経験を積んで、新たにご紹介できるよう日々勉強を重ねて行きたいと思います。
今後ともどうぞよろしくお願いします。それでは、また!