Substance Painter 2018の基礎レベルをざっくりと(ワークフロー)

f:id:hildsoft:20180629151832j:plain

前の記事

www.hildsoft.com


Substance Painterのワークフロー

作業工程

Substance Painterでの作業は大ざっぱに分類すると、次の3つに分けられます。

  • 初期設定
  • ペイント
  • テクスチャ出力

実際の操作方法については別途記事作成する予定なので、この記事では大まかな流れだけを説明していきます。


初期設定

モデルを用意

DCCツールでマテリアルの設定とUV展開を終えたモデルを用意します。

Substance Painterはテクスチャへの描き込みをマテリアルごとに行います。

最終的に出力したいテクスチャ1枚に対してマテリアル1個をモデルに割り当てておいてください。


作業解像度の設定

テクスチャの解像度とは別に、作業解像度という物があります。

高ければ高いほど精度は良くなるのですが、メモリやCPUリソースも消費するため各自のマシンと作りたい作品に応じて設定してください。

出来れば最終的に出力するテクスチャの倍くらいを確保しておきたいですが、4kは結構重いです。


初期ベイク

モデル自身の相互干渉や、モデルの曲率などを計算するため、最初に1回だけベイクを行います。

これを基に様々な効果を自動的に適用できるようになるので、作成しておいてください。

ベイクされるデータも初期設定では解像度に影響されます。他の処理をする際のベースデータになるので、こちらも少し高めに設定しておきたいです。


ペイント

2Dのペイント手法とは少し違う

ペンやブラシの設定を細かく調整できるのですが、手作業で細かいところまで塗る作業はSubstance Painterではそれほど行いません。

もちろん出来なくは無いですが、あまり効率が良くないですし、2Dに特化したペイントツールほど機能が充実しているわけではないですし、プロシージャルの面からも推奨できません。

2Dペイントツールでも、トーンなどを自分で手描きすることは無いように、Substance Painterでもマスクを利用して、どこに塗りつぶしペイントをするか、がメインの処理になります。

塗りつぶしで対応できない細かい部分のペイントについては、ステンシルを用います。

それでも対応できないところはペイントという流れが効率的です。

後から変更が効くようにするため、直接ペイントするべきか、マスクを作成するべきかの判断は実際にやってみて慣れていくしかないと思います。


マルチチャンネルテクスチャ

2Dペイントとは違う考えとして、複数のテクスチャを同時に編集するという意識が必要になります。

これはSubstance Painterというより、シェーダーがどのようなテクスチャをどのような形式で要求しているかを知る必要があります。

Substance Painterでは、これらのシェーダーが必要とする種類のテクスチャをまとめてペイントすることができます。

例えば金属に傷をつけたい場合は、表面の粗さや擦過痕の方向、変色具合など、1回のストロークで全部の設定を行うことが可能です。


マテリアルや部位毎にレイヤーを作成

レイヤー機能は複雑ですがこちらは2Dペイントソフトとそれほど差はありません。

マテリアル単位でレイヤーを分けることが多いです。

設定方法は若干特殊な物がありますが、それはソフトの使い方という点で必要な分だけ覚えて効率化を図ってください。


テクスチャ出力

テンプレート

今まで作成してきたマルチチャンネルのテクスチャを、目的に応じた形式で出力することができます。

その際、あらかじめよく使うパターンのテンプレートが用意されています。

細かく設定しようと思えば、透明色の設定を、単独のテクスチャにするかカラーテクスチャのアルファに入れるか変更したり、 グレースケールで持っている情報をカラーテクスチャのチャンネルに設定することで1ファイルにまとめたりもできます。

しかし普通は用途に合わせたテンプレートを選択してテクスチャを出力するだけで対応できるようになっています。

DirectXとOpenGLで使うノーマルマップのチャンネル入れ替えのような設定変更なども、ここで対応可能です。


解像度変更

初期設定で作業用の解像度を設定しましたが、これはテクスチャ出力時に出力したいテクスチャに合わせて再計算されます。

単に画像サイズを縮めたり伸ばしたりしているわけではなく、レイヤーごとに保持している情報を再計算して最適な状態にしています。

ですので、大きいテクスチャが欲しい場合はサイズを大きくするだけで綺麗なテクスチャを生成することも可能で、小さいテクスチャが欲しい場合も無駄につぶれることをある程度は軽減してくれるのです。


テクスチャを出力したら

DCCツールに戻して作業を継続したり、ゲームエンジンに持って行ったりします。

テクスチャを作るまでがSubstance Painterの仕事なので、ここから先は修正やテクスチャの追加が発生しない限り出番はありません。


次の記事。

www.hildsoft.com

SubstancePainter2018の基礎レベルをざっくりと(事前知識)

f:id:hildsoft:20180628230830j:plain

この記事の意図

単純明快、もっとシェア広がれSubstance Painter!

使う人が増えると、自分にもいろいろな知見が戻ってくるのです。

作成の背景

SubstancePainterは最近ユーザーが増えてきている感じがするので、2018になってUIも変わったことですし簡単に解説記事でも書いてみます。

最近、以下の理由からユーザーが増えていると推測しています。

  • 業界内でも使用実績が増え、ソフト自体の機能や性能も向上して使用できるシチュエーションが増えている
  • indie版は安く、Steamでも割引時1万程度で買えたり、学生だと申請することでフリーで使用できるためハードルが低い
  • 趣味でBlender等を使いモデリングする人が増えたため、ホビーユーザーも増えている

公式の2018用チュートリアルもありますが、機能自体もかなり増えてきているので、3D初心者が最初に全部やるのには少しボリュームが大きい気もします。

academy.allegorithmic.com


そこで、あまり深いところまでは突っ込まずに、大まかな使い方を解説して用途によって必要な部分は肉付けして覚えてもらうための記事を、素人ながら書いてみようと思いました。

英語の解説が苦手という方は、UI部分の差異はありますが基本的な流れは一緒なので、以前2.x時代に勉強した記事がお役に立てるかもしれません。

www.hildsoft.com

対象とする読者

  • BlenderなどのDCCツールでモデルを作ってUV展開まではできたけど、テクスチャってどう描けばいいのか分からない
  • 今までテクスチャはPhotoshopなどのペイントツールだけで描いてきた
  • テクスチャ作成のワークフローを大まかに知りたい

のどれかに当てはまり、SubstancePainterに興味がある人を想定しています。

初心者向けに書くつもりなので、分かる人には冗長な部分もあると思います。そこは確認程度に読み飛ばして下さい。


SubstancePainterというソフト

SubstancePainterって何をするもの?

簡単に言うと、3Dオブジェクトに直観的にペイントできるソフトです。

便利なツールではありますが、万能ではありません。もちろん苦手な部分もありますし、Photoshopなどで描いた方が早い場合も多々あります。

少なくとも、複数のチャンネルを使うテクスチャについては、Photoshopなどを併用するとしてもテクスチャデータの母艦をSubstancePainterにすることをお勧めします。


SubstancePainterのメリット

沢山ありますが、伝えておきたいメリット4点だけに絞って書きます。

Proceduralなワークフロー

まず真っ先に挙げられるのが、プロシージャル(procedural)という点です。

プロシージャルは、英語で「手続き的」という意味があります。

例えばペイントソフトでレイヤーを分けておけば、そのレイヤーの色を変えたり、回転させて模様の向きを変えてみたりなど後から修正ができます。

今の段階では、これの少し応用版と理解してもらえればOKです。

つまり、後からでも変更に強い(完全に手戻りが無いわけではない)点がSubstancePainterの最大の強みだと思います。


マルチテクスチャ編集

次に、複数のテクスチャを同時に編集できるという点があります。

モバイルゲームなど、ハード性能が制限される環境ではテクスチャは1種類で、影や光沢、質感なども含めてテクスチャに描いてしまうことも多いと思います。

そのレベルのテクスチャならペイントソフトで描くこともできますし、その方が早い人もいるでしょう。

しかし、凹凸を表現するバンプやノーマルマップ、光沢を表現するメタリックマップ、表面の粗さを表現するラフネスマップなどを使用します。

これら複数のテクスチャに対してズレなく手描きするのは職人的な能力が要求されるのは想像に難くありません。

SubstancePainterであれば、これらを一度に処理することができるのです。


マテリアルペイント

3つ目は、マテリアルを使用できることです。

2番目に上げたメリットで複数のマップを作成すると書きましたが、マテリアルを使用することで質感を表現することが簡単にできます。

例えば、ゴム、鉄、プラスチック、シルク、木材など、これらの表現の違いをマテリアルを差し替えるだけで描き分けることが可能です。


3Dペイント

最後に、3Dオブジェクトに対して直接ペイントできる点です。

実際のモデルを見ながら直観的にペイントすることが出来るので作業効率に貢献します。

3DペイントならではのUVの継ぎ目(シーム)をあまり意識しなくても良くなります。

UV上では離れたところにあっても、3D上で連続的に書くことができるので、直線や模様などをどうしてもUVの切れ目に描かなければいけない場合などに効果を発揮します。


他にも多数のメリットは有りますが、キリが無いので今回は割愛させてもらいます。


SubstancePainterのデメリット

ソフトの快適な動作要求が高め

1点目は比較的重いソフトということです。メモリも大量に食います。

しかし複雑なモデルでもない限り、今のPCなら十分に動かせると思います。

30日使用できる体験版もありますので、購入前に動作確認をお勧めします。

https://www.allegorithmic.com/buy/download


追加のマテリアルは別途用意する必要がある

2点目はマテリアルを作る事はできないことです。

自作する場合はSubstanceDesignerというソフトが必要になります。

このソフトはSubstancePainter以上に理解が難しいです。

追加のマテリアルが必要な場合は、SubstanceDesignerを購入して自作するか、既に販売されているモデルを購入するかなどが必要になってきます。

無料で公開されているマテリアルなどもあるので、探してみることをお勧めします。

Substance Share « The Free Exchange Platform »

Substance Source


次の記事

www.hildsoft.com

ZBrushなどの3Dツールで曲面を滑らかにする方法

滑らかな曲面に戻したい

スカルプトや、ポリゴンモデリングで頂点数が多いモデルを修正する時って、気を付けていても不意に曲面に細かい凹凸ができていることってありますよね?

ZBrushでの基本的なスカルプト手法だとメッシュレベルがあるので、それを下げてコントロールすることが可能です。

しかし、2018になってからSculptrisProの導入など、ローレベルのメッシュを削除することもあり、ハイポリ状態での修正方法を探していました。

今回はこれを修正する方法の一つをメモっておきます。

3D界隈の知識が足りてないので業界では常識なのかもしれませんが、そこはご了承ください。


手法

曲面を手で修正するのは難しい

曲面や平面を手動で調整するのは難しいです。

平面であれば軸を調整してスケール0にする手法が一般的ですが、曲面の場合はこの手が使えません。

今回の手法では、サポートメッシュを使います。

ZBrushのスカルプト操作を例にしますが、他のDCCツールでのポリゴンモデリングにも応用できると思います。

要点は、扱えるレベルの頂点数まで下げるorプリミティブから変形などで理想となる形状に加工できるようにして、サポートメッシュを作成するということです。


概要

  1. ベースとなるメッシュをコピー
  2. 扱える頂点数まで減らす
  3. 少ない頂点数で滑らかに調整してサポートメッシュを作成
  4. サポートメッシュに沿わせる形で修正


その他の案

  • スムーズブラシを使う
     曲面に対してスムーズを行うと、どうしても線が残ってしまいがちで時間がかかりすぎるので除外。

  • Tool>Deformation>Polishを直接使う
     メッシュが細かすぎる場合は余り効果がないので除外。

  • SculptrisProの使用を諦めて従来のSubDivだけで行う
     ある意味正解ですけど、今回は使ってしまったor使いたいということを前提なので除外。


修正例

f:id:hildsoft:20180430135910j:plain

途中からSculptrisProを使用しているため、四角ポリゴンや△ポリゴン、密度差がかなり入っている上にハイポリゴンの状態です。

太ももの部分にある細かな凹凸をスムーズにします。

正面から見るとそれほど凹凸は目立たないのですが、斜め上から見ると光の加減で凹凸がはっきりわかる状態です。


手順詳細

サポートメッシュを作成する範囲を選択

f:id:hildsoft:20180430141402j:plain

スムーズをかけたい部分より大きめにマスクをかけます。

全体のコピーを取ると、この後使用するPolishやZremesherなどの機能で処理時間がかかるためです。

また、少し大きめにするのはPolish時に境界部分に縮みが発生するためです。


サポートメッシュのサブツール化

f:id:hildsoft:20180430142120j:plain

サポートメッシュの元となる部分を抽出します。

Tool>Subtool>Extractを使用し、マスク部分を厚み0、片面のみのメッシュでサブツール化します。


サポートメッシュのリトポロジー

f:id:hildsoft:20180430143205j:plain

マスクを解除し、Tool>Geometry>ZRemesherをかけます。

Target Polygons Countは滑らかにしたい形状に合わせて調整します。

今回は比較的大きい凹凸を含めて滑らかにしたいので、ポリゴン数をかなり落とします。

ポリゴン数が多い場合はそれほど滑らかにできないので、目的の形状に合わせて調整してください。


サポートメッシュの調整

f:id:hildsoft:20180430144408j:plain

Tool>Deformation>Polishを強さ1で、数回かけます。

ローポリゴンの状態でPolishをかけているので、スムーズになる凹凸のレベルが変わってきます。

この状態でPolishをかけることにより、微妙な凹凸を消してしまう事が目的です。

f:id:hildsoft:20180430145035j:plain

ここで最終的なフォルムがおおよそ分かるので、この段階で滑らかだと判断できるようなポリゴン数とPolish実行回数を調整してください。

また、この時点でブラシなどを使用して形状を整えることも可能です。


サポートメッシュのSubdivide

f:id:hildsoft:20180430150034j:plain

元のメッシュに転写するために、サポートメッシュにスムーズをかけます。

手法は二つあり、

  • Tool>Geometry>DivideでSmtオプションを使用して分割する
  • Smtオプション無しで分割の度にTool>Deformation>Polishをかける

それほど差は無いですが、若干の差はあるので形状によって使い分けても良いと思います。

今回はsmoothを使用して単純に分割しました。

転写範囲を調整

f:id:hildsoft:20180430151403j:plain

修正したいハイポリモデルのマスク範囲を調整します。

先ほどExtractする前にマスクをしているので、その範囲より小さく、適用したい部分だけマスクを残します。

リトポやsmoothをした影響で境界部分で段差ができてしまうので、適用する境界部分をTool>Masking>BlurMaskを数回適用してぼかします。

Extractする際に大きめにしたのも、ここでの影響を抑えるためです。


f:id:hildsoft:20180430151555j:plain

Tool>Masking>Inverseでマスク範囲を反転します。

Ctrl+ブランクエリアをクリックのショートカットを使う方が早いです。


転写

f:id:hildsoft:20180430152339j:plain

修正したいハイポリモデルをSubtoolで選択して、転写元の滑らかにしたSubtoolを可視状態にします。

安全のため、それ以外のSubtoolは不可視状態にしておくのが良いでしょう。

Tool>Subtool>Project>Projectionを実行します。

設定は初期値で大丈夫だと思いますが、モデル形状により上手く転写できない場合は設定を調整してみてください。


完成

f:id:hildsoft:20180430153208j:plain


f:id:hildsoft:20180430153214j:plain

それほどシルエットを崩さずに消したい凹凸部分だけ滑らかにすることができました。

Substance Painter 2018.1.0

f:id:hildsoft:20180320061951j:plain

Substance Painter 2018.1.0のリリース

Substance Painter 2018.1.0が2018/03/15にリリースされました。

今回の目玉はUIの改良と速度向上です。UI面はタブレットでの使用を考慮した作りとなっています。

機能面ではSubstance Designerで追加された3Dノイズがジェネレーターとして含まれています。


ニュースリリース

公式のニュースリリース

ブログ記事
Substance Painter: Spring Has Come! | allegorithmic

詳細なリリースノート(ココ見るだけで十分だと思います)
Version 2018.1 - Substance Painter - Allegorithmic Documentation

新しいチュートリアル動画(UIが大分変ってるので、2018から勉強する人はこれを見ると良いです)
Substance Academy | Tutorials


変更点の解説動画


Substance Painter 2018 Spring Release


ソフトの変更点

今回はUIの変更がメインで、操作方法はリリースノートにgif動画が多用されているので分かりやすく、

Version 2018.1 - Substance Painter - Allegorithmic Documentation

を見るだけで十分だと思います。

Substance Designer 2018.1.0

f:id:hildsoft:20180312092430j:plain

Substance Designer 2018.1.0のリリース

Substance Designer 2018.1.0が2018/03/09にリリースされました。

前回の2017.2が10月だったので、更新の早いSubstanceの割には遅かったなーという印象です。

というのも、今回のバージョンで内部構造を大きく変えたようです。

一般的に大規模改修後はバグが気になりますので、心配な方はいつでも戻せるようにバックアップをお忘れなく。


ニュースリリース

公式のニュースリリース

Substance Designer Spring Release: Faster, Bigger, Baker! | allegorithmic

Release Note Substance Designer | allegorithmic

解説動画


Substance Designer 2018 Spring Update


ソフトの変更点

実行速度の改善

ノードの管理方法を見直して、パラメータを変更するときなど最大30%高速化されます。

VFX分野のような高度な要求のある市場でには現在の機能では不十分なので、高負荷に耐えられるよう大規模改修を行ったとのことです。

実際にノード計算が早くなったのではないですが、違いが分かるようです。

(あまり複雑なノードを組んだことが無いので実感できませんでした。)


UDIMのサポート

今回のバージョンから、UDIMを完全にサポートするようになりました。

またベイクの途中経過が視覚化され、ベイクプロセス中にリアルタイムに表示されるため、 途中でキャンセルして設定を調整しなおすことも可能になります。

パフォーマンスも改善され、ハイポリのメッシュでも高速に読み込みやベイクできるようになりました。

UDIMの機能追加に伴い、グラフと対象となるUDIMの部分or全体などを切り替える操作も追加されています。

同じくエクスポートダイアログも更新されています。

UDIM用のファンクションノード追加

UDIMの位置を指定するノードが追加されています。

これで指定のタイルのみに効果を適用する事が可能になります。


3Dノードの追加

ノイズやパターンに、3Dジェネレーターが追加されています。

また3Dノードに対して立体的に影響を与えるノードも追加されています。

点からの距離によって影響度が変わるVolumeMask、投影するPlanar Projection、直線状にグラデーションを作成するLinear Gradientです。

SubstanceDesignerのFX-Mapの使い方について調べてみました その2

www.hildsoft.com

前回の記事

FX-Mapで使用する基本ノード

Quadrantノード

f:id:hildsoft:20180104044836p:plain

QuadrantはPatternや入力、ノード自体の下側のコネクタからの入力で画像を受け取り合成します。

Patternや入力ノードからの入力は中央に、ノードの下のコネクタからの入力は4分割してセンターの位置が変わります。

f:id:hildsoft:20180104045144p:plain

出力されるノードの状態です。

4分割された入力は左から順に、左上、右上、左下、右下の順で表示されますが、これは繋いでみればわかるので位置までは覚える必要はありません。

パラメータについては、関数が絡むのでまた今度。


Switchノード

f:id:hildsoft:20180104050223p:plain

スイッチノードは、接続されたノードの左右どちらを出力するかを切り替えるノードです。

パターンを完全に切り替える時に使用します。

f:id:hildsoft:20180104050319p:plain

パラメータが固定だと片方だけしか出ないので、関数で制御するか、パラメータを外部出力で変更可能にして使います。


Iterateノード

f:id:hildsoft:20180104050912p:plain

Iterateノードは繰り返し合成する処理を行います。

左下のコネクタは背景など、元となる画像で、右下のコネクタは繰り返す画像です。

単純に繰り返すと同じ位置に上書きしてアルファ値が濃くなるだけなので、関数などを使用してランダムに散らしたりします。

f:id:hildsoft:20180104051122p:plain

複数の模様を段階的に加えていく場合などは、このように左側をどんどん繋いで、右側に追加する画像を配置していく事になります。


まとめ

  • Quadrantノードは画像を4分割で合成する
  • Switchノードは使用したい処理を切り変える
  • Iterateノードは同じ画像を複数回ブレンドする

SubstanceDesignerのFX-Mapの使い方について調べてみました その1

FX-Mapノード

f:id:hildsoft:20171225032516p:plain

SubstanceDesignerに「FX-Map」というノードがあります。

使いこなせると自由に図形を配置できますし、SubstanceDesignerに入っているPatternsやNoisesもこれを使って作られているようです。


FX-Mapって何をするもの?

任意の図形を自由に並べることができます。

その分、並べ方も自前で設定する必要があって分かりづらい気がします。

下記の参考動画内では、ランダム生成できるひっかき傷を作っています。

簡単な並べ方や、ある程度のランダムを含めて規則性のあるものは「Tile Generator」「Tile Random」などGenerator系のノードが使えないか、先に検討した方が良さそうです。


参考にした動画

やはり基本を学ぶ上では、公式の解説が分かりやすいです。


Substance Designer #9 - Working with FX-Maps part 01


Substance Designer #10 - Working with FX-Maps part 02

具体例や応用例は様々な作例がyoutubeにもありますので、探してみてください。


基本の流れ

ノード作成

f:id:hildsoft:20171225032516p:plain

まずはノードを追加します。

  • ショートカットメニューからFxMを選択
  • スペースバーのショートカットからFX-Mapを選択
  • 右クリックメニューのAdd NodeからFX-Mapを選択

使いやすい方法でノードを追加してください。


出力カラーモード

f:id:hildsoft:20171225162434p:plain

出力カラーモードを設定してください。

後からでも変更可能ですが、通常は最初で設定しておいた方が良いです。

ここではマスク画像を作ることを考えて、Grayscaleにしておきます。


入力ノードの接続してみるも

f:id:hildsoft:20171225162917p:plain

ノードエディタは簡単に試行できるため感覚的に使いがちですが、ここで入力ノードを繋いでも何も起こりません。

間違いではないのですが、ここで試行錯誤して時間を使うより、使い方を調べてから試行錯誤した方が格段に理解が深まると思いますので、まずはスルーします。


FX-Mapの編集

f:id:hildsoft:20171225163322p:plain

右クリックメニューからEdit Fx-Mapをクリックして、FX-Mapの編集画面に移動します。


f:id:hildsoft:20171225163442p:plain

するとQuadrantというノードが1個だけ表示された状態で開きます。

通常のグラフエディタと違い、コネクタが縦についていますが、つなげる方向が違うだけで余り気にする必要はありません。


f:id:hildsoft:20171225163606p:plain

編集する際にグラフ内に複数種類のノードを配置していきますが、出力ノード(背景が黄色)に指定できるのは1つだけです。

出力ノードはrootノードと呼ばれ、最終的にそのノードの状態が通常のグラフ使用されるFX-Mapの出力値になります。

FX-Mapで使用するノードは3種類あり、左から順にIterate、Quadrant、Switchで、どれもrootノードに指定することができます。

これらノードの細かい説明は次回以降にします。ここではrootノードの存在とノードは3種類ある程度に思ってもらえればokです。


出力データを作成

f:id:hildsoft:20171225164550p:plain

まずは一番簡単な出力方法である、プロシージャルな基本図形を出力してみます。

root指定されているQuadrantノードをダブルクリックして、Patternの中からGaussianを選択してください。

この状態で元のグラフに戻ってみると、FX-Mapの出力状態を確認することができます。

ShapeノードでGaussianを選択したものと同じ状態になっています。


f:id:hildsoft:20171225164823p:plain

次にInputイメージを表示してみます。

PatternからInput Imageを選択して下さい。

ここではGradient Linear 3をそのまま表示させています。


f:id:hildsoft:20171225164303p:plain

複数の入力イメージを扱う場合は、少し下の方にあるInput Image Indexから表示したい入力データの番号を選んでください。


ノードの入力から出力までの流れを簡単に説明しました。

次回以降は、操作方法などをまとめていく予定です。

まとめ

  • FX-Mapノードは複雑な図形配置ができる
  • 出力するカラーモードは最初で設定しておく
  • 入力ノードは繋いだだけでは何も起こらない
  • FX-Mapの内部で使うノードはIterate、Quadrant、Switchの3種類
  • rootノードが最終的な出力ノード
  • 入力ノードor基本的なプロシージャルノードから図形を加工していく