もんしょの巣穴blog

[SD] Substance Designer 5の紹介

予告通りSubstance Designerの紹介をしていきたいと思います。
とりあえず今回は、Substance Designerってどんなツールか?というところと、Substance Painterとの連携について書いていこうと思います。
動画などから見つけたテクニック、自分でやってて気付いたことなどを書いていく予定なので、かなり不定期かつ効率悪いテクニックなんかもあるかと思います。
もっとこうやったほうがいいよ!ってな情報がありましたら教えていただけると助かります。

まずは簡単な紹介から。
Substance Designerはこの記事を書いている段階でバージョンが5.2.1となっています。
Substance Painterがまだ1.5なので、こっちのほうが歴史があります。
SDはSPと違って、主な使い方はマテリアルのリファレンス作成です。
SPは特定モデルに貼り付けるテクスチャの作成を行うツールですが、SDはあまりその方向で使用しません。使えないことはないんですが。

まずは画面を見てみましょう。

sd001.jpg

SPに似た画面ですが、中央上にはUE4のマテリアルエディタのようなノード群が存在しています。
SDはこのように、ノードベースでプロシージャルテクスチャを生成するツールです。

このツールの強力な部分は、割と適当に作っても作成したテクスチャがタイリング可能になるてんです。
様々なノイズが使用できますが、それらは基本的にタイリングされている状態になっています。
タイリングされていないノイズがあるのかどうかはわかりませんが、今のところ見かけていません。

基本的な使い方としてはSDでマテリアルのリファレンスを作成し、これをSPで特定モデルにペイントしてテクスチャを出力、という形になるかと思います。
しかし、SDはノードベースで作成しなければならないため、慣れないと使いこなせない部分があるでしょう。
基本はやはり、テクニカルアーティストがSDでリファレンスを作成、アーティストがSPでペイント、ということになるんじゃないかと思います。
ですが、個人的にすごく面白いツールだと思うので、わからないから触らない、というのはもったいないと思います。
そんなわけでブログに書いていこうと思い立ったわけでして。

SDのチュートリアルは動画が多く、どうしても検索性が低くなってしまっています。
文字ベースで書いてあったほうが検索性が高まるので、こういう形で書き起こしておいたほうが自分にとっても有用かな、と思った次第です。
そしてあわよくば他の人もブログとか書き始めていろんなテクニックを公開してくれたらなぁ、という期待も込めてです。

さて、今回は第1回めなので、SDで作成したマテリアルをSPで使用する方法について書きます。
SPはその性質上、SDでマテリアルを作成しないとほとんど使い物になりません。
SDでマテリアルを作成する際にもSPを意識しながら作ることを心がけたほうが、あとで自分の首を絞めなくてすむかもしれません。

まずは新規作成で新しいマテリアルを作成します。
[Graph Template] は今回は [Empty] にしておきましょう。グラフ名はなんでもいいです。

sd002.jpg

作成したらまずは出力ノードを作成します。
何もないグラフの上にいくつかボタンがついていますので、図のように [Out] ボタンをクリックします。

sd003.jpg

出力ノードには用途を追加しなければいけませんが、識別子、ラベルなどもわかりやすく書いておきましょう。

sd004.jpg

今回はノーマルマップのみを出力するのでこれでOKです。
他のマップも出力する必要があるのであればそれらのノードも作成しましょう。
また、通常であれば新規作成時のグラフテンプレートをPBR用のものにしておけばOKです。

次にわかりやすいハイトマップを作成します。
グラフエディタ上でスペースキーを押すと、UE4のマテリアルエディタのマウス右クリックのようにノードメニューが表示されます。
このメニューもUE4と同様、文字列を入力するとその検索結果が出てきます。
"tile" と打ち込んで、[Tile Generator] ノードを追加しましょう。

sd006.jpg

格子模様のテクスチャが出てくると思いますが、これだけではつまらないので、プロパティの幾つかを変更します。
Number X4
Number Y8
オフセット0.5

これで以下のような互い違いのブロック状になるでしょう。

sd007.jpg

これをハイトマップとして法線を作成します。
グラフエディタ上の [Nm] ボタンを押すと法線が生成されます。

sd008.jpg

これで法線が出来ましたので、これを出力と接続しましょう。
しかし、これだけでは3Dビュー上に法線が表示されないので、どう見えるかわかりません。
ですので、法線出力ノードを右ドラッグで3Dビューに放り込みましょう。
下のようなメニューが出てくるので、[法線] を選択します。

sd009.jpg

これで3Dビュー上に法線が表示されるはずです。

これでマテリアルは完成ですが、実際にSPで使用するには各種パラメータを設定しておいたほうがいいでしょう。
どのような用途で使われるかわかりませんし、法線の強さなども調整したいところです。
パラメータを外部から調整するには、外に出したいノードパラメータをエクスポーズする必要があります。

まず、[Tile Generator] の [Number X], [Number Y] をエクスポーズしてみましょう。
[Number X] のところのサインカーブのようなアイコンをクリックし、[エクスポーズ] を選択します。

sd010.jpg

小さなウィンドウが表示されるので、[入力名] を [新規作成] とし、"NumBricks" と入れてOKボタンを押して決定しましょう。
すると今まで "4" と入っていたバーが消えてしまうはずです。
これはどこに行ったのかというと、グラフエディタの何もない部分をダブルクリックしてみてください。
このマテリアルの情報がプロパティペインに表示されますが、下の方に [Input Parameters] という項目があり、そこに "Number X" という変数が追加されているのがわかるでしょう。
ラベルが "Number X" ではわかりにくいので、"Num Bricks" と修正しておきましょう。

sd011.jpg

次に [Number Y] も同様に、といきたいところですが、こちらは [Number X] の2倍を入れたいと考えます。
その場合は同様のボタンで、今度は [空の関数] を選択します。
これだけでは何も変化がないので、もう一度変数ボタンを押して編集画面に入ります。

編集画面では他の変数や定数をいろいろ計算して、最終的な結果を出力するノードを作成できます。
今回は [Get Integer] で "NumBricks" を取得、[Integer] ノードに定数 "2" を入れ、[Multiplication] ノードで乗算します。
最後に [Multiplication] ノードを右クリック、[出力ノードとして設定] を選択すれば完了です。

sd012.jpg

同様に、[法線] ノードの [強度] パラメータもエクスポーズしましょう。
こちらは "NormalIntensity" という入力名にし、最大値を "10" にしておきます。

これで完了ですので、まずはサブスタンスマテリアルを保存しましょう。
これはそのままSPでは読めませんので、[ユーザのパッケージ] にある .sbs と書かれた項目を右クリックし、[パブリッシュ] を選択しましょう。

sd013.jpg

.sbsar という拡張子のファイルが出力できますので、これをSPのマテリアルフォルダにコピーします。
これでSPのマテリアルとして追加されているので、塗りつぶしレイヤーなどに登録してみましょう。
普通に登録しただけだと何も表示されないと思いますが、[height] を有効にすれば表示されます。
ただ、SD上での設定とちょっと見た目が違うんですよね…
"Normal Intensity" を0にしても法線は表示されますし。
このへんはまだよくわかってないです。

というわけで、今回は紹介がてら基本的な使い方を解説しました。
これからは不定期に、こんなものを作ってみた、とか、こういう場合はこうする、的なものを操作も含めて紹介していきたいなと思っています。
スポンサーサイト
  1. 2015/08/30(日) 11:08:47|
  2. Substance Designer
  3. | トラックバック:0
  4. | コメント:1

[SP] テクスチャを出力する

今回でSubstance Painter紹介記事は最後にします。
ここまで紹介した記事を見てもらえればアーティストさんであればかなり色々なことが出来るはずです。
絵心が全くないプログラマである私がそれっぽいものを作れるわけですから、アーティストさんならちょっといじればすぐに慣れて素晴らしいテクスチャをいくつも作れるであろうと信じています。

最後はペイントした結果をテクスチャとして出力し、UE4で表示するところまでです。
もちろん、UE4以外でもUnityや自作描画エンジンでもテクスチャは使用可能です。

とりあえず、以下のように自分の納得の行くペイントが出来たと仮定します。

sp077.jpg

まずはテクスチャのサイズを決めたいです。
初期状態ではテクスチャサイズは1024*1024じゃないかと思いますが、このロボットはプレイヤーキャラなので2k*2kくらいのサイズでもいいでしょう。
というわけで、まずはサイズを変更します。

ウィンドウ左上の [TextureSet Settings] ウィンドウに [サイズ] という項目がありますので、ここをちょちょいといじります。

sp078.jpg

サイズを2048にすると少し時間を掛けて3Dビューのテクスチャまでちゃんとサイズが変更します。
サイズ変更はいつでもどこでも可能で、変更してから元に戻しても結果は変わらない非破壊性ですので、例えばレイヤーが多くなって重くなってしまったという場合に、作業は512くらいで、出力は2048で、ということも可能です。

また、あまりないとは思いますが、テクスチャの縦横サイズを変更したい場合は上図の緑枠のボタンを押しましょう。
これはデフォルトONで、OFFにすると縦横それぞれのサイズを決定することが出来るようになります。
テクスチャサイズを決定したら出力を行います。
出力するには [ファイル] → [すべてのチャンネルをエクスポート] を選択します。
ショートカットキーは Ctrl + Shit + E です。
するとエクスポートウィンドウが開きます。

sp079.jpg

このまま [エクスポート] ボタンを押して出力してもいいのですが、あなたが使用する描画エンジンに合わせてテクスチャをカスタマイズしたい、ということもあるでしょう。
例えば、この状態ではAOマップは出力されませんし、ラフネスとメタリックが別テクスチャに出力されてしまいます。
ラフネスとメタリック、AOマップは1つのテクスチャに合わせてもいいのでは?
また、今回は高さマップはいらないかな、などの要望があるでしょう。

そのようなエクスポートのカスタマイズはエクスポートウィンドウの [Configuration] タブで行います。

sp080.jpg

[Configuration] タブには出力するテクスチャのコンフィグが存在しています。
主要なゲームエンジンであるUnity、UE、CryEngineに対応するコンフィグも存在しています。
今回は [Unreal Engine 4 (Packed)] を元にして自前のエクスポートコンフィグを作成してみましょう。

まずは前述のコンフィグをコピーします。
Presets と書かれている部分の左側のボタンを、前述のコンフィグを選択した状態で押してみましょう。

sp081.jpg

するとこのようにコピーされたコンフィグが作成されます。

コピーされたコンフィグを右クリックし、[Rename] を選択して名前を変更しましょう。
とりあえず今回は [UE4 Custom] と名づけました。

今回はエミッシブはいらないのでコンフィグ内の4番目を削除しましょう。[x] ボタンを押せば削除できます。

sp082.jpg

次に設定すべきは上から2番目のテクスチャです。
このテクスチャはRとGのチャンネルにラフネスが、Bチャンネルにメタリックが入っています。
ラフネスは1つでいいので、Rをラフネス、Gをメタリック、BをAOにしたいと考えました。

まずは [Input maps] ペインから [金属] という項目を見つけて、2番目のGチャンネルにドラッグ&ドロップします。
コンテキストメニューが開いたら [Gray Channel] を選択しましょう。
同じように [Ambient occlusion] を見つけてBチャンネルにドラッグ&ドロップします。

sp083.jpg

これで出力テクスチャの各チャンネルに何が格納されるかが決定されました。
もしも新しくテクスチャを追加したい場合は、上部の [Create] の項目から必要な型を選択してボタンを押してください。

sp084.jpg

最後に出力するテクスチャの名前を変更しましょう。
UE4のテクスチャ命名規則は基本が "T_xxx_B" などとなっています。
最初は "T_" で始まり、素材などの文字列が入り、最後はベースカラーなら "_B"、法線なら "_N" と言った具合です。

今回は "T_メッシュ名_マテリアル名_接尾辞" という名前にしてみます。
メッシュ名、マテリアル名は言わずもがなですが、接尾辞はいわゆる Suffix というやつで、ベースカラーは "B"、ラフネス・メタリック・AOのマップは "RMA"、法線は "N" とします。
メッシュ名やマテリアル名を直接設定するのはまずいので、"$mesh" と "$textureSet" の文字列を使います。
これはそれぞれメッシュ名とマテリアル名に自動的に置き換えられる便利な文字列です。

というわけで変更後はこうなります。

sp085.jpg

$mesh などの自動変換される文字列がわからなくなった場合は右の [$] ボタンを押してください。
今は3つの文字列が設定可能なのがわかるでしょう。

では、[エクスポート] タブに戻って [Config] を先ほど作ったコンフィグに切り替えましょう。
ファイル名の自動変換文字列はきちんと変換されて、どのような名前のテクスチャが出力されるかわかるようになっています。

ではエクスポートボタンを押して出力しましょう。
設定されているフォルダに出力されているはずです。

sp086.jpg

こんなダイアログが表示されたら成功ですので、[Open folder] ボタンを押してフォルダを開き、テクスチャが正常に出力されているのを確認して下さい。

正常に出力されていたらあとはメッシュとテクスチャをUE4に読み込ませて、マテリアルにテクスチャを接続して完成です。

sp087.jpg

だいたいSP上の見た目と同じになっていますね。

という感じで、Substance Painter紹介記事はここまでとします。
これ以上はアーティスト的なテクニックのほうが重要になるでしょうし、そういうのは自分には解説できません。
これからもブログはUE4とたまにSubstance Designerの紹介なんかもやっていこうかとは思っています。

というわけで、みんなも使って色々なテクニックを紹介してくれると喜ばれると思うよ!
  1. 2015/08/17(月) 00:02:15|
  2. Substance Painter
  3. | トラックバック:0
  4. | コメント:2

[SP] フィルタを使って色々 その3

フィルタ紹介3回目。と言ってもこれで終了ですが。

今回はレイヤー側で使用することがメインとなるフィルタ類を紹介します。
これは [Add filter] で追加することが出来るものです。
今までフィルタと言っていましたが、ジェネレータやレベルなんかも全部ひっくるめるとSPではエフェクトと呼んでいるようです。
今回紹介するのはそのエフェクトの中のフィルタですが、今更変更するのも面倒なのでフィルタで通します。
フィルタという言葉がゲシュタルト崩壊しそうになるかもしれませんが、うまく脳内変換していただければと。

フィルタにはいくつかの種類があり、使い方も微妙に違います。
そのため、他のジェネレータなどより使い方がわかりにくいかもしれません。
設定はしたけど効果があるように見えない、という場合もあるでしょう。
というわけで、いくつかのフィルタを例にして使い方を見て行きたいと思います。

まず、[Shelf] → [Filters] タブの中を見てみましょう。

sp070.jpg

使い方に応じて色分けをしてみました。

まずは赤枠の [Basecolor HSL] はベースカラーチャンネルのみに有効なフィルタです。
カラーの Hue, Saturation, Luminosity を変化させることで色相、彩度などを変更することが出来ます。
これはベースカラーに対してしか使用できないため、レイヤーにのみ使用できます。
下は同一マテリアルでの色相変化例です。

sp071.jpg

緑枠はマスクにも使用できるフィルタで、名称通りにブラー、シャープ化、歪みを適用できます。
例えば、高さマップだけシャープ化して法線が強く出るようにしたり、逆にブラーでボケさせて薄く弱くすることも出来ます。

sp072.jpg

高さにブラーを掛けただけでもイメージが大分変わります。

マスクにも使えるので、マスクを歪ませるというような方法にも使えます。
下の図は [MG Edge Damages] をレベルで調整したあと、[Warp] で [Use directional warp] を有効にしたものです。

sp073.jpg

エッジ部分から斜め下方向にマスクが歪んでいっているのがわかるでしょう。

青枠は映像的なフィルタですが、基本的にマスクでは使用できないようです。
[MatFx Crack] のように一部使えるものもありますが、使えないものについては設定ができません。

この青枠も使い方は2種類あり、設定してパラメータの変化だけで対応できるものと塗ることで効果が出るものがあります。

前者は塗りつぶしレイヤーで使うことが多くなるかと思います。
例えば [MatFx Rust Weathering] は金属の錆を浮き上がらせるフィルタですが、塗ったところを錆びさせるものではなくパラメータで錆の広がりなどを設定することが出来るものです。
下の図は [Steel parkerized] で塗りつぶしたレイヤーに対して設定したものです。

sp074.jpg

見ての通り、風雨にさらされて錆びたという感じが出てますね。
他にも、[MatFx Edge Damages] や [MatFx Sun Bleach] のような、形状に合わせた処理を行っているフィルタはこれに当たります。

後者の塗った部分に効果があるものとしては [MatFx Crack] 辺りがわかりやすいでしょう。
これはペイントレイヤーに設定しても効果が見えません。
塗りつぶしレイヤーに設定すると効果が発生する場合もありますが、イマイチよくわからないということになるかと思います。
まず、ペイントレイヤーにこのフィルタを設定して、適当に塗ってみましょう。

sp075.jpg

結果は見ての通り、塗った場所にクラックといえる割れ目が出来ましたね。
これらのフィルタは基本的に、ある特定の一部だけ錆びさせたい、等に使用します。

[MatFx Skin Scale] なんかもこの種の塗った場所に効果がある系ですが、こちらは全体で問題ないなら塗りつぶしでも使用できます。
このフィルタは何らかの呪いで腕だけ爬虫類の皮になってしまった人の表現に使えそうですね。

最後は紫枠ですが、これはSubstance Liveの3月のマンスリードロップで取得できるものです。
とくに [Rust] は塗った場所に錆を施せるのでかなり使い勝手がいいと思います。

sp076.jpg

今のところ、マンスリードロップでフィルタがゲットできたのは3月の2つだけですが、今後もなにか貰えると嬉しいですね。

という訳で今回でフィルタの紹介は終了。
そろそろSPの解説も終わりかな。


  1. 2015/08/16(日) 14:21:22|
  2. Substance Painter
  3. | トラックバック:0
  4. | コメント:0

[SP] フィルタを使って色々 その2

前回に引き続きフィルタの紹介。

今回は [Add generator] で追加できるジェネレータの紹介です。
レイヤー、もしくはマスクにジェネレータを設定すると [Properties] ウィンドウがこんな感じになります。

sp064.jpg

この状態ではジェネレータは有効ではありませんので、[Generator] ボタンを押して使用したいジェネレータを選択するか、[Shelf] → [Generators] タブからドラッグ&ドロップするかしてください。

sp065.jpg

これでグレースケールの画像が生成されます。
しかし、どうもこれはマスクでしか使用できないようです。
レイヤーに対して設定すると確かに各チャンネルの設定もできて有効になるような印象があるんですが、実際には全く効果を成していないようです。
これが不具合なのか想定された動作なのかは不明ですが、カラー選択フィルタはレイヤーで無効化されているので想定されていないか未実装かなのではないかと思われます。

というわけでマスクにしか効果がないのでマスクに何かジェネレータを設定してみましょう。
レイヤーは塗りつぶしで、単色赤、高さ最大、ラフネス大きめにしておきます。
そしてマスクに対してジェネレータを設定しましょう。わかりやすいところで [MG Edge Damages] を使ってみます。

sp066.jpg

結果は見ての通り、ロボットのエッジ部分に傷がつきました。
もちろんパラメータによって色々と変化させることも可能です。

このように、ジェネレータは主にベイク可能なマップ(AOマップや曲率マップ)を元にマスクをいい感じに生成してくれるありがたいフィルタだと言えます。

ジェネレータは他にも、埃がたまっているように見せる [MG Dust] や地面からの泥はねを表現する [MG Ground Dirt] なんかがあります。
そんな中で特殊なのは [MG Mask Builder] ですね。
他のジェネレータよりはるかに多くのパラメータを持っていますが、基本的にこいつは、なんでもありジェネレータです。

初期状態では [Grunge], [AO], [Curvature] の項目が有効になっており、エッジ部分とAOの影の部分、それに少量の汚れがマスクとして存在しています。
とりあえずこれらの [Intensity] をすべて0にすることで一切マスクが入っていない状態を作ることが出来るでしょう。

例えば、[Position] の [Intensity] を上げてみましょう。
するとロボットの上部がどんどんマスク有効になっていくのがわかると思います。

sp067.jpg

[Invert] をONにすれば足元からになります。
他にも、[World Space Normal] の項目は法線のワールド空間に基づいてマスクが生成されますし、[Scatter] などは図のようにステンドグラスやモザイクのようなマスクを生成できます。

sp068.jpg

各項目の [Intensity] にはマイナス値に設定できるものもあり、これは減算結果となります。
エッジ部分にマスクはかけるが、オブジェクト上部ではマスクされないようにしたい、という場合に使えるでしょう。

sp069.jpg

このようにオブジェクト形状から理解できる部分に何らかのマスクを設定したいのであればジェネレータは大変有効です。
うまく活用していきましょう。

次回はフィルタその3の予定です。

  1. 2015/08/15(土) 23:22:23|
  2. Substance Painter
  3. | トラックバック:0
  4. | コメント:0

[SP] フィルタを使って色々 その1

今回はフィルタです。
その1なのでもう1回か2回くらい紹介します。
Substance Painterを便利に、かつ有効に使用するのには絶対必要な機能ですし、何より便利なので覚えておきましょう。

フィルタはレイヤー(ペイント、塗りつぶし両方)、もしくはマスクに対して設定することが出来ます。フォルダに対しては設定できません。
設定するには設定したいレイヤー、もしくはマスクに対して右クリックし、コンテキストメニューの下の方にある [Add ~] を選択します。

sp059.jpg

上図の赤枠内がフィルタ類です。
正確にはフィルタとジェネレータは別なんですかね?よくわからないので全部ひっくるめてフィルタと呼んでいます。
なお、一番下の [Add color selection] はマスク専用で、レイヤーには設定できません。

フィルタを追加されたレイヤー、もしくはマスクは下の部分がグレーではなくブラウンに変化します。
そして、そのレイヤー、もしくはマスクを選択している場合にどのフィルタが設定されているか表示されます。

sp060.jpg

選択してない状態では表示されません。
常に表示していると邪魔になるから、というよりはUI的に全部表示しづらいからそういう仕様になってるのかな?

では、ここから標準的なフィルタを紹介していきます。

まずは [Add fill] で追加できる塗りつぶしフィルタです。
これはその名の通り塗りつぶしを行うフィルタで、塗りつぶしレイヤーと基本的な使い方は変わりません。
レイヤー側は各チャンネルの塗りつぶしが可能ですが、マスクではグレースケールの設定のみです。

主な使い方としては、レイヤーの方は全体のメタリックやラフネス何かを単色で設定したい場合に便利です。
全体が金属なのでメタリックのみ1.0で統一したい、という場合によく使うのではないでしょうか。
マスクの方は単色塗りというよりAOマップや曲率マップでマスキングしたい場合に使われることでしょう。
例えば金属の傷を全体的に入れたいけど、曲率が高いところにより強く傷を入れたい、というような場合に便利でしょう。

気をつける必要があるのは塗りつぶしフィルタはペイントレイヤーより上に来るということです。
これはフィルタ全般に言えることですが、フィルタはレイヤー、及びマスクに対して処理されるため、場合によっては元々レイヤーやマスクに設定されていたものを覆い隠してしまうことがあります。
どの項目に対してフィルタを設定するのか、という点については十分注意して設定を行いましょう。
UI的に微妙にわかりにくい部分も多いです。

次に [Add paint] で追加できるペイントフィルタです。
こちらも塗りつぶしフィルタと同じようにペイントを行うフィルタです。
主な使用方法はやはり塗りつぶしレイヤーに対してちょっとだけペイントしたい、という場合でしょう。

なお、フィルタの処理順番ですが、こちらもレイヤーと同様に下から順に処理されます。
例えば塗りつぶしフィルタの上にペイントフィルタがある場合とその逆では結果が変わってきます。

sp061.jpg

これに気づかずに何故かフィルタが有効にならない…と悩んだことがあるので注意してください。
フィルタの上下を変更するには [Alt + ↑/↓] で上下移動が出来ます。

実はこの2つのフィルタは別にレイヤーでも実現可能だったりするので、マスクで使う以外ではあまり使い道がないのではないかと思っていたりするのですが、ここからはフィルタならではの機能です。

マスクで使用する [Add color selection] は主にIDマップから特定のカラーをピックアップし、その部分のみマスクを有効化します。
フィルタを選択した状態で [Properties] ウィンドウの [Pick color] ボタンを押すとIDマップがビューに表示されるのでそこから必要な色をピックアップしてください。
複数の色をピックアップすることも可能です。

sp062.jpg

IDマップ以外も使用できますが、普通はあまり使わないでしょう。

次は [Add levels] で追加できるレベルフィルタです。
こいつは SP を使いこなせるようになってくると使うことが多くなってくるのではないかと思います。
実際、スマートマテリアルでもかなりよく使われています。

前述のようにAOマップや曲率マップをマスクとして使用するのはかなり便利です。
これらはオブジェクトの影の部分を調べたり、角の部分を調べたりするのに有効です。
しかし、これらを塗りつぶしフィルタで設定するだけでは自分が望んだマスクにならないことのほうが多いと思います。
例えばAOの影の部分に何らかのペイントを行いたい、という場合、AOマップは影の部分が暗くなってしまうのでマスクされてしまうわけです。

そこで登場するのがレベルフィルタです。
レベルフィルタは画像処理ソフトのレベル調整と同じ機能を持っています。
入力と出力のヒストグラムを調整して全体を暗くしたり白黒の明暗をはっきりさせたりといったことが可能です。
AOマップの影の部分を使用したいのであれば出力を反転させればOKです。

sp063.jpg

このサンプル画像ではAOの影の部分だけ錆びているように見せています。
レベルフィルタは大変使い勝手のいいものですので、多分お世話になることが多くなると思います。
使い方を覚えてうまく活用してみてください。

というわけで今回は標準的なフィルタの紹介でした。
次回はまた別のフィルタを紹介します。

  1. 2015/08/15(土) 14:13:29|
  2. Substance Painter
  3. | トラックバック:0
  4. | コメント:0

[SP] パーティクルを使う

今回はパーティクルです。

ブラシによるペイントはお絵かきソフトのペイントと同様に筆で描いていくような表現には使えるのですが、さすがにそれだけだと難しい表現もあります。
例えばガラスのひび割れや漏れたオイルが垂れてくる表現などです。
これらをペイントブラシで表現できる人もいるでしょうけど、そうでない人にとっては割と難しいシロモノです。

これをある程度サポートしてくれるのが Substance Painter に存在しているパーティクルです。
[Shelf] ウィンドウの [Particles] タブにはいくつかの挙動を行うパーティクルが存在しています。

sp052.jpg

これらはオブジェクトとの当たり判定も取ってくれますし、重力方向に垂れていくような挙動をするものもあります。

使い方はブラシの代わりに選択し、欲しいところに吹きつけてやればOKです。
例えば [broken glass] を使ってみましょう。
[Particles] タブから [broken glass] を選択します。

sp053.jpg

次に、[Properties] ウィンドウの [サイズ] を少し小さめに、[Spawn Radius] を0にします。
また、有効チャンネルは [height] と [rough] のみにして、[height] は -1.0、[rough] は適当に大きめの値にしましょう。

sp054.jpg

これでサンプルロボットの顔面に吹き付けてみましょう。

sp055.jpg

このように、ガラスのひび割れっぽい表現になります。

パッと見はガラスのひび割れっぽく見えるのですが、少し近づいてみるとこんな感じになってます。

sp056.jpg

パーティクル(粒子)によって処理しているため、どうしてもつぶつぶが見えてしまいます。
これに対応する1つの手段としては、1回のパーティクルのシミュレーション時間を短くして、より細かなパーティクルシミュレーションを行わせる方法があります。
これは [Properties] ウィンドウの [dt] という項目が該当します。dt は "Delta Time" の意味でしょう。
デフォルトでは 0.01 になっていますが、これを 0.001 にして再度吹き付けてみます。

どうでしょう?動きましたか?
多分、まともに動かなかったんじゃないでしょうか?
うちの環境では完全に応答しなくなりましたw
これは秒間のシミュレーション回数が多すぎるためにPCが悲鳴を上げた結果です。
パーティクルのシミュレーション方法によっても異なりますが、dt を 0.001 にするとほとんどのパーティクルでかなり重くなるはずです。

では、もう少し自重して 0.003 にしてみましょう。
結果はこうなりました。

sp057.jpg 

前に比べるとマシになった気がしますが、それでも粒子感は残ります。
パーティクルで処理を行っているため、この問題は簡単には解決できないものと思われます。
速度や寿命などをいじることでもある程度対応できますが、万能な解決方法はあまりないようです。
というわけで、パーティクルを使ってロボット君に少しだけ装飾を入れてみます。

sp058.jpg

顔のひび割れは [fracture] に変更しました。
また、胸の辺りのオイル漏れは [heavy leaking] を使っています。
このように、完璧ではありませんが、ある程度の物理的表現はパーティクルを使うことで対応が可能です。

次回はフィルタを紹介します。
  1. 2015/08/14(金) 22:20:26|
  2. Substance Painter
  3. | トラックバック:0
  4. | コメント:0

[SP] 特殊な塗り方:投影、ステンシル、ジオメトリ

今回はブラシによる塗り方としては特殊な手法をいくつか紹介します。
特殊な、とは言っても普通のブラシ塗りより使う頻度が高いんじゃないかと思います。

まずは投影。
左上にある [投影] ボタンをクリックします。

sp043.jpg

するとこのように、ビュー上にマテリアルが投影されるようになります。

sp044.jpg

この状態でブラシで塗ると、通常のブラシ塗りとは違って塗った場所に投影されているマテリアルが塗られます。

sp045.jpg

これが投影の機能です。
投影するマテリアルは90°回転はできますが、拡大・縮小・平行移動・細かな回転は出来ないようです。
これは投影される側、つまり3Dモデルや2Dテクスチャ側を回転・拡縮・移動することで対応する必要があるようです。
マテリアルの90°回転は "Shift + S + 左ドラッグ" のショートカットで使用できます。

次にステンシルです。
ステンシルも投影と似たような機能ですが、こちらはモノクロ画像を利用したマスク処理です。
以前紹介したマスクはブラシを使ってマスクを描いたり、予め用意されたマスクテクスチャを利用してマスキングしたりすることは出来ました。
しかし、例えばメーカーロゴなどをキャラクタの胸に、金属メッキで貼り付けたい、というような場合を考えてみてください。

このような場合、ロゴの形のマスクテクスチャがモデルのUVに対応して作成されているのであればそれをマスクに対して塗りつぶしで対応することが出来ます。
しかし、このロゴの形のマスクテクスチャが単体で存在していて、どんなモデル、UV座標でも使用できるように汎用的に用意されている場合はどうでしょう。
例えばこんな感じのテクスチャが用意されていたとしましょう。

sp046.jpg

これは塗りつぶしで使用することが出来ません。
そこで利用されるのがステンシルです。
このようなモノクロ画像はステンシルとして設定することで、その部分だけ投影で対応することが出来るようになります。

まずは塗りつぶしレイヤーを作成し、適当なマテリアルを設定しましょう。
今回は ”Car paint" を使用しました。
次に黒のマスクをこのレイヤーに追加します。これで一切 "Car paint" のマテリアルは無効化されました。

次にこのマスクを選択し、[Properties] ウィンドウの [Stencil] と書かれたボタンに先のテクスチャをドラッグ&ドロップするか、ボタンをクリックしてテクスチャを選択しましょう。

sp047.jpg

ボタンをクリックする場合、マスクテクスチャを [Shelf] ウィンドウの [テクスチャ] タブに追加しても表示されません。
どうやら [アルファ] タブに追加する必要があるようです。
ドラッグ&ドロップなら [テクスチャ] タブに追加しても問題ないようです。

設定を行うと投影と同様にビュー上にテクスチャが投影されます。
あとは投影と同様に3Dモデルや2Dテクスチャを合わせて塗ります。

sp048.jpg

このようにロゴや模様を綺麗に塗ることが出来ます。
ステンシルは通常のブラシ塗りでも使用できますが、投影塗りでは使用できない点に注意してください。

最後にジオメトリをやります。
こちらは主にマスクとして利用することになる機能です。
ジオメトリ塗りを行いたい場合は左上の [ジオメトリの転写] ボタンを押します。

sp049.jpg

するとビュー上にポリゴンが表示されます。

sp050.jpg

このポリゴンごとに単色塗りできる機能が [ジオメトリの転写] です。
単色でしか塗れないため、マスク以外ではあまり使い道がないと思います。

ジオメトリモードに入ると [Properties] ウィンドウがこのように変化します。

sp051.jpg

カラーは塗る色で、マスクで使用するなら黒から白の間で利用することになるでしょう。
その上の選択項目はポリゴン選択をどのように行うかを設定します。
左から、頂点選択、ポリゴン選択、オブジェクト選択、UV選択です。

頂点選択は選択範囲に入っている頂点を利用しているポリゴンがすべて塗りつぶし対象となります。
何故かこの処理は三角ポリゴンで処理されるので、四角ポリゴンであっても三角ポリゴン2つとして扱われます。

ポリゴン選択は選択範囲に入っているポリゴン自体をすべて塗りつぶし対象とします。
こちらは四角ポリゴンは四角ポリゴンとして扱われます。

オブジェクト選択は選択したポリゴンと地続きになっているすべてのポリゴンを選択対象とします。
いわゆる”ぶっ刺し”になっているポリゴンは選択対象にならないので注意してください。

UV選択は選択したポリゴンとUV座標が地続きになっているすべてのポリゴンを選択します。
2Dビューで見ると選択される状況がよくわかると思います。

これらすべての選択方法において、3Dビューでは選択範囲がすべて対象となります。
つまり、隠面となって見えていない部分のポリゴンも対象になるので選択時には注意してください。

ジオメトリモードはクイックマスクでも使用できます。
クイックマスクの編集に入ったら [ジオメトリの転写] ボタンを押せばOKです。

というわけで今回はここまで。
これらの機能は割とよく使う機能になるのではないかと思います。
すくなくとも、普通のブラシ塗りよりはよく使う気がします。
必要になる場面は限られるかもしれませんが、覚えておきましょう。

  1. 2015/08/09(日) 12:57:30|
  2. Substance Painter
  3. | トラックバック:0
  4. | コメント:0

プロフィール

monsho

Author:monsho
ゲームプログラマ?

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する