Substance Player

今日知った小ネタ。

Substance Playerというツールが有ります。

SubstanceマテリアルをViewingするためのツールなのですが、こちらから無料でDLすることが出来ます。

https://www.allegorithmic.com/download/download_free/6

このツールは.sbs, .sbsarを開くことが可能で、パラメータを変更することも可能です。

ただし保存はできません。パラメータを調整して保存する機能はありません。

もちろん、.sbsファイルのノードを変更することも出来ません。

しかし画像データとしてエクスポートは出来ます。

ライセンス的に問題がないSubstanceマテリアルであれば無料でテクスチャ画像が取得できるわけです。

さて、ここからが本題。

Substance DesignerではパラメータやPixel Processorの変数として時間を取得することが出来たりします。

[Get Float]ノードを関数内に配置し、プルダウンメニューから"$time"を選択するだけです。

しかしこの時間、SD上では確認する術はありません(少なくとも自分は見つけられませんでした)。

しかし、Substance Playerなら確認可能なのです。

そこで今回はいわゆるFlowMapを確認するためのSubstanceマテリアルを作成してみました。

以下からDLできるようにしています。

https://dl.dropboxusercontent.com/u/39588440/Substance/FlowMap.sbs

マテリアルの中身はこんな感じ。

sd140.jpg

下のPixelProcessorの中身はこんな感じです。

sd141.jpg

仕組みとしてはほんとに単純なFlowMapです。

入力画像とFlowMapは外部から与えることも可能ですが、デフォルトでは入力画像はチェッカー、FlowMapは回転するようにPixelProcessorで作成したものです。

では、これをSubstance Playerで読み込んでみます。

sd142.jpg

Substance Playerはこのようになっています。B2Mっぽい見た目ですね。

右側がパラメータで、入力画像とFlowMapは外部から読み込むことも出来ます。

下の方を見てください。

タイムラインと書かれている部分があるのがわかりますね?

この一番左の再生ボタンを押すと"$time"変数がタイムラインにそって変更されます。

これがPixelProcessorで使用されているので、FlowMapが正しく動くことになります。

また、テクスチャエクスポート時にタイムラインに沿って出力することが可能です。

sd143.jpg

[ビットマップでエクスポート]ボタンを押すとこのWindowが表示されます。

上の赤枠部分が時間に関するパラメータで、時間単位、開始・終了フレーム、FPSを指定することが出来ます。

これを利用することでプロシージャルなフリップブックアニメーションを作成することも出来るでしょう。

というわけで小ネタでした。

配置系ノードについて調べてみた

Substance Designerでは入力した画像を複数配置する系のノードがいくつかあります。

今回はそれらのノードについて調べてみたこと、自分なりの考えを徒然なるままに書いてみます。

間違っている部分、調査の足りない部分、自分はそう思わないという部分もあるかと思いますが、そのような場合はコメントなりTwitterなりで指摘していただけるとありがたいです。

・Splatter

sd135.jpg

Splatterとは水などの液体がはね飛ぶ様子を意味する動詞・名詞です。

多分配置系の中では最も軽いノードで、実装自体もかなり単純そうです。

名前からしてとにかくランダムに配置するようなノードと思われがちですが、かなり規則正しく配置されます。

また、他のノードとパラメータの単位が結構違うので戸惑いやすいですね。

個人的にはあまり使わないのですが、とにかく単純に配置したいだけなら十分に使用できます。

[Pattern Size Width/Height] は単位が%となっていて、100がデフォルトです。

パターンの位置をランダムにずらすには [Disorder] を使用しますが、X方向にランダムに移動するだけです。

全体にランダムに散らしたい場合は、[Disorder] と [Disorder Angle] を使用します。

[Disorder] が0の場合の中心位置が [Disorder Angle] のピボットポイントとなります。

つまり、均等に整列している場合の中心点を回転中心として [Disorder Angle] 分だけパターンの位置が動きます。

しかしこれだけでは配置に規則性が出てきてしまうので、そのような場合は [Disorder Random] を True にすると、各パターンごとに [Disorder Angle] の角度がランダムになります。

大きさのランダムは全体に対してしか行えません。Xのみ、Yのみの拡大はできないようになっています。

Tile~系のノードと違って、配置する数を指定することはなく、[Zoom] を使ってカメラとイメージの距離を変更します。

これによって配置されるパターンの数を調整します。

ただし、[Zoom] を行った場合はタイリングテクスチャを作成できなくなるおそれがあるので注意ですね。

単純故に処理速度も高速ですが、単純に配置するだけならこのノードが一番よいでしょう。

・Tile Generator

sd136.jpg

比較的規則正しくパターンを配置したい場合に使用するノードという印象です。

配置するパターン数を [Number X/Y] で指定することができますし、Splatterノードと違ってタイリングテクスチャ作成は容易です。

パターンの各方向のサイズは直接的に変更することは出来ませんが、先の[Number X/Y]をそれぞれ別の値に変更することで縦横比を変更することが出来ますが、一律にしかなりません。

[Scale] や [Scale Variation] は入力パターンの全体の大きさを変更するだけです。

[Interstice] の項目は本来パターン同士の間隔を指定するパラメータなのですが、実はこの値を利用してXY方向それぞれのスケーリングも行えます。

正の値で間隔が開く、つまりパターンが小さくなるのですが、負の値を指定することで逆に大きくすることが出来ます。

ランダム設定もできます。

いくつかのパラメータは行、もしくは列に対して1つ飛ばしで処理されるようになっています。

[Offset] は水平方向のオフセットですが、[Vertical Offset] を True にすると垂直方向のオフセットに変化します。

水平・垂直方向に同時にオフセットを設定する手段はありません。

[Middle Size] の項目は水平・垂直方向に交互にスケーリングするパラメータです。

[Horizontal/Vertical Mask] も行・列の1つ飛ばしでマスクします。

回転は [Free Rotation] と [Fixed Rotation] があり、Freeの方はアナログな角度単位で指定できるのに対して、Fixedの方は90°固定で回転させます。

[Fixed Rotation Random] はパターンごとに回転角度を0と180のどちらかが選択されます。

この状態では90°単位の回転が出来ないのですが、[Quincunx Flip] を True にするとパターンごとランダムに90°ずつの回転が割り当てられます。

多分このパラメータはよく使うことになると思います。

[Position Random] を利用することで空間中のランダム配置も可能です。

比較的整列した配置に使われるものですが、ランダム配置にも十分使えるノードです。

Splatterノードより処理速度はかかる事が多いですが、速度と実装のバランスが良いノードとも言えるかと思います。

・Tile Random

sd137.jpg

Tile Generatorよりランダムに偏ったノードです。

Tile Generatorは配置されるパターンが行列に対して一定で配置されるのに対して、こちらのノードは各ブロックごとにサイズがランダムになり、パターン配置のスプリットが行われる特徴があります。

下の図はデフォルト設定のTile Randomですが、一部のブロックがスプリットされているのがわかるかと思います。

sd138.jpg

この設定は [Split] カテゴリのパラメータで行います。

[Mode] を [none] にするとスプリットが行われませんが、[auto] にすると縦・横にスプリットが行われます。

[auto horizontal/vertical] は水平・垂直方向のみのスプリットになります。

[random h+v] はイマイチ [auto] との違いがわかりません…

[Threshold] によってスプリットされるブロック数を増減できます。

0 の場合は一切スプリットが行われなくなり、1に近づくとスプリットされるブロック数が増えます。

[Multiplier] はスプリット回数です。

[Rotation Random] は [Pattern] カテゴリと [Shape] カテゴリの双方にありますが、前者は90単位の回転、後者はフリー回転となっています。

その他の部分は割とTile Generatorに似ていますが、[Interstice] に負の値を入れることは出来ません。

また、X/Y方向それぞれの指定もできないので、一定方向に伸ばすといった処理は [X/Y Amount] で対応する必要があります。

速度は前述2つより重くなる傾向にあります。

どういう使い分けをすべきかイマイチわかっていないノードですが、みなさんはどういう感じで使い分けてるんでしょうか?

・Tile Sampler

sd139.jpg

これまでのノードと比べて大量の入力を持っているノードです。

入力される画像を利用することで移動、スケール、マスクなどの処理が行えるのが特徴で、かなり汎用的に使用することが出来ます。

また、ランダムをある程度自分が思ったような形で制御することが出来るという利点もります。

その分処理速度が他のノードよりかなり重めですので注意してください。

入力されるマップはパターン以外に、Scale、Displacement、Rotation、Vector、Color、Maskがあります。

Scaleはスケール値、Displacementは位置、Rotationは回転が、それぞれ入力されたマップに依存します。

マップを有効にしたい場合は [~ Map Multipllier] の数値を上げていきましょう。

1に近づけばその分マップの影響を大きく受けるようになります。

Mask Mapは [Mask Map Threshold] で指定された範囲にのみパターンを配置するように出来るすぐれものです。

例えば、敷石の隙間に砂利を配置したい、という場合に砂利の画像に敷石をマスクとして使ったマップとの間で積算し、敷石がない部分の砂利だけ有効にするという方法が一般的です。

この方法は砂利が十分に小さい場合は有効ですが、それなりの大きさの丸石を配置したいとなると不自然に切られてしまいます。

Mask Mapはそもそもマスクされている部分には配置しないという形を取るので、このような切断は発生しなくなります。

ただし、より正確に配置したい場合は [Mask Map Sampling Technique] を [Pattern Bounding Box] にすることになるのですが、こちらはデフォルトの [Pattern Center] より重いです。

Vector Mapもちょっと特殊です。

このマップはScale、Position、Rotationの3箇所で参照することが出来るのですが、どうやらMask Mapによるマスキングが行われた後に処理が適用されるようです。

そのため、マスクが意味を成さなくなることがあります。使用の際には十分気をつけてください。

他のノードが入力パターンを1つしか受け入れていないのに対し、このノードは複数のパターンを入力することが出来ます。

[Pattern Input Number] を増やすことで入力パターンを増やせます。最大6つまでです。

複数のパターンを配置したい場合、それぞれで配置→[Blend]で合わせるという方法もあるのですが、その場合は重なってほしくないのに重なってしまうということもありえます。

入力パターンを増やすことでこの問題にある程度対応ができるので、大変使い勝手がいいです。

通常なら制御しにくいランダム配置を制御しやすくしてくれる大変ありがたいノードです。

速度面を気にする必要が無いのであれば積極的に使っていきたいノードです。

・何を選択すべきか?

自分が今やりたいことに合ったノードを選択することが重要ですが、どのような状況でどのノードを選択すべきでしょうか?

これについては感覚で覚えるのが一番早いのでしょうが、プログラマらしくある程度理屈で攻めてみます。

まず、画像を元にして配置に変化を与えたい場合は [Tile Sampler] 一択です。

マスクされた範囲にだけ配置したい、という場合は特にそうです。

非常に小さなパターンを大量に配置するのであれば [Splatter] で配置、マスクとMultiplyブレンドでも良いと思います。

しかし、ある程度形状のはっきりしたもの(小石など)の場合は切断されてしまって現実味が薄れます。

この場合は [Tile Sampler] の力を思う存分発揮してもらうのがいいと思います。

レンガやタイルなど規則正しく整列して欲しい場合は [Tile Random] 以外を選択しましょう。

オススメは [Tile Generator] ですが、速度が遅くても問題ないなら [Tile Sampler] もありです。

[Splatter] でも可能ですが、あえて選択する理由はないと考えます。

大きさもほぼ一定、並び方も規則正しい場合は [Tile Random] は使用できません。

ある程度形状がはっきりしているものをとりあえず配置したい場合はどれを選んでも構いません。

しかし、速度面の問題から [Tile Sampler] は避けたほうが良いと思います。

高度なことをしないのであれば速度的に速いものを選択すべきです。

この場合で、パターン同士が重なっては困る場合は [Tile Random] を使用しましょう。

このノードの [Random Constraints] が True の場合は位置のランダムを有効にしてもそれぞれのブロックからはみ出ることはなく、パターン同士の重なりが発生しません。

数が少ない場合は配置のパターンが見えてしまいますが、十分な数を配置すればパッと見で配置パターンはわかりません。

重なっても構わない場合は [Splatter] か [Tile Generator] が良いでしょう。

個人的には形状がはっきりしている場合は [Tile Generator] の方が使い勝手がいいと思います。

パラメータ的に狙った形を作りやすいんじゃないかと思いますが、それほどパラメータ調整をしないのであれば [Splatter] でも良いでしょう。

とにかく小さなものを大量に、形状もそこまではっきりしないという場合は [Splatter] をオススメします。

パッと見はランダムにボリュームのある点が大量に集まっているだけだが、よく見るとその点はある程度の形状を有している、というようなノイズ画像を作る際には速度面で考えても有効です。

これらの使用用途は個人的な見解であり、1つの指針でしかありません。

この作り方でやらなければいけないというわけでもないので、従う必要はありません。

ただ、なんとなく迷った時にこういう方針を掲げてる人がいたな、と思って参考にしていただければ幸いです。

HTC Viveでプレイヤーの顔の位置を取得する方法

個人的な覚書。

HTC Vive(に限らないと思うのですが)、プレイヤーの顔の位置、つまりヘッドセットの位置を取得したい場合があるはずです。

キャラがこっちを向くとか、敵がこちらを攻撃してくるとか。

UE4にはHMD関連の命令として [Get Orientation and Position] という命令があります。

これで取得できるPositionを使えばいいんだよね?と思っていたらそうじゃなかった。

どうの座標が正確に何なのかはわからないのですが、どうも焦点位置っぽい。

ではどうすればいいのかというとこういう感じにノードを組む。

ue409.jpg

これで正常にプレイヤーの顔の位置めがけて弾丸を発射してくれましたとさ。

やったね!

SciFi Shape Makerの使い方

Substance Painter 2がリリースされ、Substance Liveの形態が微妙に変わったりしましたが、今度はSubstance Storeが出来ました。

それを記念してなのかどうかわかりませんが、MoodpackのフリークーポンがAllegorithmicから届きました。

MoodpackはSubstance StoreにAllegorithmic自らが出品しているもので、あるテーマに沿ったマテリアルやメッシュ、フィルタ類をまとめたものです。

現在はMilitary Soldier、Fantasy Knight、Sci-Fi Alienの3つが存在します。すべて49ドルです。

Militaryは迷彩服関連のスマートマテリアル中心のパックで、迷彩服以外ではボタンとリボンを生成するツールがあります。

イマイチ面白みには欠けますが、軍隊系のゲームを作りたいのであれば重宝するはずです。

Knightは中世の騎士の装備に関するパックで、6つの武器・防具メッシュと金属に穴や切り傷を与えるツールが便利そうです。

金属系のマテリアルが中心ですが、一部布関係も存在します。

AlienMass Effectにでも出てきそうな人型異星人VelaさんのFBXメッシュが付属したSF系パックです。

異星人の肌のマテリアルや未来的な金属っぽいような布っぽいような服、赤・青・緑の血を表現したツールが付属しています。

Knightと迷ったのですが、今回はこちらを頂きました。

ちなみに、Velaさんは追加のテクスチャ(AOとか)も付属していますが、骨は入っていません。

実際にゲームで使いたい場合は自分で骨を入れる必要があります。

ポリゴン数は10.4万トライアングル。今時なら標準的でしょうかね?

で、今回の記事はこのパックに含まれるSciFi Shape Makerの使い方についてです。

・SciFi Shape Makerとは?

SciFi Shape MakerはSF系のマシンや装備によくあるベンチレーション、ネジなどの各種形状を比較的簡単に作成する事ができるツールです。

もちろんポリゴンではなくテクスチャとして作成します。

どういうものなのかは実際の画像を見てもらう方がわかりやすいと思いますが、こんな感じのやつです。

sp104.jpg

これ、全部テクスチャです。モデリングされているわけではありません。

特に斜めにボルトが打ち付けてあるような下のやつはパッと見、テクスチャには見えませんよね。

SciFi Shape Makerはこのようなちょっとした小物を簡単に追加できるのが魅力です。

もちろん、モデリングが可能であればそちらの方が良いでしょう。

また、ハイポリモデルに作成しておいてベイクする方法も有効です。

しかし、作ってしまったモデルにちょっとアクセントとしてネジを打っておきたい、などの場合には重宝する機能でしょう。

・SciFi Shape Maker単体での使用

SciFi Shape Makerを単体で使用する場合は簡単です。

金属もののマテリアルを設定したオブジェクトを用意し、レイヤーを1つ作成、シェルフの[Tools]タブから[SciFi Shape Maker]を選択するだけです。

sp105.jpg

このツールで追加できるのは基本的にHeightのみです。BaseColorなどは設定できるようになっていません。

そのため、単体で使用するとベースとなるマテリアルのBaseColor、ラフネス、メタリックが使用されます。

例えば木のマテリアルに適用するとこんな感じになります。

sp106.jpg

Height以外としてはAOも描き込みができますが、AOチャンネルを追加してもあまり効果は高くない印象です。

この方法の欠点はネジなどの形状に応じて汚したりすることが出来ない点です。

しかし、以下の方法を使うことである程度の汚れを付加することが出来るようになります。

・SciFi Shape Filterと一緒に使う

SciFi Shape FilterはSciFi Shape Makerと一緒に使うこと前提のフィルタで、それ以外のツールと組み合わせてもあまり意味はありません。

このフィルタはSciFi Shape Makerで書き込まれた情報を元にしてある種のフィルタリングを行ってくれるもので、これを利用することで汚れや、ネジ部分のマテリアルだけ変更、といった処理を行います。

ただし普通にフィルタを追加しただけではうまくいきません。追加のチャンネルとしてUser0チャンネルが必要となります。

このMoodpackには説明書的なものは存在せず、とりあえず触ってみる、というだけでは何をどうすればいいのかわからないと思います。

幸い、ある場所に説明が少しだけありました。

それはウィンドウ下部のステータスバー。フィルタの一部パラメータをマウスオーバーするとここに情報が記述されていました。

sp107.jpg

エッジダメージを利用するにはUser0チャンネルとSciFiブラシツール(SciFi Shape Makerのこと)が必要と書かれています。

残念なことに、これだけではまだ情報が足りなかったりしますが、ここまでくれば察しのいい人はわかるかもしれません。

というわけでUser0チャンネルを追加します。

sp108.jpg

追加した段階ではUser0チャンネルのフォーマットはL32Fとなっているはずです。

実はこれではダメなので、RGB8に変更します。

sp109.jpg

あとは単体で使う時のようにレイヤーを追加し、ブラシをSciFi Shape Makerに変更、フィルタを追加してSciFi Shape Filterを設定しましょう。

sp110.jpg

これで準備は完了です。

とりあえず、現時点で何かを描いてみましょう。

わかりやすいところで、ベントとネジを描き込んでみます。

sp111.jpg

これだけでも結構いい感じですが、フィルタの本領はここから発揮されます。

SciFi Shape Filterを選択し、プロパティを見てみましょう。

幾つかのカテゴリの中に[Vent material]と[Screws and bolts material]というカテゴリがあります。

これを開いてみます。

sp112.jpg

それぞれ[Material]、[Roughness]、[Glossiness]、[Metallic]の4つがあります。

ラフネスとメタリックのシェーダを使っている場合、[Glossiness]は無意味になりますので無視しますが、他のパラメータをとりあえず変更してみましょう。

ベントのマテリアルを[Gold]に、ネジのマテリアルを[Copper]にしてみます。

sp113.jpg

見ての通り、ベント部分が金に、ボルト部分が銅に変更されました。

SciFi Shape MakerはUser0チャンネルにフィルタリング時に必要な情報を書き込むため、フォーマットがRGBでなければいけないのです。

[Weathered edge material]の項目はエッジ部分のダメージ表現で、ダメージを受けて内側が見えるという状態を示します。

設定されるマテリアルは内側の金属マテリアルですね。

[Wear Level]を0にするとエッジダメージは完全に消えます。

エッジダメージの有無を比較するとこんな感じ。

sp114.jpg

上がダメージ無し、下が有りです。

ベースのマテリアルがこのようなペイントされた金属であると効果は絶大ですね。

[Dirt material]カテゴリは埃による汚れを表現することが出来ます。

AOの暗い部分、つまり窪みになっている部分に汚れが溜まりやすくなっています。

sp115.jpg

[Technical parameters]カテゴリのAOイコライザを調整することでベントの奥の部分は汚れているけど網の部分はそうでもない、というような表現も可能です。

sp116.jpg

上の画像と見比べると違いがわかりますね。

このツールで作成できる形状はかなり多いので、ちょっとした装飾に使用するならかなり重宝するツールだと思います。

もしこのMoodpackを手に入れるようなことがあったら、色々試してみてください。

Substance Painter 2.0の新機能紹介

つい先週、Substance Painterのメジャーバージョンアップが行われました。

こちらにAllegorithmic公式の新機能紹介動画がありますので、英語がわかる方はこちらを見ていただくのが早いでしょう。

https://www.youtube.com/watch?v=vVzISplKUzk&list=PLB0wXHrWAmCzkaCwt_dE6YS8ifttRTqNS

英語なので、簡単に日本語にまとめたものをここに記述していきます。

まずはビューポート周りのアップデートから。

これまではF1キーで3D/2Dビューポート、F2キーで3Dビューポートのみ、F3キーで2Dビューポートのみに変更ができました。

SP2.0ではこれに加え、F4キーでIrayレンダリングビューポートへの切り替えが可能になりました。

こちらはペイントは出来ませんが、Undo/Redo機能は使用できます。

IrayレンダリングはDCCツール上でのオフラインレンダリングの品質チェックに使用するのが主な目的となるでしょう。

 sp093.jpg

また、F5/F6キーで透視投影と正射影の切り替えができるようになりました。F5で透視投影、F6で正射影です。

正射影の方がペイントしやすい場面もあるかとは思いますが、品質チェックは透視投影でやるようにしましょう。

下の画像は同じカメラから撮影したもので、左が透視投影、右が正射影です。

sp094.jpg

 

Tabキーを押すと現在のビューポートがウィンドウいっぱいに表示され、ブラシなどのUIが隠されます。

もう一度Tabキーを押せば元に戻せます。

広い画面でペイントをしたい場合に重宝しますね。

次はCloneブラシとSmudgeブラシです。

これはSP2.0で追加された特殊なブラシで、Cloneブラシは特定の場所をクローニングするもので、Smudgeは指で擦ったような影響を与えるブラシです。

この2つのブラシもSubstanceらしい非破壊性を持っているので使い方によっては重宝するはずです。

まずはCloneブラシの紹介と使い方から。

Cloneブラシは[Clone Tool]ボタンを押して有効にします。数字キーの[6]にショートカットが割り当てられていますので、こちらでもOKです。

sp095.jpg

有効にする前に適当なレイヤーに模様を書いておきましょう。

Cloneブラシを有効にしたら[V]キーを押しながら書いた模様の適当な位置を左クリックしてください。

四角い枠が出てくるのですが、これがクローンの元の位置になります。

sp096.jpg

クローン元の位置を設定したらクローン先の位置をブラシで塗り始めます。

すると簡単にクローン出来ます。めでたしめでたし。

sp097.jpg 

まあ、待って。これだとただコピーしただけで非破壊性もあったもんじゃありません。

より良い使い方は別のレイヤーを利用する方法です。

模様が書かれた[レイヤ1]の上に新しい[レイヤ2]を追加します。

この状態では[レイヤ2]には何も描かれていないため、クローニングが出来ません。

そこで、必要なチャンネルをパススルーします。

少々面倒ですが、クローニングするチャンネルのブレンドをすべて[Passthrough]に変更します。

sp098.jpg

この状態で[レイヤ2]に対して先ほどと同じようにCloneブラシを使用しましょう。

結果は変わらないはずですが、データ構造的には変わっています。

[レイヤ2]を削除すればクローンした分は削除されます。当たり前ですが。

面白いのは[レイヤ1]のクローン部分を変更した場合です。クローン元部分になにか描き込んでみましょう。

sp099.jpg

このようにクローン先にも同じ映像が出てきました。

Fillレイヤーを元にしたクローンの場合は色も簡単に変更できますが、これももちろんクローン先の色も変更されます。

逆に、クローン先だけ色を変えたい、とかは出来ないみたいです。この場合は別の方法を用いる必要がありそうですね。

Smudgeブラシは指で擦ったような影響を与える特殊なブラシです。

指のマークのアイコンをクリックするか、数字キー[5]で有効にできます。

sp101.jpg

有効にしたら擦りたいところを擦るだけですが、このブラシもCloneブラシと同様の方法で元画像を変更せずに効果を与えることが出来ます。

すべてのチャンネルを[Passthrough]に設定するのは面倒ですが、効果は絶大なので是非活用しましょう。

もちろん、クローニング先をSmudgeして、クローン元を変更するというのも可能です。

sp100.jpg

Allegorithmicの動画ではテクスチャ境界などでラインが入ってしまっている部分をCloneブラシで綺麗に埋める方法も紹介していますので、是非チェックしてみてください。

次はマスクに関する追加機能です。

SP1.0にもスマートマテリアルという、幾つかのレイヤーを組み合わせたテンプレート的なマテリアルが存在しました。

SP2.0ではこれと似たようなものとしてスマートマスクというものが追加されています。

このマスクは複数レイヤーではなく、複数のエフェクトを施したマスクをテンプレート的に保存しておくことが可能です。

作成したマスクをスマートマスクとして保存したい場合はレイヤーのマスクを右クリックし、[Create smart mask]を選択しましょう。

sp102.jpg

作成されたマスクはShelfに[new_mask]という名前で追加されるので、リネームするなりして保存しておきましょう。

あと、これはSP1.0にもあった機能なのですが、レイヤーのマスクをAltキーを押しながらクリックするとビューポートがマスクモードとなり、マスクのグレースケール表示になります。便利なので活用しましょう。

SP2.0ではSP1.0にあった[MG Mask Builder]というマスクジェネレータとは別に、[MG Mask Editor]というものが追加されています。

こちらはBuilderより簡単な設定でわかりやすくなっているような印象ですが、何がどう違うのかははっきりと言いづらいですね。

設定が簡単、というのも使ってみた感想なので…

入力となるテクスチャはベイクされたテクスチャ(ポジションバッファなど)なのですが、それ以外のテクスチャやプロシージャルテクスチャ、マテリアルなんかも設定できます。

これらの影響度なども設定できますが、Builderもできるんですよね…

まあ、でも、Builderよりいじりやすいのは確かなので、これを使っていい感じのスマートマスクが作成できたらどんどん公開してもいいのよ?

さて、最後になりましたが、Finishフィルタについて簡単に説明しましょう。

Finishフィルタは名前の通りフィルタの一種ですが、現在は主に金属系マテリアルの最終調整用として設定することが出来ます。

金属のヘアライン加工や板金っぽさを後付することが出来ます。

使い方は簡単で、加工したい金属マテリアルを選択、[Add filter]でフィルタを追加し、フィルタとして[Finish ~]を選択するだけです。

例えば、プレートメイル的なハンマーで打たれた加工をする[Finish Hammered]だとこうなります。

sp103.jpg

現状ではFinishフィルタは金属のみ、8種類程度ですが、今後増えていくかもしれません。期待しましょう。

Finishフィルタを使用する場合の注意としてですが、Normalチャンネルは追加しておきましょう。

SP2.0からNormalチャンネルはMetalRoughテンプレートではデフォルトで追加されるようになりましたが、AlphaTestテンプレートでは追加されません。

このチャンネルがないとどうやら正常に設定されないようなので、全く効果ないぞ?と困ることになると思います。

というか、なりましたw

というわけでSP2.0の新機能について紹介しましたが、Irayについてはほとんど端折りました。

一応Irayの設定方法なども紹介したAllegorithmic公式チャンネルに存在するので、気になる人はチェックしてみてください。

全体的にSP1.0~1.7のバージョンアップがすごすぎて、2.0になったのにそんなに大きく変わってる気分はないのですが、それでも追加された各種機能は大変便利です。

SPを活用している方でも、これから勉強する方でもバージョンアップしておいて損はないと思います。

操作一覧

SDのこの機能ってどうやったっけ?と思うことがたまにあるのですが、公式のヘルプはわかりにくいので備忘録的に書いておきます。

画像もあるとわかりやすいよね、ってことで。

基本的なマウス操作はここには含めませんのでご注意ください。

機能操作画像説明
ズームリセットZグラフ、2Dビューでズームをリセットします.
画面にフィットFグラフ、2D/3Dビューで対象を画面にフィットさせます.

グラフでノードが選択されている場合は選択済みのノードとリンクがフィットします.

ノード検索スペースsd118.jpgグラフにて、ノード検索ウィンドウを表示します.
テクスチャタイルのON/OFFスペースsd119.jpg2Dビューで表示しているテクスチャのタイリングをON/OFFします.
通常リンクモードに変更する1sd120.jpg1本1本リンクする通常リンクモードに変更します.
マテリアルリンクモードに変更する2sd121.jpgマテリアル入力を複数リンク可能なマテリアルリンクモードに変更します.
コンパクトマテリアルリンクモードに変更する3sd122.jpgマテリアル入力を1本のリンクにまとめるリンクモードに変更します.
選択の複製Ctrl + Dsd123.jpg選択されているノードを複製します.

Ctrl + C → Ctrl + Vと同じ.

リンクは入力に関してのみ保持されます.

リンクを切って選択の複製Shift + Ctrl + Dsd124.jpgすべてのリンクを切って選択しているノードを複製します.

複数選択時にそれぞれがリンクしていたとしてもリンクを切ります.

削除Deletesd125.jpg選択したノード、リンクを削除します.

ノードが削除されるとそこに繋がったリンクも削除されます.

リンクを繋げて削除Backspacesd126.jpgノードを削除した場合、前後のノードをリンクし直してから削除します.
ドックのON/OFFDsd127.jpg選択ノードを小さく表示するドックモードのON/OFFを行います.

マテリアルノードなどはドックに出来ません.

リルートノードShift + Alt + マウス左sd128.jpgShift + Altでリンクのリルート状態に移行します.

この状態でリルートしたいリンクをD&Dするとリルート出来ます.

角ばったリンクにするsd129.jpgsd130.jpg直線で表現されたリンクに変更します.
配置ノード検索sd131.jpgsd132.jpgグラフエディタに配置されているノードから特定の種類のノード、特定の変数を使っているものを検索します.
コネクタ名表示sd133.jpgsd134.jpgノードのコネクタ名を表示します.

特に理由がなければON推奨.

リンク入れ替えリンクを2本選んでX選択した2本のリンクの接続先を入れ替えます.

リンクは別のノードに接続していても入れ替えを行います.

3本以上選択していると何も起こりません.

リンク繋ぎ変えShift+コネクタ左クリッククリックしたコネクタからリンクを外し、他のノードに接続できる状態にします.

通常リンクモードは1本ずつ、マテリアルリンクモードではマテリアル入力を複数同時に繋ぎ変えられます.

HDRイメージの回転Ctrl+Shift+右ドラッグビューポートのHDRイメージを回転させます.

質感のチェックに便利.

とりあえずこんなもんでしょうか?

他にも、この機能は便利だよ!というものがありましたら教えていただけるとありがたいです。

フローマップの作り方

今回はヘルプにも載っているフローマップの作り方です。

ヘルプは英語だからわからん!という人向け、と思っていただければ。

フローマップは名前のとおり、流れを作るためのテクスチャです。

最初に使われたゲームがどれなのかよくわかりませんが、自分の認識ではValve社の『Portal2』がフローマップを世に広めたゲームですね。

UE4で試した結果はこんな感じです。

昔は川の流れなどを作成する場合、テクスチャのUVスクロールによる処理が一般的でした。

この手法はピクセルシェーダが存在しないハードでも利用することが出来るという利点はあるものの、適切な流れを作成するために適切なポリゴン分割が必要だったりと面倒も多いです。

例えば川の中に岩があり、その岩の先で水が渦を巻くように流れている状態を作成するには、岩によって分割されるようにポリゴンを分け、それを岩の先で合流させ、その手前に渦を巻くような形でポリゴンを生成しなければならないわけです。

流石にそこまでやるとポリゴン数も増えてしまいますし、PS2時代にそこまで凝ったことをやっているゲームは自分は知らないです。

まあ、大抵は川の流れにそって幾つかにポリゴンを分割するだけだったと思います。

フローマップによって流れをピクセル単位で指定できるようになったのは大変良いことなのですが、どのように作成すればいいのかという問題が発生します。

幸い、今の世の中はフローマップを作成することが可能なツールは結構あるらしく、フリーのものもあるのかもしれません。

ですが、今回はSubstance Painterを使ってフローマップを作成する手法を紹介します。

まあ、私がSubstance推しなのでしかたないね!

さて、まず最初にSPで新規プロジェクトを作成します。

今回は普通のキューブにペイントします。

プロジェクト作成後にやるのはフローマップ用のチャンネルを増やすことです。

[TextureSet Settings]ペインでチャンネルを増やしましょう。追加するのは[Normal]チャンネルです。

sp088.jpg

追加すると警告が出ます。

SPではハイトマップから法線を生成するわけですが、それとは別に[Normal]チャンネルを生成するとどちらを考慮すればいいのかわからなくなります。

現在のSPでは[Normal]チャンネルは[Additional maps]で指定されている法線マップ(SP日本語版だと通常マップw)を上書きする形になるようです。

日本語版でも警告文は英語なんですよね…

sp089.jpg

また、選択肢が出てきますが、これは下を選びましょう。

上を選ぶと現在の[Additional maps]の法線マップを下敷きにしてしまいますが、フローマップ作成時は邪魔です。

作成時のボタンは[Just once]を選んでおいたほうがいいかと思います。

今回だけってことですね。常にフローマップしか作成しないのであれば[Always]でもいいですが。

これでフローマップのチャンネルが作成できましたので塗っていくわけですが、塗るのにもルールがあります。

まずは塗るためのテクスチャを作成しなければなりません。

これは別に難しくなくて、16x16サイズのテクスチャを(127, 0, 255)のカラーで埋めましょう。

これを適当にわかりやすいファイル名に保存し、シェルフの[テクスチャ]ペインにD&Dしましょう。

sp090.jpg

これをカラーとして塗っていきます。

ブラシはどれを選んでもいいですが、塗る場合の設定は以下のようになります。

sp091.jpg

大切なのは3ヶ所。

[Follow Path]のチェックをONにしましょう。これは塗っていく方向を考慮するためのオプションです。

フローマップは塗っていく方向に流れを作成するので、塗る際にも注意しましょう。

塗るチャンネルは[Normal]チャンネルのみを選択します。他は切っておいたほうが良いでしょう。

最後に単色カラーの代わりに先ほど読み込んだテクスチャを設定します。

どうせ単色なら単色カラーでもいいのでは?と思う方もおられるでしょうが、何故か単色カラーではフローマップは作成できません。あしからず。

残念ながら塗ってもフローマップとしては動いてくれません。なので確認しづらいのが難点といえます。

キーボードショートカットのCキーを押すことで各チャンネルを表示するように切り替えることが出来ますが、これで[Normal]チャンネルを見ながら塗り残しがないかチェックしていくことになると思います。

また、塗りつぶしレイヤーを作成し、[Normal]チャンネルだけチェックを入れておくことをオススメします。塗っていくのはこの上に置いたレイヤーで行うようにしましょう。

塗りつぶしレイヤーは法線真上の状態で塗りつぶしてくれるので、流れのある部分とない部分がわかりやすくなります。

sp092.jpg

塗るのはペンタブとか使ったほうがいいでしょう。マウスだとつらい。

あとは[Normal]チャンネルを出力します。

出力時の[Configuration]を作成する場合、フローマップは[Input maps]の[Normal]を選択しましょう。

通常の法線マップは[Converted maps]の[Normal OpenGL/DirectX]が対応しています。

以上、Substance Painterでフローマップを作成する方法でした。

髪の流れなんかもこれで作れます。